chw 469 : embedded systems science/5869/crs...avr microcontroller and embedded system using assembly...
TRANSCRIPT
![Page 1: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/1.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
CHW 469 : Embedded Systems
Instructor:Dr. Ahmed Shalaby
http://bu.edu.eg/staff/ahmedshalaby14#
![Page 2: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/2.jpg)
The AVR microcontroller
and embedded
systems
using assembly and c
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
InterruptChapter 10
![Page 3: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/3.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Contents
Polling Vs. interrupt
Interrupt unit
Steps in executing an interrupt
Edge trigger Vs. Level trigger in external interrupts
Timer interrupt
Interrupt priority
Interrupt inside an interrupt
Task switching and resource conflict
C programming
![Page 4: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/4.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Polling Vs. Interrupt
Polling
Ties down the CPU
while (true)
if(PIND.2 == 0)
//do something;
Interrupt
Efficient CPU use
Has priority
Can be masked
main( )
Do your common task
whenever PIND.2 is 0 then
do something
![Page 5: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/5.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt unit
PROGRAM
ROM
PortsOSC
CPU
Timers
Other
Peripherals
Program
Bus Bus
RAM
I/O
PINS
EEPROM
Interrupt
Unit
SREG
GICR
TIMSK
![Page 6: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/6.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt unit
PROGRAM
ROM
PortsOSC
CPU
Timers
Other
Peripherals
Program
Bus Bus
RAM
I/O
PINS
EEPROM
Interrupt
Unit
SREG
GICR
TIMSK
CNVH ZSTSREG I
![Page 7: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/7.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt unit
PROGRAM
ROM
PortsOSC
CPU
Timers
Other
Peripherals
Program
Bus Bus
RAM
I/O
PINS
EEPROM
Interrupt
Unit
SREG
GICR
TIMSK
IVCE--INT2 IVSEL-INT0GICR INT1
TOIE0TOIE1OCIE1BTICIE1 OCIE0OCIE1ATOIE2TIMSK OCIE2
![Page 8: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/8.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt unit
PROGRAM
ROM
PortsOSC
CPU
Timers
Other
Peripherals
Program
Bus Bus
RAM
I/O
PINS
EEPROM
Interrupt
Unit
SREG
GICR
TIMSK
IVCE--INT2 IVSEL-INT0GICR INT1
TOIE0TOIE1OCIE1BTICIE1 OCIE0OCIE1ATOIE2TIMSK OCIE2
TOV0TOV1OCF1BICF1 OCF0OCF1ATOV2TIFR OCF2
![Page 9: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/9.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt unit
PROGRAM
ROM
PortsOSC
CPU
Timers
Other
Peripherals
Program
Bus Bus
RAM
I/O
PINS
EEPROM
Interrupt
Unit
SREG
GICR
TIMSK
IVCE--INT2 IVSEL-INT0GICR INT1
TOIE0TOIE1OCIE1BTICIE1 OCIE0OCIE1ATOIE2TIMSK OCIE2
40 PIN DIP
10
11
1
2
3
4
5
6
7
8
9
12
13
14
15
16
17
18
19
20
(XCK/T0) PB0
(T1) PB1
(INT2/AIN0) PB2
(OC0/AIN1) PB3
(SS) PB4
(MOSI) PB5
(MISO) PB6
(SCK) PB7
RESET
VCC
XTAL2
GND
XTAL1
(RXD) PD0
(TXD) PD1
(INT0) PD2
(INT1) PD3
(OC1B) PD4
(OC1A) PD5
(ICP) PD6
MEGA32
31
30
40
39
38
37
36
35
34
33
32
29
28
27
26
25
24
23
22
21
PA0 (ADC0)
PA1 (ADC1)
PA2 (ADC2)
PA3 (ADC3)
PA4 (ADC4)
PA5 (ADC5)
PA6 (ADC6)
PA7 (ADC7)
AREF
AGND
PC7 (TOSC2)
AVCC
PC6 (TOSC1)
PC5 (TDI)
PC4 (TDO)
PC3 (TMS)
PC2 (TCK)
PC1 (SDA)
PC0 (SCL)
PD7 (OC2)
![Page 10: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/10.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt unit
PROGRAM
ROM
PortsOSC
CPU
Timers
Other
Peripherals
Program
Bus Bus
RAM
I/O
PINS
EEPROM
Interrupt
Unit
SREG
GICR
TIMSK
![Page 11: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/11.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
PA6 (ADC6)
AVCC
XTAL1
(OC1A) PD5
(SCK) PB7
(OC1B) PD4
RESET
VCC
GND
(TXD) PD1
(INT1) PD3
AGND
VCC
PA0 (ADC0)
PC7 (TOSC2)
PA1 (ADC1)
PA2 (ADC2)
PA3 (ADC3)
PA4 (ADC4)
PA5 (ADC5)
PA7 (ADC7)
PC4 (TDO)
PC3 (TMS)
PC6 (TOSC1)
PC5 (TDI)
PC0 (SCL)
PD7 (OC2)
PC2 (TCK)
PC1 (SDA)
ATmega32
PB0
PB1
(ICP) PD6
(INT2) PB2
(OC0/AIN0) PB3
(SS) PB4
(MOSI) PB5
(MISO) PB6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
Steps in executing an interrupt
0000 0002 0002 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F 0010
0012 0013 0014 0015 0016
Address Code
PC:
(RXD) PD0
XTAL2
Stack
.INCLUDE "M32DEF.INC"
.ORG 0 ;location for resetJMP MAIN
.ORG 0x02 ;location for external INT0JMP EX0_ISR
MAIN: LDI R20,HIGH(RAMEND)OUT SPH,R20LDI R20,LOW(RAMEND)OUT SPL,R20SBI DDRC,3 ;PC.3 = outputSBI PORTD,2 ;pull-up activatedLDI R20,1<<INT0 ;Enable INT0OUT GICR,R20SEI ;Set I (Enable Interrupts)LDI R30, 3LDI R31, 4ADD R30, R31
HERE:JMP HERE
EX0_ISR:IN R21,PORTCLDI R22,0x08EOR R21,R22OUT PORTC,R21RETI
0000
![Page 12: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/12.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Edge trigger Vs. Level trigger in external interrupts
SM1 SM0SM2MCUCR SE ISC00ISC01ISC10ISC11
![Page 13: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/13.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Edge trigger Vs. Level trigger in external interrupts
SM1 SM0SM2MCUCR SE ISC00ISC01ISC10ISC11
LDI R20,0x02 ;falling OUT MCUCR,R20
![Page 14: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/14.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Edge trigger Vs. Level trigger (Cont.)
- JTRFMCUCSR JTD PORFEXTRFBORFWDRFISC2
![Page 15: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/15.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Using Timer0 overflow interrupt
This program uses Timer0 to generate a square wave on pin PORTB.5, while at the same time data is being transferred from PORTC to PORTD.
;Program 10-1.INCLUDE "M32DEF.INC".ORG 0x0 ;location for reset
JMP MAIN.ORG 0x16 ;loc. for Timer0 over.
JMP T0_OV_ISR;----main program for initialization.ORG 0x100MAIN: LDI R20,HIGH(RAMEND)
OUT SPH,R20LDI R20,LOW(RAMEND)OUT SPL,R20SBI DDRB,5 ;outputLDI R20,0OUT DDRC, R20LDI R20,0xFFOUT DDRD, R20
LDI R20,(1<<TOIE0)OUT TIMSK,R20SEILDI R20,-32 ;value for 4µs OUT TCNT0,R20LDI R20,0x01OUT TCCR0,R20
HERE: IN R20,PINCOUT PORTD,R20 JMP HERE
;--------ISR for Timer 0T0_OV_ISR:
IN R16,PORTBLDI R17,0x20EOR R16,R17OUT PORTB,R16RETI
123456789
1011121314151617
1819202122232425262728293031323334
+5
PORTCPORTD88
PORTB.5
ATmega32
![Page 16: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/16.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Using Timer0 overflow interrupt
This program uses Timer0 to generate a square wave on pin PORTB.5, while at the same time data is being transferred from PORTC to PORTD.
;Program 10-1.INCLUDE "M32DEF.INC".ORG 0x0 ;location for reset
JMP MAIN.ORG 0x16 ;loc. for Timer0 over.
JMP T0_OV_ISR;----main program for initialization.ORG 0x100MAIN: LDI R20,HIGH(RAMEND)
OUT SPH,R20LDI R20,LOW(RAMEND)OUT SPL,R20SBI DDRB,5 ;outputLDI R20,0OUT DDRC, R20LDI R20,0xFFOUT DDRD, R20
LDI R20,(1<<TOIE0)OUT TIMSK,R20SEILDI R20,-32 ;value for 4µs OUT TCNT0,R20LDI R20,0x01OUT TCCR0,R20
HERE: IN R20,PINCOUT PORTD,R20 JMP HERE
;--------ISR for Timer 0T0_OV_ISR:
IN R16,PORTBLDI R17,0x20EOR R16,R17OUT PORTB,R16RETI
123456789
1011121314151617
1819202122232425262728293031323334
+5
PORTCPORTD88
PORTB.5
ATmega32
Timer int.init.
Timer init.
![Page 17: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/17.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Timer0 compare match interrupt
using Timer0 and CTC mode generate a square wave on pin PORTB.5, while at the same time data is being transferred from PORTC to PORTD.
.INCLUDE "M32DEF.INC"
.ORG 0x0 ;location for reset
JMP MAIN
.ORG 0x14 ;location for Timer0 compare match
JMP T0_CM_ISR
;-main program for initialization and keeping CPU busy
.ORG 0x100
MAIN: LDI R20,HIGH(RAMEND)
OUT SPH,R20
LDI R20,LOW(RAMEND)
OUT SPL,R20
LDI R20,39
OUT OCR0,R20 ;OCR0 = 39
LDI R20,0x09
OUT TCCR0,R20 ;Start Timer0
SBI DDRB,5 ;PB5 as an output
LDI R20,(1<<OCIE0) ;Timer0 compare match
OUT TIMSK,R20
SEI ;Set I
LDI R20,0x00
OUT DDRC,R20 ;make PORTC input
LDI R20,0xFF
OUT DDRD,R20 ;make PORTD output
HERE: IN R20,PINC
OUT PORTD,R20
JMP HERE
;--------ISR for Timer 0
T0_CM_ISR:
IN R16,PORTB
LDI R17,0x20
EOR R16,R17
OUT PORTB,R16
RETI
Time (µS)
Timer init.
Timer int.init.
![Page 18: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/18.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt priority
Highest
priority
Lowest
priority
![Page 19: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/19.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Interrupt inside an interrupt
The I flag is cleared when the AVR begins to execute an ISR. So, interrupts are disabled.
The I flag is set when RETI is executed.
![Page 20: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/20.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Task switching and resource conflict
Does the following program work?
.INCLUDE "M32DEF.INC"
.ORG 0x0 ;location for reset JMP MAIN
.ORG 0x14 ;Timer0 compare matchJMP T0_CM_ISR
;---------main program------------------------------.ORG 0x100MAIN: LDI R20,HIGH(RAMEND)
OUT SPH,R20LDI R20,LOW(RAMEND)OUT SPL,R20 ;set up stackSBI DDRB,5 ;PB5 =
outputLDI R20,160OUT OCR0,R20LDI R20,0x09OUT TCCR0,R20
LDI R20,(1<<OCIE0)OUT TIMSK,R20SEILDI R20,0xFFOUT DDRC,R20OUT DDRD,R20LDI R20, 0
HERE: OUT PORTC,R20INC R20JMP HERE
;--------------------------ISR for Timer0T0_CM_ISR:
IN R20,PINDINC R20OUT PORTD,R20RETI
123456789
10111213141516
17181920212223242526272829303132
![Page 21: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/21.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Task switching and resource conflict
Does the following program work?
.INCLUDE "M32DEF.INC"
.ORG 0x0 ;location for reset JMP MAIN
.ORG 0x14 ;Timer0 compare matchJMP T0_CM_ISR
;---------main program------------------------------.ORG 0x100MAIN: LDI R20,HIGH(RAMEND)
OUT SPH,R20LDI R20,LOW(RAMEND)OUT SPL,R20 ;set up stackSBI DDRB,5 ;PB5 =
outputLDI R20,160OUT OCR0,R20LDI R20,0x09OUT TCCR0,R20
LDI R20,(1<<OCIE0)OUT TIMSK,R20SEILDI R20,0xFFOUT DDRC,R20OUT DDRD,R20LDI R20, 0
HERE: OUT PORTC,R20INC R20JMP HERE
;--------------------------ISR for Timer0T0_CM_ISR:
IN R20,PINDINC R20OUT PORTD,R20RETI
123456789
10111213141516
17181920212223242526272829303132
![Page 22: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/22.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Solution 1: different registers
Use different registers for different tasks.
.INCLUDE "M32DEF.INC"
.ORG 0x0 ;location for reset JMP MAIN
.ORG 0x14 ;Timer0 compare matchJMP T0_CM_ISR
;---------main program------------------------------.ORG 0x100MAIN: LDI R20,HIGH(RAMEND)
OUT SPH,R20LDI R20,LOW(RAMEND)OUT SPL,R20 ;set up stackSBI DDRB,5 ;PB5 =
outputLDI R20,160OUT OCR0,R20LDI R20,0x09OUT TCCR0,R20
LDI R20,(1<<OCIE0)OUT TIMSK,R20SEILDI R20,0xFFOUT DDRC,R20OUT DDRD,R20LDI R20, 0
HERE: OUT PORTC,R20INC R20JMP HERE
;--------------------------ISR for Timer0T0_CM_ISR:
IN R21,PINDINC R21OUT PORTD,R21RETI
123456789
10111213141516
17181920212223242526272829303132
![Page 23: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/23.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Solution 2: Context saving
Save the contents of registers on the stack before execution of each task, and reload the registers at the end of the task.
.INCLUDE "M32DEF.INC"
.ORG 0x0 ;location for reset JMP MAIN
.ORG 0x14 ;Timer0 compare matchJMP T0_CM_ISR
;---------main program------------------------------.ORG 0x100MAIN: LDI R20,HIGH(RAMEND)
OUT SPH,R20LDI R20,LOW(RAMEND)OUT SPL,R20 ;set up stackSBI DDRB,5 ;PB5 =
outputLDI R20,160OUT OCR0,R20LDI R20,0x09OUT TCCR0,R20LDI R20,(1<<OCIE0)
OUT TIMSK,R20SEILDI R20,0xFFOUT DDRC,R20OUT DDRD,R20LDI R20, 0
HERE: OUT PORTC,R20INC R20JMP HERE
;--------------------------ISR for Timer0T0_CM_ISR:
PUSH R20 ;save R20IN R20,PINDINC R20OUT PORTD,R20POP R20 ;restore R20RETI
123456789
1011121314151617
1819202122232425262728293031323334
![Page 24: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/24.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Saving SREG
We should save SREG, when we change flags in the ISR.
PUSH R20IN R20,SREGPUSH R20...POP R20OUT SREG,R20POP R20
![Page 25: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/25.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming
Using Timer0 generate a square wave on pin PORTB.5, while at the same time transferring data from PORTC to PORTD.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //DDRB.5 = output
TCNT0 = -32; //timer value for 4 µs
TCCR0 = 0x01; //Normal mode, int clk, no prescaler
TIMSK = (1<<TOIE0); //enable Timer0 overflow interrupt
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_OVF_vect) //ISR for Timer0 overflow
TCNT0 = -32;
PORTB ^= 0x20; //toggle PORTB.5
![Page 26: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/26.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming
Using Timer0 generate a square wave on pin PORTB.5, while at the same time transferring data from PORTC to PORTD.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //DDRB.5 = output
TCNT0 = -32; //timer value for 4 µs
TCCR0 = 0x01; //Normal mode, int clk, no prescaler
TIMSK = (1<<TOIE0); //enable Timer0 overflow interrupt
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_OVF_vect) //ISR for Timer0 overflow
TCNT0 = -32;
PORTB ^= 0x20; //toggle PORTB.5
![Page 27: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/27.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming
Using Timer0 generate a square wave on pin PORTB.5, while at the same time transferring data from PORTC to PORTD.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //DDRB.5 = output
TCNT0 = -32; //timer value for 4 µs
TCCR0 = 0x01; //Normal mode, int clk, no prescaler
TIMSK = (1<<TOIE0); //enable Timer0 overflow interrupt
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_OVF_vect) //ISR for Timer0 overflow
TCNT0 = -32;
PORTB ^= 0x20; //toggle PORTB.5
sei ( ); //set I
cli ( ); //clear I
![Page 28: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/28.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming
Using Timer0 generate a square wave on pin PORTB.5, while at the same time transferring data from PORTC to PORTD.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //DDRB.5 = output
TCNT0 = -32; //timer value for 4 µs
TCCR0 = 0x01; //Normal mode, int clk, no prescaler
TIMSK = (1<<TOIE0); //enable Timer0 overflow interrupt
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_OVF_vect) //ISR for Timer0 overflow
TCNT0 = -32;
PORTB ^= 0x20; //toggle PORTB.5
![Page 29: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/29.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming
Using Timer0 generate a square wave on pin PORTB.5, while at the same time transferring data from PORTC to PORTD.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //DDRB.5 = output
TCNT0 = -32; //timer value for 4 µs
TCCR0 = 0x01; //Normal mode, int clk, no prescaler
TIMSK = (1<<TOIE0); //enable Timer0 overflow interrupt
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_OVF_vect) //ISR for Timer0 overflow
TCNT0 = -32;
PORTB ^= 0x20; //toggle PORTB.5
![Page 30: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/30.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming
Using Timer0 generate a square wave on pin PORTB.5, while at the same time transferring data from PORTC to PORTD.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //DDRB.5 = output
TCNT0 = -32; //timer value for 4 µs
TCCR0 = 0x01; //Normal mode, int clk, no prescaler
TIMSK = (1<<TOIE0); //enable Timer0 overflow interrupt
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_OVF_vect) //ISR for Timer0 overflow
TCNT0 = -32;
PORTB ^= 0x20; //toggle PORTB.5
![Page 31: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/31.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming
Using Timer0 generate a square wave on pin PORTB.5, while at the same time transferring data from PORTC to PORTD.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //DDRB.5 = output
TCNT0 = -32; //timer value for 4 µs
TCCR0 = 0x01; //Normal mode, int clk, no prescaler
TIMSK = (1<<TOIE0); //enable Timer0 overflow interrupt
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_OVF_vect) //ISR for Timer0 overflow
TCNT0 = -32;
PORTB ^= 0x20; //toggle PORTB.5
![Page 32: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/32.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming Example 2
Using Timer1 and CTC mode write a program that toggles pin PORTB.5 every second, while at the same time transferring data from PORTC to PORTD. Assume XTAL = 8 MHz.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRB |= 0x20; //make DDRB.5 output
OCR0 = 40;
TCCR0 = 0x09; //CTC mode, internal clk, no prescaler
TIMSK = (1<<OCIE0); //enable Timer0 compare match int.
sei (); //enable interrupts
DDRC = 0x00; //make PORTC input
DDRD = 0xFF; //make PORTD output
while (1) //wait here
PORTD = PINC;
ISR (TIMER0_COMP_vect) //ISR for Timer0 compare match
PORTB ^= 0x20; //toggle PORTB.5
![Page 33: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/33.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
C programming Example 3
Assume that the INT0 pin is connected to a switch that is normally high. Write a program that toggles PORTC.3, whenever INT0 pin goes low. Use the external interrupt in level-triggered mode.
#include "avr/io.h"
#include "avr/interrupt.h"
int main ()
DDRC = 1<<3; //PC3 as an output
PORTD = 1<<2; //pull-up activated
GICR = (1<<INT0); //enable external interrupt 0
sei (); //enable interrupts
while (1); //wait here
ISR (INT0_vect) //ISR for external interrupt 0
PORTC ^= (1<<3); //toggle PORTC.3
![Page 34: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/34.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC and DAC Programming in AVR
The AVR microcontroller
and embedded
systemsusing assembly and c
![Page 35: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/35.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Topics
What is ADC and why do we need it?
ADC major characteristics
ADC in AVR
Hardware Consideration
AVR ADC Programming
ADCH and ADCL
ADMUX
ADCSRA
DAC
Signal conditioning and sensors
![Page 36: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/36.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
What is ADC? Do we need it?
Analogue vs. digital signal
![Page 37: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/37.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC major characteristics
Conversion Time
Resolution
Vref
Parallel vs. serial
Input channels
Step Size
![Page 38: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/38.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Some of ADC Signals
Dout = Vin / Step size
( in 8 bit ADC and Vref = 2.56 what is D out for 20mV input voltage?)
Start of Conversion
Channel Selector
![Page 39: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/39.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC in AVR
Atmega 16/32 have internal ADC
8 analogue input channel
7 differential input channel
2 differential input channel with 10x or 200x gain
3 source of Vref
Internal 2.56V Vref generator
![Page 40: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/40.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Hardware Consideration
![Page 41: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/41.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADCH and ADCL Data registers
ADCH:ADCL store the results of conversion.
The 10 bit result can be right or left justified:
ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 - - - - - -ADC9 ADC8
ADCH ADCL
ADLAR = 0
ADLAR =1
ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0- - - - - - ADC9 ADC8
ADCH ADCL
![Page 42: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/42.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADMUX
![Page 43: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/43.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADMUX
![Page 44: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/44.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADMUX
![Page 45: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/45.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC input selection
![Page 46: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/46.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC input selection
![Page 47: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/47.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC input selection
![Page 48: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/48.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADCSA
![Page 49: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/49.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC Prescaler
PreScaler Bits let us change the clock frequency of ADC The frequency of ADC should not be more than 200 KHz Conversion time is longer in the first conversion
![Page 50: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/50.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
ADC Prescaler
PreScaler Bits let us change the clock frequency of ADC The frequency of ADC should not be more than 200 KHz Conversion time is longer in the first conversion
![Page 51: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/51.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Programming ADC
![Page 52: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/52.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Programming ADC - Polling
![Page 53: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/53.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Programming ADC - Interrupts
![Page 54: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/54.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
DAC
What is DAC ?
How to connect an DAC to AVR?
![Page 55: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/55.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Signal conditioning
Thermo couple provides temp in form of uV
PT100 provides temp in form of resistance
Some humidity sensor provide the result in form of Capacitance
-> We have to change these signals to Voltage to convert it by ADC
This job is called signal conditioning
![Page 56: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/56.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Signal conditioning
Thermo couple provides temp in form of uV
PT100 provides temp in form of resistance
Some humidity sensor provide the result in form of Capacitance
-> We have to change these signals to Voltage to convert it by ADC
This job is called signal conditioning
![Page 57: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/57.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Sensor Interfacing
![Page 58: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/58.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
OutputRelay, Optoisolator, and Stepper motor interfacing with AVR
The AVR microcontroller
and embedded
systemsusing assembly and c
![Page 59: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/59.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Topics
AVR Fan-out
Transistor
ULN2003
Relay
Opto-isolator
Stepper motor
![Page 60: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/60.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
AVR Fan-out
Each I/O port can sink 20 mA at VCC = 5V and 10 mA at VCC = 3V
VCC
22Ω
PORTx.n
Pxn
Pin of
chip
HIGH
LOW0
3
2.2
0.5
VOUT
VOH
VOL
For VCC = 3V
HIGH
LOW0
5
4
0.7
VOUT
VOH
VOL
For VCC = 5V
![Page 61: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/61.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Transistor
We can switch devices using transistors.
Transistor amplifies signals.AVR
VCC
Load
![Page 62: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/62.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
There are 7 Darlington transistors in a ULN2003.
ULN2003
IN OUT
GND
![Page 63: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/63.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Relay
Relay is an electronic controlled switch.
It isolates two parts of a circuit from each other.
A small amount of current and voltage causes to switch a large amount of voltage and current.
Relay DPDT
Maximum output: 250V 8A ~AC
Input: 24V DC
![Page 64: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/64.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Relay parts
Relay has the following parts:
Coil
Contacts
Spring
![Page 65: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/65.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Contacts
SPST
SPDT
DPDT
![Page 66: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/66.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Relay
~ 220V12V
+-
![Page 67: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/67.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
AVR connection to relay
Micro Darlington Relay Lamp
+12V+5V
1 16
8
ULN2003AVR
1064622
6
14
8PB0
+5V
9
![Page 68: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/68.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Contactors
Similar to relay
switches larger amounts of current
Bigger that relays and cannot be used on boards
Contactor
660V 50A
![Page 69: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/69.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Optoisolator
Opto-isolator isolates two parts of a circuit from each other.
There is an LED in the input, and a photo-transistor in the output. When the LED lights up, the photo-transistor, senses the light and becomes conductor, and passes the current.
can be used in input or output circuits.
TLP521
![Page 70: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/70.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Optoisolator
Opto-isolator isolates two parts of a circuit from each other.
There is an LED in the input, and a photo-transistor in the output. When the LED lights up, the photo-transistor, senses the light and becomes conductor, and passes the current.
can be used in input or output circuits.
![Page 71: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/71.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Opto-isolator
TLP521
![Page 72: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/72.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Controlling 220V devices
+12V
~220V
220
Digital Ground
+5V
Analog Ground
1KΩ
DigitalPower
AnalogPower
ULN2003
inout
AVR
![Page 73: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/73.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Opto-isolator Triac
Common opto-isolators can drive only DC currents. But a kind of opto-isolator, called opto-isolator triac can switch AC currents as well.
MOC3010
![Page 74: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/74.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Opto-isolator Triac
Common opto-isolators can drive only DC currents. But a kind of opto-isolator, called opto-isolator triac can switch AC currents as well.
![Page 75: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/75.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Stepper motor
Stepper motor is a motor, whose rotation angle is proportional to its input pulse.
S
N
COM
COM
A
B
C D
Stator
![Page 76: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/76.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Stepper motor
Stepper motor is a motor, whose rotation angle is proportional to its input pulse.
S
N
COM
COM
A
B
C D
Stator
tooth
![Page 77: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/77.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
+5VC A
+5V
B
D
N S
S
N
![Page 78: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/78.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
+5VC A
+5V
B
D
N
S
S
N
![Page 79: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/79.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
+5VC A
+5V
B
D
NS
S
N
![Page 80: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/80.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
+5VC A
+5V
B
DN
S
S
N
![Page 81: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/81.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Stepping
+5VC A
+5V
B
D
N
N
S
S
S
N
![Page 82: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/82.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Stepping
+5VC A
+5V
B
D
N
N
S
S
S
N
![Page 83: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/83.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Stepping
+5VC A
+5V
B
D
N
N
S
S
S
N
![Page 84: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/84.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Stepping
+5VC A
+5V
B
D
N
N
S
S
S
N
![Page 85: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/85.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Calculations
+5VA C
+5V
B
D
N
N
S
S
![Page 86: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/86.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Calculations
+5VA C
+5V
B
D
N
N
S
S
![Page 87: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/87.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Calculations
+5VA C
+5V
B
D
N
N
S
S
![Page 88: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/88.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Calculations
+5VA C
+5V
B
D
N
N
S
S
Step angle = 90
Num of teeth
Steps per revolution = 360
Step angle= 4 * Num of teeth
Steps per second = RPM * Steps per revolution
60
![Page 89: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/89.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
AVR and a Stepper motor
![Page 90: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/90.jpg)
The AVR microcontroller
and embedded
systems
using assembly and c
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
DC motor and PWM
![Page 91: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/91.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.91
Topics
DC motor
Unidirectional control
Bidirectional control
PWM modes
Wave generating using Fast PWM
Wave generating using Phase correct PWM
![Page 92: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/92.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Unidirectional control
+5V
M
Digital Ground
AVRVCC
GND330
TIP120
![Page 93: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/93.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Unidirectional control
+5V
M
Digital Ground
AVRVCC
GND
10K
100K
+12V
Analog Ground
AnalogPower
330
TIP120
![Page 94: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/94.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Bidirectional control
![Page 95: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/95.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Bidirectional (clock wise)
![Page 96: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/96.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Bidirectional (counter clockwise)
![Page 97: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/97.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Bidirectional
![Page 98: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/98.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Using L298N
![Page 99: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/99.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.99
Timer0 Review
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 TIFR
TCNT0
TCCR0
TOV0
OCR0
= OCF0
![Page 100: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/100.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.100
COM01WGM00FOC0 COM00 CS02 CS01 CS00 TCCR0WGM01
CS02 CS01 CS00 Comment
0 0 0 No clock source (Timer/Counter stopped)
0 0 1 clk (No Prescaling)
0 1 0 clk / 8
0 1 1 clk / 64
1 0 0 clk / 256
1 0 1 clk / 1024
1 1 0 External clock source on T0 pin. Clock on falling edge
1 1 1 External clock source on T0 pin. Clock on rising edge
Clock Selector (CS)
![Page 101: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/101.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.101
COM01WGM00FOC0 COM00 CS02 CS01 CS00 TCCR0WGM01
CS02 CS01 CS00 Comment
0 0 0 No clock source (Timer/Counter stopped)
0 0 1 clk (No Prescaling)
0 1 0 clk / 8
0 1 1 clk / 64
1 0 0 clk / 256
1 0 1 clk / 1024
1 1 0 External clock source on T0 pin. Clock on falling edge
1 1 1 External clock source on T0 pin. Clock on rising edge
Clock Selector (CS)
10-bit T/C PrescalerClear
0
CS00
CS01
CS02
T0
clkIO
PSR10
Timer/Counter0 clock
source
clk
/10
24
clk
/25
6
clk
/64
clk
/8
0 1 2 3 4 5 6 7
![Page 102: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/102.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.102
COM01WGM00FOC0 COM00 CS02 CS01 CS00 TCCR0WGM01
WGM00 WGM01 Comment
0 0 Normal
0 1 CTC (Clear Timer on Compare Match)
1 0 PWM, phase correct
1 1 Fast PWM
Timer Mode (WGM)
![Page 103: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/103.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.103
Fast PWM mode
Similar to Normal mode but OCR0 is buffered.
0xFF
TCNT0
0TOVTOV TOV
time
0TOV0:
0
1
2
FE
FF
TOV0 = 1
TCNT0
TOV0
OCR0
= OCF0
OCR0-BUF
TOV0
![Page 104: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/104.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.104
Fast PWM mode
Similar to Normal mode but OCR0 is buffered.
0xFF
TCNT0
0TOVTOV TOV
time
0TOV0:
0
1
2
FE
FF
TOV0 = 1
TCNT0
TOV0
OCR0
= OCF0
OCR0-BUF
TOV0
![Page 105: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/105.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.105
Fast PWM mode
Similar to Normal mode but OCR0 is buffered.
0xFF
TCNT0
0TOVTOV TOV
time
0TOV0: 1
0
1
2
FE
FF
TOV0 = 1
TCNT0
TOV0
OCR0
= OCF0
OCR0-BUF
TOV0
![Page 106: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/106.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.106
Phase Correct PWM mode
Goes up and down like a yo-yo
When TCNT becomes zero, the TOV0 flag sets.
0xFF
TCNT0
0 time
0TOV0:
TCNT0
TOV0
OCR0
= OCF0
OCR0-BUF
TCNT0=0xFF
TOV
1
2
TOV0 = 10
FE
FF
![Page 107: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/107.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.107
Phase Correct PWM mode
Goes up and down like a yo-yo
When TCNT becomes zero, the TOV0 flag sets.
0xFF
TCNT0
0 time
0TOV0:
TCNT0
TOV0
OCR0
= OCF0
OCR0-BUF
TCNT0=0xFF
TOV
1
2
TOV0 = 10
FE
FF
![Page 108: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/108.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.108
Phase Correct PWM mode
Goes up and down like a yo-yo
When TCNT becomes zero, the TOV0 flag sets.
0xFF
TCNT0
0 time
0TOV0: 1
TCNT0
TOV0
OCR0
= OCF0
OCR0-BUF
TCNT0=0xFF
TOV
1
2
TOV0 = 10
FE
FF
![Page 109: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/109.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.109
COM01WGM00FOC0 COM00 CS02 CS01 CS00 TCCR0WGM01
Compare Output Mode (COM)
CTC or Normal
(Non PWM)
Fast PWM
Phase Correct
PWM
![Page 110: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/110.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.110
COM01WGM00FOC0 COM00 CS02 CS01 CS00 TCCR0WGM01
Compare Output Mode (COM)
CTC or Normal
(Non PWM)
Fast PWM
Phase Correct
PWM
Fast PWM
Duty cycle = changeable (0% to 100%)
Frequency = selectable between limited choices
TCNT0
0
OCR0
0xFF
OC0
OC0
0xFF
TCNT0
0OCR0
OC0
OC0
COM=2
COM=3
N(256)
fclkFOC0=
Duty Cycle = 256
x100OCR0 + 1
Duty Cycle = 256
x100255 - OCR0
![Page 111: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/111.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.111
Assuming XTAL = 8 MHz, make the following pulse
duty cycle = 75% and frequency = 31.250KHz
OCR0 = 0xBE;
TCCR0 = 0x79;
fclk
N(256)FOC0=
8MHz
N(256)31.250KHz= N =
8MHz
31.250K*256
LDI R20,0xBE
OUT OCR0,R20
LDI R20,0x79
OUT TCCR0,R20
=1
75/100 = (OCR0+1)/255 OCR0+1 = 191 = 0xBF OCR0 = 0xBE
![Page 112: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/112.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.112
COM01WGM00FOC0 COM00 CS02 CS01 CS00 TCCR0WGM01
Compare Output Mode (COM)
CTC or Normal
(Non PWM)
Fast PWM
Phase Correct
PWM
![Page 113: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/113.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.113
COM01WGM00FOC0 COM00 CS02 CS01 CS00 TCCR0WGM01
Compare Output Mode (COM)
CTC or Normal
(Non PWM)
Fast PWM
Phase Correct
PWM
Phase Correct PWM
Duty cycle = changeable (0% to 100%)
Frequency = selectable between limited choices
COM=2
COM=3
N(510)
fclkFOC0=
0xFF
TCNT0
0
OCR0
OC0
OC0
0xFF
TCNT0
0
OCR0
OC0
OC0
Duty Cycle = 255
x100255 - OCR0
Duty Cycle = 255
x100 OCRx
![Page 114: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/114.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD and Keyboard
The AVR microcontrollerand embedded
systemsusing assembly and c
![Page 115: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/115.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
About LCD
Sometimes the embedded system needs to inform the user of something. There are different ways to inform the user, such as LEDs, 7segments and LCDs.
LCD is one of the most powerful ways; as you can display different texts and icons on it.
![Page 116: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/116.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Topics:
LCD pin out
LCD internal components
How to use LCD
Busy
LCD commands
Changing fonts (case study)
additional references
![Page 117: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/117.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD internal components
DDRAM (Data Display RAM)
CGRAM (Character Generator RAM)
Cursor (Address Counter)
Data Register
Command Register
Cursor
Command Register
Data Register
DDRAM
80H
81H
82H
FEH
FFH
...
CGRAM
40H
41H
42H
7EH
7FH
...
![Page 118: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/118.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
DDRAM (Data Display RAM)
DDRAM (Data Display RAM) It is a 128x8 RAM (128 bytes of RAM)
Contains the data that should be displayed on the LCD.
If we write the ASCII code of a character into the RAM the character will be displayed on the LCD.
CGRAM (Character Generator RAM) It is a 64x8 RAM (64 bytes of RAM).
The fonts of characters 00H to 07H are stored in the RAM.
We can change the fonts of the 8 characters by writing into the RAM.
Cursor (Address Counter) Cursor is a register which points to a location of DDRAM or
CGRAM.
![Page 119: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/119.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
DDRAM (Data Display RAM)
Data Register
It is an 8 bit register.
When we write a byte of data into the data register, the data will be written where the cursor points to.
For example, if we write a byte of data into the data register while the cursor points to location 80H of DDRAM, the contents of location 80H will be changed to the data, we have written into the data register.
Command Register
We can command the LCD by writing into the command register.
For example, we can ask the LCD, to set cursor location, or clean the screen, by writing into the command Register.
![Page 120: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/120.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Writing to Data Register (Example)
Cursor
Command Register
Data Register
DDRAM
80H
81H
82H
FEH
FFH
...
CGRAM
40H
41H
42H
7EH
7FH
...
50H
P
![Page 121: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/121.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD commands
We mentioned earlier that we can order the LCD by sending command codes to the command register.
Some of the command codes are listed in the following table.
Code (Hex)
Instruction Code (Hex)
Instruction
1 Clear display screen 2 Return home
10 Shift cursor position to left 14 Shift cursor position to right
18 Shift display left 1C Shift display right
4 After displaying a character on the LCD, shift cursor to left
6 After displaying a character on the LCD, shift cursor to right
80-FF Set cursor position 40-7F
Set CG RAM address
8 Display off, cursor off A Display off, cursor on
C Display on, cursor off E Display on, cursor on
F Display on, cursor blinking 38 Initializing to 2 lines & 5x7 font
![Page 122: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/122.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Display and Cursor
Display on cursor blinking (0FH)
Hello world ! Hello world !
n Display on cursor on (0EH)
n Display on cursor off (0CH)
Hello world !
n Display off cursor off (0AH)
![Page 123: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/123.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Set cursor position (Set DDRAM address)
80 81 82 … 91 92 93
C0 C1 C2 … D1 D2 D3
94 95 96 … A5 A6 A7
D4 D5 D6 … E5 E6 E7
20x4 LCD
80 81 82 … 91 92 93
C0 C1 C2 … D1 D2 D3
20x2 LCD
80 81 82 … 91 92 93
20x1 LCD
80 81 82 … 8D 8E 8F
C0 C1 C2 … CD CE CF
16x2 LCD
80 81 82 … A5 A6 A7
C0 C1 C2 … E5 E6 E7
40x2 LCD
Line 1
Line 2
Line 3
Line 4
1 2 3 … 18 19 20
1 2 3 … 18 19 20
1 2 3 … 14 15 16
1 2 3 … 18 19 20
1 2 3 … 38 39 40
We mentioned earlier that each location of the DDRAM, retains the character that should be displayed in a location of LCD.
The following figures, represent that if you want to display a character in each of the rooms of the LCD, you should write into which location of the DDRAM. (The numbers are in hex.)
To move the cursor to any location of the DDRAM, write the address of that location into the command register.
Line 1
Line 2
Line 1
Line 2
Line 1
Line 2
Line 1
![Page 124: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/124.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Set cursor position (example)
We want to display a character in line 4 column 1 of a 20x4 LCD. What should we write to the command register to move the cursor to?
![Page 125: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/125.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Solution:We should move cursor to address D4H of the DDRAM. So, we
should write D4H, into the command register.
Set cursor position (example)
We want to display a character in line 4 column 1 of a 20x4 LCD. What should we write to the command register to move the cursor to?
80 81 82 … 91 92 93
C0 C1 C2 … D1 D2 D3
94 95 96 … A5 A6 A7
D4 D5 D6 … E5 E6 E7
1 2 3 … 18 19 20
Line 1
Line 2
Line 3
Line 4
![Page 126: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/126.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Decrease and increase Cursor
If you write a byte of data into the data register, the data will be written where the cursor points to, and cursor will be incremented, by default. If you want to make the LCD, to decrement the cursor,
you should write 4H into the command register.
If you want to make the LCD, to reactivate the default (shift cursor to right) you should write 6H into the command register.
Decrement cursor
Hello
Increment cursor
Hello
![Page 127: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/127.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD pins
In this section, you learn the functionalities of the LCD pins.
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
![Page 128: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/128.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD pins
VSS and VCC: These pins provide the energy to the LCD. We must connect them to +5V.
+5 +
-
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
![Page 129: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/129.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
LCD pins
VEE: We control the contrast of the LCD by giving a voltage between 0V and +5V to the pin.
+5 +
-
![Page 130: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/130.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
LCD pins
VEE: We control the contrast of the LCD by giving a voltage between 0V and +5V to the pin.
Hello world !
+5 +
-
![Page 131: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/131.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD pins
D0 to D7: LCD sends and receives data, through the 8 pins.
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
![Page 132: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/132.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD pins
R/W (Read/Write): When we want to send (write) data to the LCD, we
make the pin, low.
When we want to receive (read) data from the LCD, we set the pin to high.
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
![Page 133: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/133.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD pins
E (Enable): We activate the pin when we want to send or receive data from the LCD. When we want to send data to the LCD, we make the RW pin,
low; and supply the data to data pins (D0 to D7); and then apply a high to low pulse to the Enable pin.
When we want to receive data from the LCD, we make the RW pin, high; and then apply a low to high pulse to the Enable pin. LCD supplies data to the data pins (D0 to D7).
E
E
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
![Page 134: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/134.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD pins
RS (Register select): There are two registers with names of command register and data register in the LCD.
If RS = 1, whenever we send data to the LCD, the data will be located in the data register.
If RS = 0, whenever we send data to the LCD, the data will be located in the command register
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
Command Register
Data Register
RS
![Page 135: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/135.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
1
LCD pins
RS (Register select): There are two registers with names of command register and data register in the LCD.
If RS = 1, whenever we send data to the LCD, the data will be located in the data register.
If RS = 0, whenever we send data to the LCD, the data will be located in the command register
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
Command Register
Data Register
RS
![Page 136: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/136.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
0
LCD pins
RS (Register select): There are two registers with names of command register and data register in the LCD.
If RS = 1, whenever we send data to the LCD, the data will be located in the data register.
If RS = 0, whenever we send data to the LCD, the data will be located in the command register
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
Command Register
Data Register
RS
![Page 137: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/137.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
LCD Programming
n Initialization n We must initialize the LCD before we use it. n To initialize an LCD, for 5×7 matrix and 8-bit operation, 0x38,
0x0E, and 0x01 are send to the command register.
n Sending commands to the LCDn Make pins RS and R/W = 0n Put the command number on the data pins (D0–D7)
n Send a high-to-low pulse to the E pin to enable the internal latch of the LCD (wait about 100us after each command)
n Sending data to the LCDn make pins RS = 1 and R/W = 0.n put the data on the data pins (D0–D7)
n send a high-to-low pulse to the E pin (wait about 100us)
5x10 Font
![Page 138: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/138.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
An example
Write a program that displays ‘H’ on the LCD,
where the cursor is located.PA.0
PA.1
PA.2
PA.3
PA.4
PA.5
PA.6
PA.7
AREF
GND
AVCC
PC.7
PC.6
PC.5
PC.4
PC.3
PC.2
PC.1
PC.0
PD.7
PB.0
PB.1
PB.2
PB.3
PB.4
PB.5
PB.6
PB.7
RST
VCC
GND
XTal2
XTal1
PD.0
PD.1
PD.2
PD.3
PD.4
PD.5
PD.6
AVR
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
![Page 139: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/139.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
An example
Write a program that displays ‘H’ on the LCD,
where the cursor is located.PA.0
PA.1
PA.2
PA.3
PA.4
PA.5
PA.6
PA.7
AREF
GND
AVCC
PC.7
PC.6
PC.5
PC.4
PC.3
PC.2
PC.1
PC.0
PD.7
PB.0
PB.1
PB.2
PB.3
PB.4
PB.5
PB.6
PB.7
RST
VCC
GND
XTal2
XTal1
PD.0
PD.1
PD.2
PD.3
PD.4
PD.5
PD.6
AVRSolution:
PORTA |= (1<<2); // (RS = 1) as we want to write to the data register
PORTA&= (1<<1); // (RW = 0) as we want to send data to the LCD.
PORTB = ‘H’; // as we want to send ‘H’ to the LCD.
//To make a High to low pulse on the Enable pin :
PORTA |= 1;
DELAY_ms (1);
PORTA.0 &= ~1;
VSSVCCVEE
R
S
R
W
ED
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
![Page 140: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/140.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Changing fonts (Changing CGRAM)
0 0 0 1 1 1 1 0
0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1
0 0 0 1 1 1 1 0
0 0 0 1 0 1 0 0
0 0 0 1 0 0 1 0
0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 0 0 1 0 1 0
0 0 0 1 1 1 1 1
0 0 0 0 0 1 0 0
0 0 0 1 1 1 1 1
0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
:
:
Ch
aracter 0C
haracter 1
D7 D6 D5 D4 D3 D2 D1 D0
n Each character LCD has a CGRAM (Character generator RAM). It stores the fonts of the first 8 characters (character 0H to character 7H). So, you can change the font of the 8 characters and define new characters, by writing into the CGRAM. Each byte of the CGRAM stores a row of a font. The fonts are stored respectively, in the CGRAM. For example, if you change the content of first byte of the CGRAM (whose address is 40H), you have changed the highest row of character 0H.
n Attention: in an LCD with 5x7 font, each font has actually 8 rows. The 8th row is put aside for the cursor. You would better not set the bits of the 8th row.
CGRAM (Its first 16 bytes)
![Page 141: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/141.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Changing fonts
To change a row of a font, you should follow the following direction:
1. Set the cursor position to point to the location of the CGRAM that you want to change.
2. Change the font of the selected row, by writing into data register.
Attention: LCD has only one cursor. When you want to change the CGRAM you make it point to CGRAM and when you want to display something on the screen you make it point to a location of DDRAM. So, when you finished changing the fonts don’t forget to set the cursor position, so that, it points to DDRAM.
![Page 142: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/142.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
additional references
You can find useful datasheets and user manuals about different LCDs in http://www.optrex.com/
![Page 143: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/143.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Keyboard
![Page 144: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/144.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Bounce
AVR
PB.1
A key press may be considered as more than one click
VCC
VPB1
![Page 145: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/145.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Debouncing (The correct way of reading keys)
do
while((PORTB&1) == 0);
delay_ms (20);
while((PORTB&1) == 0);
do
while((PORTB&1) == 1);
delay_ms (20);
while((PORTB&1) == 1);
A++;
![Page 146: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/146.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Using Keyboard
AVRPB.0
PB.1
PB.2
PB.3
PB.4
PB.5
PB.6
PB.7
PC.0
PC.1
PC.2
PC.3
PC.4
PC.5
PC.6
PC.7
If we connect each key to a pin of the AVR, we waist many pins. So we use scanning as shown in the next slide
![Page 147: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/147.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Keyboard
VCC
D3 D2 D1 D0
D3
D2
D1
D0
![Page 148: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/148.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Keyboard
VCC
D3 D2 D1 D0
D3
D2
D1
D0
4
7
1
Cancel
5
8
2
0
6
9
3
OK
![Page 149: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/149.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Creating a Matrix keyboard
VCC
![Page 150: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/150.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Creating a Matrix keyboard
VCC
D3
D2
D1
D0
INPU
T
D3 D2 D1 D0
OUTPUT
![Page 151: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/151.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Connecting to AVR
VCC
D3 D2 D1 D0
D3
D2
D1
D0
VCC
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
VPP
ALE
PSEN
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
2
1
AVR
![Page 152: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/152.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Keyboard Programming
Writing programs for Matrix Keyboard
Key press detection
Aim: detecting if any of the keys is pressed
Key identification (scanning the keyboard)
Aim: identifying that which of the keys is pressed
![Page 153: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/153.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Press detection (is any of the keys pressed)
VCC
D3 D2 D1 D0
D3
D2
D1
D0
PO
RTA
PORTB
![Page 154: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/154.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Key identification
VCC
D3 D2 D1 D0
D3
VCC
VCC
VCC
D2
D1
D0
![Page 155: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/155.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Key identification
VCC
D3 D2 D1 D0
D3
VCC
VCC
VCC
D2
D1
D0
![Page 156: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/156.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Key identification
VCC
D3 D2 D1 D0
D3
VCC
VCC
VCC
D2
D1
D0
![Page 157: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/157.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Key identification
VCC
D3 D2 D1 D0
D3
VCC
VCC
VCC
D2
D1
D0
![Page 158: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/158.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Example
Write a function, that waits for a key to be pressed and then returns the code of the pressed key.
D3 D2 D1 D0
D3
D2
D1
D0
![Page 159: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/159.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Example
Write a function, that waits for a key to be pressed and then returns the code of the pressed key.
D3 D2 D1 D0
D3
D2
D1
D0
4
7
1
Cancel
5
8
2
0
6
9
3
OK
![Page 160: CHW 469 : Embedded Systems Science/5869/crs...AVR Microcontroller and Embedded System Using Assembly and C Mazidi, Naimi, and Naimi © 2011 Pearson Higher Education, Upper Saddle River,](https://reader036.vdocuments.mx/reader036/viewer/2022062312/612483d15647c75bb1320c82/html5/thumbnails/160.jpg)
AVR Microcontroller and Embedded System Using Assembly and C
Mazidi, Naimi, and Naimi
© 2011 Pearson Higher Education,
Upper Saddle River, NJ 07458. • All Rights Reserved.
Solution
Ground all rows
Read all columns
All keys open?
Read all columns
Any key down?No
Yes
Read all columns
Any key down?No
Wait for de-bounce
Read all columns
Key press in this row
No
Ground next row
No
Get codefrom table
Find which key is pressed
Return
Start
YesYes
Yes