Introduction To Embbeded Systems
Introduction To Embbeded Systems
CHAPTER 7: PROGRAM.
CHAPTER 1
Two major areas of differences are cost and power consumption. Since
many embedded systems are produced in tens of thousands to millions of units range,
reducing cost is a major concern. Embedded systems often use a (relatively) slow
processor and small memory size to minimize costs.
The slowness is not just clock speed. The whole architecture of the computer is often
intentionally simplified to lower costs. For example, embedded systems often use
peripherals controlled by synchronous serial interfaces, which are ten to hundreds of
times slower than comparable peripherals used in PCs. Programs on an embedded
system often run with real-time constraints with limited hardware resources: often there
is no disk drive, operating system, keyboard or screen. A flash drive may replace
rotating media, and a small keypad and LCD screen may be used instead of a PC's
keyboard and screen.
PLATFORM:
TOOLS:
Like a typical computer programmer, embedded system designers use
compilers, assemblers and debuggers to develop an embedded system. Those
software tools can come from several sources:
OPERATING SYSTEM:
They often have no operating system, or a specialized embedded
operating system (often a real-time operating system), or the programmer is assigned to
port one of these to the new system.
DEBUGGING:
Debugging is usually performed with an in-circuit emulator, or some type
of debugger that can interrupt the micro controller’s internal microcode. The microcode
interrupt lets the debugger operate in hardware in which only the CPU works. The CPU-
based debugger can be used to test and debug the electronics of the computer from the
viewpoint of the CPU.
START-UP:
Typically, there's some sort of subroutine in the loop to manage a list of software
timers, using a periodic real time interrupt. When a timer expires, an associated
subroutine is run, or flag is set. Any expected hardware event should be backed-up with
a software timer. Hardware events fail about once in a trillion times.
Many designers recommend reading each IO device once per loop, and storing
the result so the logic acts on consistent values. Many designers prefer to design their
state machines to check only one or two things per state. Usually this is a hardware
event, and a software timer. Designers recommend that hierarchical state machines
should run the lower-level state machines before the higher, so the higher run with
accurate information.
Complex functions like internal combustion controls are often handled with multi-
dimensional tables. Instead of complex calculations, the code looks up the values. The
software can interpolate between entries, to keep the tables small and cheap.
One major disadvantage of this system is that it does not guarantee a time to
respond to any particular hardware event. Careful coding can easily assure that nothing
disables interrupts for long. Thus interrupt code can run at very precise timings. Another
major weakness of this system is that it can become complex to add new features.
Algorithms that take a long time to run must be carefully broken down so only a little
piece gets done each time through the main loop.This system's strength is its simplicity,
and on small pieces of software the loop is usually so fast that nobody cares that it is
not predictable. Another advantage is that this system guarantees that the software will
run. There is no mysterious operating system to blame for bad behavior.
USER INTERFACES:
Another basic trick is to minimize and simplify the type of output. Designs
should consider using a status light for each interface plug, or failure condition, to tell
what failed. A cheap variation is to have two light bars with a printed matrix of errors that
they select- the user can glue on the labels for the language that she speaks.
For example, Boeing's standard test interface is a button and some lights.
When you press the button, all the lights turn on. When you release the button, the
lights with failures stay on. The labels are in Basic English.
Designers use colors. Red defines the users can get hurt- think of blood.
Yellow defines something might be wrong. Green defines everything's OK.
INTRODUCTION TO MICROCONTROLLER:
Microcontrollers as the name suggests are small controllers. They are like
single chip computers that are often embedded into other systems to function as
processing/controlling unit. For example the remote control you are using probably has
microcontrollers inside that do decoding and other controlling functions. They are also
used in automobiles, washing machines, microwave ovens, toys ... etc, where
automation is needed.
Micro-controllers are useful to the extent that they communicate with other
devices, such as sensors, motors, switches, keypads, displays, memory and even other
micro-controllers. Many interface methods have been developed over the years to solve
the complex problem of balancing circuit design criteria such as features, cost, size,
weight, power consumption, reliability, availability, manufacturability. Many
microcontroller designs typically mix multiple interfacing methods. In a very simplistic
form, a micro-controller system can be viewed as a system that reads from (monitors)
inputs, performs processing and writes to (controls) outputs.
Microprocessor - A single chip that contains the CPU or most of the computer
Microcontroller - A single chip used to control other devices
Microprocessor:
CPU is stand-alone, RAM, ROM, I/O, timer are separate
Designer can decide on the amount of ROM, RAM and I/O ports.
expensive
versatility general-purpose
Microcontroller:
• CPU, RAM, ROM, I/O and timer are all on a single chip
• fix amount of on-chip ROM, RAM, I/O ports
• for applications in which cost, power and space are critical
• single-purpose
2.2 CRITERIA FOR CHOOSING A MICROCONTROLLER:
The basic criteria for choosing a microcontroller suitable for the application
are:
1) The first and foremost criterion is that it must meet the task at hand efficiently and
cost effectively. In analyzing the needs of a microcontroller-based project, it is seen
whether an 8- bit, 16-bit or 32-bit microcontroller can best handle the computing needs
of the task most effectively. Among the other considerations in this category are:
(a) Speed: The highest speed that the microcontroller supports.
(b) Packaging: It may be a 40-pin DIP (dual inline package) or a QFP (quad flat
package), or some other packaging format. This is important in terms of space,
assembling, and prototyping the end product.
(c) Power consumption: This is especially critical for battery-powered
products. (d) The number of I/O pins and the timer on the Chip.
(f) How easy it is to upgrade to higher –performance or lower consumption
versions.
(g) Cost per unit: This is important in terms of the final cost of the product in
which a microcontroller is used.
2) The second criterion in choosing a microcontroller is how easy it is to develop
products around it. Key considerations include the availability of an assembler,
debugger, compiler, technical support.
3) The third criterion in choosing a microcontroller is its ready availability in
needed quantities both now and in the future. Currently of the leading 8-bit
microcontrollers, the 8051 family has the largest number of diversified suppliers. By
supplier is meant a producer besides the originator of the microcontroller. In the case
of the 8051, this has originated by Intel several companies also currently producing
the 8051.Thus the microcontroller AT89S52, satisfying the criterion necessary for the
proposed application is chosen for the task.
2.3 FEATURES:
DESCRIPTION:
VCC –
Supply voltage.
GND –
Ground.
Port 0:
Port 0 is an 8-bit open drain bi-directional I/O port. As an output port, each pin can
sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as
high-impedance inputs. Port 0 can also be configured to be the multiplexed low-order
address/data bus during accesses to external program and data memory. In this
mode, P0 has internal pull-ups. Port 0 also receives the code bytes during Flash
programming and outputs the code bytes during program verification. External pull-
ups are required during program verification.
Port 1:
Port 1 is an 8-bit bi-directional I/O port with internal pull-ups. The Port 1
output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins,
they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port
1 pins that are externally being pulled low will source current (I IL) because of the
internal pull-ups. In addition, P1.0 and P1.1 can be configured to be the timer/counter
2 external count input (P1.0/T2) and the timer/counter 2 trigger input (P1.1/T2EX),
respectively.
PORT PIN ALTERNATE FUNCTIONS:
Port 2:
Port 2 is an 8-bit bi-directional I/O port with internal pull-ups. The Port 2
output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins,
they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port
2 pins that are externally being pulled low will source current (I IL) because of the
internal pull-ups. Port 2 emits the high-order address byte during fetches from external
program memory and during accesses to external data memory that uses 16-bit
addresses (MOVX @ DPTR). In this application, Port 2 uses strong internal pull-ups
when emitting 1s. During accesses to external data memory that uses 8-bit addresses
(MOVX @ RI); Port 2 emits the contents of the P2 Special Function Register. Port 2
also receives the high-order address bits and some control signals during Flash
programming and verification.
Port 3:
Port 3 is an 8-bit bi-directional I/O port with internal pull-ups. The Port 3
output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins,
they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port
3 pins that are externally being pulled low will source current (I IL) because of the pull-
ups. Port 3 also serves the functions of various special features of the AT89C51. Port
3 also receives some control signals for Flash programming and verification.
PORT PIN ALTERNATE FUNCTIONS:
PSEN:
Program Store Enable is the read strobe to external program memory. When
the AT89C52 is executing code from external program memory, PSEN is activated
twice each machine cycle, except that two PSEN activations are skipped during each
access to external data memory.
EA/VPP:
External Access Enable (EA) must be strapped to GND in order to enable the
device to fetch code from external pro-gram memory locations starting at 0000H up to
FFFFH. However, if lock bit 1 is programmed, EA will be internally latched on reset.
EA should be strapped to VCC for internal program executions. This pin also receives
the 12V programming enable voltage (VPP) during Flash programming when 12V
programming is selected.
XTAL1:
Input to the inverting oscillator amplifier and input to the internal clock operating
circuit.
XTAL2:
It is an output from the inverting oscillator amplifier.
BLOCK DIAGRAM OF 89S52
EXTERNAL
INTERRUPTS
TIMER/CO
UNTER
INTERRUPT ON-CHIP ON-
CONTROL ROM FOR CHIP TIMER 1 COUNTER
PROGRAM RAM INPUTS
CODE TIMER 0
CPU
P0 P1 P2 P3 Tx Rx
ARCHITECHTURE OF 8052 MICROCONTROLLER:
OSCILLATOR CHARACTERISTICS:
XTAL1 and XTAL2 are the input and output, respectively, of an inverting
amplifier, which can be configured for use as an on-chip oscillator. Either a quartz
crystal or ceramic resonator may be used. To drive the device from an external clock
source, XTAL2 should be left unconnected while XTAL1 is driven. There are no
requirements on the duty cycle of the external clock signal, since the input to the
internal clocking circuitry is through a divide-by-two flip-flop, but minimum and
maximum voltage high and low time specifications must be observed.
IDLE MODE:
In idle mode, the CPU puts itself to sleep while all the on-chip peripherals
remain active. The mode is invoked by software. The content of the on-chip RAM and
all the special functions registers remain unchanged during this mode. The idle mode
can be terminated by any enabled interrupt or by a hardware reset. It should be noted
that when idle is terminated by a hardware reset, the device normally resumes
program execution, from where it left off, up to two machine cycles before the internal
reset algorithm takes control. On-chip hardware inhibits access to internal RAM in this
event, but access to the port pins is not inhibited. To eliminate the possibility of an
unexpected write to a port pin when Idle is terminated by reset, the instruction
following the one that invokes Idle should not be one that writes to a port pin or to
external memory.
OSCILLATOR CONNECTIONS:
OSCILLATOR CONNECTIONS:
The power supply section consists of step down transformers of 230V primary
to 9V and 12V secondary voltages for the +5V and +12V power supplies respectively.
The stepped down voltage is then rectified by 4 1N4007 diodes. The high value of
capacitor 1000 µF charges at a slow rate as the time constant is low, and once the
capacitor charges there is no resistor for capacitor to discharge. This gives a
constant value of DC. IC 7805 is used for regulated supply of +5 volts and IC 7812 is
used to provide a regulated supply of +12 volts in order to prevent the circuit ahead
from any fluctuations. The filter capacitors connected after this IC filters the high
frequency spikes. These capacitors are connected in parallel with supply and
common so that spikes filter to the common. These give stability to the power supply
circuit.
As can be seen from the above circuit diagrams, the rectified voltage from
the 4 diodes is given to pin 1 of the respective regulators. Pin 2 of the regulators is
connected to ground and pin 3 to Vcc. With adequate heat sinking the regulator
can deliver 1A output current. If internal power dissipation becomes too high for
the heat sinking provided, the
thermal shutdown circuit takes over preventing the IC from overheating.
12v and 5v power supply
Introduction
The +5 volt supply is useful for both analog and digital circuits. DTL, TTL, and CMOS
ICs will all operate nicely from a +5 volt supply. In addition, the +5 volt supply is useful
for circuits that use both analog and digital signals in various ways.
More importantly for our purposes, the +5 volt supply will be used as the primary
reference for regulating all of the other power supplies the we will build. We can do this
very easily if we use operational amplifiers as the controlling elements in the power
supply circuits. We'll see how this works after completing the basic +5 volt supply.
Schematic Diagram
The +5 volt power supply is based on the commercial 7805 voltage regulator IC. This IC
contains all the circuitry needed to accept any input voltage from 8 to 18 volts and
produce a steady +5 volt output, accurate to within 5% (0.25 volt). It also contains
current-limiting circuitry and thermal overload protection, so that the IC won't be
damaged in case of excessive load current; it will reduce its output voltage instead.
The 10µf and .01µf capacitors serve to help keep the power supply output voltage
constant when load conditions change. The electrolytic capacitor smooths out any long-
term or low frequency variations. However, at high frequencies this capacitor is not very
efficient. Therefore, the .01µf is included to bypass high-frequency changes, such as
digital IC switching effects, to ground.
The LED and its series resistor serve as a pilot light to indicate when the power supply
is on. I like to use a miniature LED here, so it will serve that function without being
obtrusive or distracting while I'm performing an experiment. I also use this LED to tell
me when the reservoir capacitor is completely discharged after power is turned off.
Then I know it's safe to remove or install components for the next experiment.
To construct and test the +5 volt power supply on your breadboard, you will need the
following parts (all available from Radio Shack):
You will also need your longnose pliers, diagonal cutter, wire stripper, and voltmeter.
3.2 TRANSFORMER:
A transformer is a device that transfers electrical energy from one circuit to another
through inductively coupled conductors—the transformer's coils. A varying current in the first
or primary winding creates a varying magnetic flux in the transformer's core, and thus a
varying magnetic field through the secondary winding. This varying magnetic field induces a
varying electromotive force (EMF) or "voltage" in the secondary winding. This effect is called
mutual induction
TYPES OF TRANSFORMERS:
1. Step up transformer
2. step down transformer
3.2.1.STEP UP TRANSFORMER:
Increase the voltage (or)primary winding turns less than secondary winding.
3.2.2 STEP DOWN TRANSFORMER:
Reduces the voltage (or).primary winding turns are more than secondary winding.
3.3 FILTER:
DEFINITION:
The circuit which removes the unwanted ac components of the rectifier output
and allows Only dc component to reach the load.
3.3.1 TYPES OF FILTERS:
2.3.1TYPES OF FILTERS:
3.4 REGULATOR:
DEFINITION:
This circuit is a small +5V power supply.The circuit will provide a regulated voltage to
the external circuit which may also I am required in any part of the external circuit or the
whole external circuit.The best part is that you can also use it to convert AC voltage to
DC and then regulate it ,simlpy You need a transformer to make the AC main drop
down to a safe value i.e 12-15 volts and then us a rectifier to convert AC into DC.
This circuit can give +5V output at about 150 mA current, but it can be increased to 1 A
when good cooling is added to 7805 regulator chip. The circuit has over overload and
therminal protection. The capacitors must have enough high voltage rating to safely
handle the input voltage feed to circuit. The circuit is very easy to build for example into
a piece of veroboard.
If you need other voltages than +5V, you can modify the circuit by replacing the 7805
chips with another regulator with different output voltage from regulator 78xx chip family.
The last numbers in the the chip code tells the output voltage. Remember that the input
voltage muts be at least 3V greater than regulator output voltage ot otherwise the
regulator does not work well.
7805
1. Unregulated voltage in
2. Ground
3. Regulated voltage ou
:
Features:
Light emitting diodes are diodes(electronic components that let electricity pass in only
one direction) that emit visible light when electricity is applied, much like a light bulb.
When many LEDs are side-by-side, they can create pictures, such as the scrolling red
LED signs found everywhere.
Led diagram
3.5.1 PULL-UP RESISTORS:
are used in electronic logic circuits to ensure that inputs to logic systems settle at
expected logic levels if external devices are disconnected. Pull-up resistors may also be
used at the interface between two different types of logic devices, possibly operating at
different power supply voltages.
The idea of a pull-up resistor is that it weakly "pulls" the voltage of the wire it's
connected to towards 5V (or whatever voltage represents a logic "high"). However, the
resistor is intentionally weak (high-resistance) enough that, if something else strongly
pulls the wire toward 0V, the wire will go to 0V. An example of something that would
strongly pull a wire to 0V would be the transistor in an open-collector output.
Similarly, pull-down resistors are used to hold the input to a zero (low) value when no
other component is driving the input. They are used less often than pull-up resistors.
Pull-down resistors can safely be used with CMOS logic gates because the inputs are
voltage-controlled. TTL logic inputs that are left un-connected inherently float high, thus
they require a much lower valued pull-down resistor to force the input low. This also
consumes more current. For that reason, pull-up resistors are preferred in TTL circuits.
In bipolar logic families operating at 5 VDC, a typical pull-up resistor value will be 1000–
5000 Ω, based on the requirement to provide the required logic level current over the full
operating range of temperature and supply voltage. For CMOS and MOS logic, much
higher values of resistor can be used, several thousand to a million ohms, since the
required leakage current at a logic input is small.
Pull-up resistors may be used at logic outputs where the logic device cannot source
current, such as open-collector TTL logic devices. Such outputs are used for driving
external devices, for a wire-OR function in combinatorial logic, or for a simple way of
driving a logic bus with multiple devices connected to it. For example, the circuit shown
on the right uses 5 V logic level inputs to actuate a relay. If the input is left unconnected,
pull-down resistor R1 ensures that the input is pulled down to a logic low. The 7407 TTL
device, an open collector buffer, simply outputs whatever it receives as input, but as an
open collector device, the output is left effectively unconnected when outputting a "1".
Pull-up resistor R2 thus pulls the output all the way up to 12 V when the buffer outputs a
"1", providing enough voltage to turn the power MOSFET all the way on and actuate the
relay.
Pull-up resistors may be discrete devices mounted on the same circuit board as the
logic devices. Many microcontrollers intended for embedded control applications have
internal, programmable pull-up resistors for logic inputs so that minimal external
components are needed.
Some disadvantages of pull-up resistors are the extra power consumed when current is
drawn through the resistor, and the reduced speed of a pull-up compared to an active
current source. Certain logic families are susceptible to power supply transients
introduced into logic inputs through pull-up resistors, which may force the use of a
separate filtered power source for the pull-ups.
Pushbutton switches are two-position devices actuated with a button that is pressed and
released. Most pushbutton switches have an internal spring mechanism returning the
button to its "out," or "unpressed," position, for momentary operation. Some pushbutton
switches will latch alternately on or off with every push of the button. Other pushbutton
switches will stay in their "in," or "pressed," position until the button is pulled back out.
This last type of pushbutton switches usually have a mushroom-shaped button for easy
push-pull action.
CHAPTER 4
. The compiler, assembler, linker, and debugger are limited to 2 Kbytes of object
code but source Code may be any size. Programs that generate more than 2
Kbytes of object code will not compile, assemble, or link the startup code
generated includes LJMP's and cannot be used in single-chip devices supporting
Less than 2 Kbytes of program space like the Philips 750/751/752.
. The debugger supports files that are 2 Kbytes and smaller.
. Programs begin at offset 0x0800 and cannot be programmed into single-chip
devices.
. No hardware support is available for multiple DPTR registers.
. No support is available for user libraries or floating-point arithmetic.
PERIPHERAL SIMULATION:
The u vision2 debugger provides complete simulation for the CPU and on chip
peripherals of most embedded devices. To discover which peripherals of a device are
supported, in u vision2. Select the Simulated Peripherals item from the Help menu. You
may also use the web-based device database. We are constantly adding new devices
and simulation support for on-chip peripherals so be sure to check Device Database
often.
CHAPTER 5
STEPPER MOTOR
CHAPTER 6
ULN2803 IC:
The ULN2803 Integrated Circuit (IC) is a "Eight-way Line Driver". The IC takes small
current at its 8 input pins (pins 1 to 8) and allows much larger current (up to one amp) to
flow via its output lines.
In this application of the ULN2803 IC, small currents available at the Printer Port are
used to control devices that could not be connected directly to the Port, such as motors
and relays.
The simplest application of the ULN2803 is represented below. Eight lines from the
Printer Port connect to the eight input lines of the ULN2803. The "ground" lines of the
Printer Port (pins 18 - 25) connect to pin 9 of the ULN2803. The "negative" terminal of
the battery also connects to Pin 9 of the ULN2803. Each output line connects via a Load
Resistor to a Light Emitting Diode (LED). The "anodes" of all the LEDs connect to the
"positive" of the battery. In this example, the battery supply is nine volts.
The load resistors limit the current flowing through the LEDs. If a 12 volt supply is used,
the load resistors should be changed to 560 ohms.
The Zener diode is included to protect the ULN2803 against possible damage due to
"back emf" voltage spikes that may be produced when relays and motors are used.
Generally a 30 volt, 1 watt Zener diode will suffice. The Zener diode connects between
Pin 10 and the positive rail.
Input:
Input at the Printer Port is via a 74LS244 Integrated Circuit called an "Octal tri-state
Buffer/Line Driver". This IC protects the port and ensures the input is 'clean'. Only four
lines of the IC are used in this circuit.
The four input lines are tied "HIGH" by 100k ohm resistors connected to the 5 volt rail.
Each line has a switch connected to the negative rail. When a switched is pressed, the
line is taken "LOW". A standard mini-pushbutton switch may be used.
org 0000h
mov p1,#0ffh
mov p0,#0000h
mov a,#011h
mov r0,#0001h
main:jnb p1.0,right
jnb p1.1,left
sjmp main
right: nop
acall delay1
right_round:rr a
acall delay
mov p2,a
acall led
right_back:jnb p1.2,increment_right
jnb p1.3,decrement_right
jnb p1.1,left
sjmp right_round
left: nop
acall delay1
left_round:rl a
acall delay
mov p2,a
acall led
left_back:jnb p1.2,increment_left
jnb p1.3,decrement_left
jnb p1.0,right
sjmp left_round
increment_right:inc r0
cjne r0,#08,increment1
mov r0,#0001h
sjmp right_back
increment1: sjmp right_back
decrement_right: dec r0
cjne r0,#01,decrement1
mov r0,#0008h
sjmp right_back
decrement1:sjmp right_back
increment_left:inc r0
cjne r0,#08,increment2
mov r0,#0001h
sjmp left_back
increment2: sjmp left_back
decrement_left: dec r0
cjne r0,#01,decrement2
mov r0,#0008h
sjmp left_back
decrement2:sjmp left_back
delay:mov r0,00h
wait2:mov r6,#1
wait1:mov r5,#1
waithere1:djnz r5,waithere1
djnz r6,wait1
djnz r0,wait2
ret
led:cjne r0,#01,led2
setb p0.0
led2:cjne r0,#02,led3
setb p0.1
led3:cjne r0,#03,led4
setb p0.2
led4:cjne r0,#04,led5
setb p0.3
led5:cjne r0,#05,led6
setb p0.4
led6:cjne r0,#06,led7
setb p0.5
led7:cjne r0,#07,led8
setb p0.6
led8:cjne r0,#08,led
setb p0.7
mov p0,#0000h
ret
delay1:
mov r7,#1
wait4:
mov r1,#1
wait5:
mov r2,#1
waithere3:
djnz r2,waithere3
djnz r1,wait5
djnz r7,wait4
ret
end