embedded systems training

Lets Learn fundamentals !!
 A microcontroller (sometimes abbreviated µC or
MCU) is a small computer on a single IC
containing a processor core, memory, and
programmable input/output peripherals
 It is a decision making device used widely in
embedded systems and all intelligent devices
 Microcontroller has I/O ports, Memory, timers etc all integrated
on chip itself
 In Microprocessors, I/O ports, memory, timer etc are to be
connected externally
 8-bit means it can process 8-bit data per clock cycle
 It has 8-bit data bus
 It can process 1byte(i.e. 8 bit) of data at a time
 It was developed by Atmel Corporation
 AVR implies it belongs to AVR family.
 ‘8’ in Atmega8 means this microcontroller has 8Kb of
flash memory
 AVR is a modified Harvard architecture, 8-bit
RISC single chip microcontroller
 It was developed in the year 1996 by Atmel
Corporation
 They are fast
 AVR Microcontroller executes most of the
instructions in single execution cycle
 They consume less power and can be operated in
different power saving modes
 RISC stands for “Reduced Instruction Set
Computer”
 It is a very fast architecture which executes one
instruction per clock cycle
 RISC contains very small instruction set
 Programming is easy, but code length increases
 Harvard architecture has separate data and instruction
buses
 This allows transfers to be performed simultaneously on
both buses
 A Von Neumann architecture has only one bus which is used
for both data transfers and instruction fetch
 Data transfers and instruction fetches must be scheduled as
they cannot be performed at the same time
 ATmega8 is a low-power CMOS 8-bit microcontroller
based on the AVR RISC architecture
 By executing powerful instructions in a single clock
cycle, the ATmega8 achieves throughput approaching 1
MIPS per MHz
 In order to maximize performance and parallelism, the
AVR uses a Harvard architecture
 High-performance, Low-power AVR 8-bit microcontroller
 Up to 16 MIPS Throughput at 16 MHz
 32 x 8 General Purpose Working Registers
 Internal Calibrated RC Oscillator
 External and Internal Interrupt Sources
 Data retention: 20 years at 85°C/100 years at 25°C
 8K Bytes of In-System Self-programmable Flash
program memory
 512 Bytes EEPROM (Electrically Erasable
Programmable Read Only Memory)
 1K Byte Internal SRAM (Static Random Access Memory)
 Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode
 One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and
Capture Mode
 Real Time Counter with Separate Oscillator
 Three PWM Channels
 8-channel ADC in TQFP package
Continued…
 6-channel ADC in PDIP package
 Byte-oriented Two-wire Serial Interface
 Programmable Serial USART
 Master/Slave SPI Serial Interface
 Programmable Watchdog Timer with Separate On-chip Oscillator
 On-chip Analog Comparator
 28-lead PDIP (Plastic Dual In-line Package)
 32-lead TQFP (Thin Quad film Package)
 VCC: Digital supply voltage 5V.
 GND: Ground.
 RESET: A low level on this pin for longer than the
minimum pulse length will generate a reset, even if the
clock is not running.
 AREF: The analog reference pin for the A/D Converter.
Continued….
 AVCC : The supply voltage pin for the A/D Converter, Port C
(3..0).It should be externally connected to VCC, even if the
ADC is not used. If the ADC is used, it should be connected to
VCC through a low-pass filter.





There are 3 ports in ATmega8: Port B, Port C, Port D
Three registers are associated with every port
DDRx – Data Direction Register
PINx – Port input
PORTx- Port output
 Where x would be either B,C or D.
 It is a 8-bit bi-directional I/O port
 It has internal pull up resistors(selected for each bit)
 It can be used either as a input port or as output port (
direction must be specified in programming)
 It is a 7-bit bi-directional I/O port
 It has internal pull up resistors(selected for each
bit)
 It can be used either as a input port or as output
port ( direction must be specified in
programming)
 It is a 8-bit bi-directional I/O port
 It has internal pull up resistors(selected for each bit)
 It can be used either as a input port or as output port
( direction must be specified in programming)
 To communicate with the ports of Atmega8, we use
three registers:
 PINx
 PORTx
 DDRx
 Where x would be either B,C or D.
 It stands for Data Direction Register
 It is used to define Port as Input or Output
 In order to make Port as Input Port: DDRx=0x00 (In
Hexadecimal)
DDRx = 0b00000000(In Binary)
 In order to make Port as output Port: DDRx=0xFF (In
Hexadecimal)
DDRx = 0b11111111(In Binary)
 If DDRx =0xFF(Output port)
 Writing logic 1 to PORTx will make output high i.e. 5v for that
particular pin
 Writing 0 to PORTx will make output low i.e. 0v for that
particular pin
Continued….
 If DDRx=Ox00(Input port):
 If corresponding PORTx bit is set to 1, Internal pull up
resistors are enabled i.e if we do not connect this pin to
anything it still reads as 1
 If corresponding PORTx bit is set to 0, internal pull up
resistors are disabled i.e the pin will enter a high
impedance state and will become unpredictable
 It reads data from the port pins
 If any/all bits of DDRx is set to 0(input)for a particular
pin, we can read data from PINx
 If any/all bits of DDRx is set to 1(output), then reading
PINx register gives the same data which has been
output on that particular pin
THANK YOU!!!