LEARN HARDWARE FIRMWARE AND SOFTWARE DESIGN - BRIEF DESCRIPTION
Edition 5 of LHFSD [ISBN 978 606 92185
32] has been specifically designed to become an educational/pedagogical
manual for teachers, instructors, and also for ordinary citizens. Have no fear,
dear readers: LHFSD5 is still addressed to beginners, since EVERYTHING starts
from a white page, and then things are developed/explained only gradually [and
logically], step by step. Note that our Source-Code Package ED5RV07EN_15,
and all the software tools needed (the compilers),
work on Windows 95, 98, 2000, ME, XP, VISTA, 7, 8.1.
Our book continues to deliver exactly as the title says: the
readers will learn hardware design, plus firmware and software development!
In addition to being a practical project explained in sharp/complete details, each chapter in LSEG5 contains simple
practical exercises/applications to wade the readers gently over the difficult HFS design work. On this Internet page there is a summary presentation of the main parts in LHFSD 5th
PART 1: HARDWARE DESIGN
During 2005-2009 Corollary Theorems has sold a
good number of LHFSD-HCK kits throughout the World. If one owner of a LHFSD-HCK kit intends to sell it, then write to us
please, and we are going to
post your offer in this site.
Additionally, any reader who builds the LHFSD-HCK kit (on a prototyping
breadboard, or as a PCB) and wants to sell it could write to us,
and we are also going to advertise his/her offer.
Hardware Design starts from an empty Schematic page, then it builds
up gradually the LHFSD-HCK [Hardware Companion Kit]. The novelty in
edition is that it advises the readers to build (alternatively) the LHFSD-HCK kit on a
breadboard, instead of a PCB. Things are this way.
Some readers may decide to become perfectly groomed hardware designers;
therefore they should build the LHFSD-HCK PCB as it is
explained in minute details in our book. However, other readers may prefer
to train mostly as firmware and/or software developers. For them, it is
advisable to build LHFSD-HCK on a breadboard instead [or on any material that stands to solder
LHFSD-HCK has a fair degree of moderate hardware complexity, in order to
help beginners most. Consequently, the hardware design work is divided
into "modules", and each hardware-module is explained in sharp details,
functionally. Fact is, the Hardware Design part is the easiest one to
implements the following hardware modules:
1. a power supply module having two power
levels: unregulated +9V, and regulated +5V DC;
2. an oscillator circuit using a ceramic resonator (the crystal
oscillator version is also presented);
3. the ICD2 programming interface using a standard RJ45/6-6 female
4. the RS232 serial communications module working over USB is presented in 2 versions:
using the standard MAX232N IC; plus via a custom RS232 hardware driver
built out of discrete components;
5. a few discrete I/O modules for buttons, leds, buzzer, etc.;
6. a few
serialized I/O modules working over a custom SPI Bus--this
is extremely important!
7. a programmable digital potentiometer working as an 8 bits Digital to
Analog Converter controlled via the SPI Bus;
8. a Bargraph module using eight comparator Operational Amplifiers, and
controlling an array of nine leds;
9. one Seven Segments three numbers led display using multiplexing,
Shift-Registers, and the SPI Bus;
10. visual and audio indicators needed for testing and debugging;
temperature sensor analog channel;
12. one linear potentiometer analog channel;
13. an universal
unipolar/bipolar stepper driver module for steppers of
9-12V, and 20-200mA;
14. interface connectors for extended functionality;
SPI Bus employing standard logic ICs--this is one of the most
important lessons in hardware and firmware programming;
16. the microcontroller
Again, it is important that LHFSD-HCK is not very complex, in order to
help beginners most. On the other hand, note that complexity should better be implemented inside the inexpensive firmware/software, rather than
in the expensive hardware.
All Schematics needed to build the
are included into the accompanying Source-Code Package ED5RV07EN_15.
Even more, the chapter dedicated to building LHFSD-HCK PCB
includes the complete list of the Bill of Materials!
PART 2: FIRMWARE
Changes are radical in Firmware Design, in edition 5, compared to all
previous editions. First of all, the structure of one firmware project was
1. source-code file plus other supporting "*.c" files
2. source-code file plus "*.h" supporting files.
In addition, the readers may decide to setup their firmware workbench based
A. XC16® (of GNU free) type
compiler and MPLAB® X Vx.x
B. C30® and MPLAB® V8.x (a free download version).
Naturally, the options above appear to be rather difficult to select;
however, inside LHFSD5 there are sufficient details about either choice.
In addition, the users may even switch from one option to another
at code-time, since the source-code files contain a "compiler version check"
algorithm (as is presented in the picture above).
You can see the structure of supporting files of one firmware project in the picture on left. Note
that each line of firmware code is accompanied by adequate comments!
The 12 complete firmware projects presented in LHFSD5 are priceless firmware source-code examples
unparalleled in the entire World--we guarantee this. Even more, LHFSD5 is
written so nicely that, by
the end of Firmware Design part, you are going to love firmware
development in C!
As a note, Firmware Design starts from exactly one empty page, and it
builds up gradually using the simplest firmware techniques. Again, EVERYTHING is explained in sharp details unparalleled by
any other book in the entire World. Firmware Design part, at
least, is a must have, and a must know! The reader is gently introduced
1. structuring firmware
2. real time multitasking;
3. programming with interrupts;
4. building a custom SPI Bus firmware driver;
6. programming discrete and serialized I/Os;
7. programming Analog to Decimal Conversion channels;
8. building an
RS232 serial communications firmware driver (working over USB);
9. driving stepper motors;
10. real-time firmware
field data control;
11. lots more . . .
PART 3: SOFTWARE DESIGN
Edition 5 of LHFSD and the Source-Code ED5RV07EN_15 have been
specifically compiled and tested on Windows 7/32 bits, and on Windows
8.1/64 bits. However, in order to remain
flexible, the software development environment is recommended to be
implemented, by default, on a Windows 7 34/64 bits platform.
in edition 5 of LHFSD is implemented on Visual Basic 6 compiler working on
Windows 7/8.1. However, this software development environment is presented only as "a similarity". The readers may use
manner any other compiler (say Visual Basic .Net 2012, Java, Delphi)
and any other OS platform (Windows, Linux, Mac).
In order to prove the "similar"
manner of software development
recommended method in LHFSD5, we have inserted for exemplification two *.exe
programs that implement the same thing:
1. first is
a console program written in ANSI C;
2. second is
written in Visual Basic 6.
Each program is capable of generating the OBDII CRC hex byte from a
variable series of hex bytes, according to the OBDII protocol: X8 + X4
+ X3 + X2 + 1 == b 0001 1101 == 0x1D.
Alternatively, both programs
are able to validate a series of hex bytes that end in the proper CRC byte;
the result is always 0xC4 == b 1100 0100 == X7 + X6 + X2.
download each program above, then play with them to understand the
great concept of "similarity" we strive to explain here. Note that
"the engine" behind each program is in data control at bit level, and
it works exactly the same, although both compilers are so different.
In Software Design are presented 7 software programs (SDx), fairly
complex, though each line of code is again explained in sharp details.
Note that the software programs are developed in parallel with the
firmware ones, since they need to work together.
Since Software Design is the most complex part in LHFSD book, it will be
detailed on another site-page. For now, take a look at the main software
design-tasks that are implemented in all SDx programs:
1. two way serial communications, using
RS232 protocol working over USB;
2. a MDI [Multiple Documents Interface] needed to harbor all
graphic controls--out of which MSFlexGrid control is the most
exciting one to work with;
3. real-time field data display/control in software;
4. file management in software and in firmware;
5. analog graphic display of field signals, "GraphTrace"--this
is similar to an oscilloscope application;
6. a perfectly functional embedded Internet Browser;
7. many more . . .
Software Design is ended in the LHFSD.exe program (well, in a commercial,
deployable, Setup_LHFSD.exe program). A lite version may be
downloaded, in order to test before you buy. In addition, on our
download page we describe in details the functionality of our
In ED5RV07EN_15 Source Code Package,
each FDx firmware program has been compiled to a FDx.hex
file: this allows the users to run FDx projects without a C30/XC16
In addition, each SDx software applications has been
compiled into an executable program--say, SD5.exe. In this way, the readers
may run each SDx application without a Visual Basic 6 compiler!
For beginners, the HFS design aspects highlighted on this page may sound (more or less) gibberish. However, you do not need to
worry, dear readers. As promised, EVERYTHING is explained in minute complete details in LHFSD5, so that anybody can
work--fairly easy--with all the programs/applications implemented.
Learn Hardware Firmware and Software Design the easy way!