CHAPTER 0: INTRODUCTION TO COMPUTING..................................................................... 5
SECTION 0.1: NUMBERING AND CODING SYSTEMS................................................... 5
SECTION 0.2: DIGITAL PRIMER ........................................................................................ 6
SECTION 0.3: SEMICONDUCTOR MEMORY .................................................................. 8
SECTION 0.4: CPU AND HARVARD ARCHITECTURE ................................................ 10
CHAPTER 1: THE AVR MICROCONTROLLERS: HISTORY AND FEATURES.................. 11
SECTION 1.1: MICROCONTROLLERS AND EMBEDDED PROCESSORS............... 11
SECTION 1.2: OVERVIEW OF THE AVR FAMILY ....................................................... 11
CHAPTER 2: AVR ARCHITECTURE & ASSEMBLY LANGUAGE PROGRAMMING ....... 13
SECTION 2.1: THE GENERAL PURPOSE REGISTERS IN THE AVR........................ 13
SECTION 2.2: THE AVR DATA MEMORY ...................................................................... 13
SECTION 2.3: USING INSTRUCTIONS WITH THE DATA MEMORY....................... 14
SECTION 2.4: AVR STATUS REGISTER .......................................................................... 15
SECTION 2.5: AVR DATA FORMAT AND DIRECTIVES.............................................. 16
SECTION 2.6: INSTRUCTION TO AVR ASSEMBLY PROGRAMMING AND .......... 17
SECTION 2.7: ASSEMBLING AN AVR PROGRAM........................................................ 17
SECTION 2.8: THE PROGRAM AND PROGRAM ROM SPACE IN THE AVR ......... 18
SECTION 2.9: RISC ARCHITECTURE IN THE AVR ..................................................... 20
CHAPTER 3: BRANCH, CALL AND TIME DELAY LOOP .................................................... 21
SECTION 3.1: BRANCH INSTRUCTIONS AND LOOPING........................................... 21
SECTION 3.2: CALL INSTRUCTIONS AND STACK ...................................................... 21
SECTION 3.3: AVR TIME DELAY AND INSTRUCTION PIPELINE ........................... 22
CHAPTER 4: AVR I/O PORT PROGRAMMING ...................................................................... 24
SECTION 4.1: I/O PORT PROGRAMMING IN AVR ...................................................... 24
SECTION 4.2: I/O BIT MANIPULATION PROGRAMMING......................................... 25
CHAPTER 5: ARITHMETIC, LOGIC INSTRUCTIONS, AND PROGRAMS.......................... 29
SECTION 5.1: ARITHMETIC INSTRUCTIONS............................................................... 29
SECTION 5.2: SIGNED NUMBER CONCEPTS AND ARITHMETIC OPERATIONS 31
SECTION 5.3: LOGIC AND COMPARE INSTRUCTIONS............................................. 31
SECTION 5.4: ROTATE AND SHIFT INSTRUCTIONS AND DATA SERIALIZATION
................................................................................................................................................... 32
SECTION 5.5: BCD AND ASCII CONVERSION............................................................... 33
CHAPTER 6: AVR ADVANCED ASSEMBLY LANGUAGE PROGRAMMING ................... 35
SECTION 6.1: INTRODUCING SOME MORE ASSEMBLER DIRECTIVES .............. 35
SECTION 6.2: REGISTER AND DIRECT ADDRESSING MODES ............................... 35
SECTION 6.3: REGISTER INDIRECT ADDRESSING MODE....................................... 36
SECTION 6.4: LOOK-UP TABLE AND TABLE PROCESSING..................................... 37
SECTION 6.5: BIT-ADDRESSABILITY ............................................................................. 40
SECTION 6.6: ACCESSING EEPROM IN AVR................................................................ 42
SECTION 6.7: CKECKSUM AND ASCII SUBROUTINES .............................................. 45
SECTION 6.8: MACROS ....................................................................................................... 48
CHAPTER 7: AVR PROGRAMMING IN C ............................................................................... 49
SECTION 7.1: DATA TYPES AND TIME DELAYS IN C................................................ 49
SECTION 7.2: I/O PROGRAMMING IN C ........................................................................ 49
SECTION 7.3: LOGIC OPERATIONS IN C....................................................................... 51
SECTION 7.4: DATA CONVERSION PROGRAMS IN C................................................ 52
SECTION 7.6: MEMORY ALLOCATION IN C ................................................................ 53
CHAPTER 8: AVR HARDWARE CONNECTION .................................................................... 55
Instructor’s Manual for “The AVR Microcontroller and Embedded Systems” 3
, SECTION 8.1: ATMEGA32 PIN CONNECTION .............................................................. 55
SECTION 8.2: AVR FUSE BITS........................................................................................... 55
SECTION 8.3: EXPLAINING THE INTEL HEX FILE FOR AVR ................................. 55
SECTION 8.4: AVR PROGRAMMIN AND TRAINER BOARD ..................................... 56
CHAPTER 9: AVR TIMER PROGRAMMING IN ASSEMBLY AND C.................................. 57
SECTION 9.1: PROGRAMMING TIMERS 0, 1, AND 2 ................................................... 57
SECTION 9.2: COUNTER PROGRAMMING ................................................................... 59
SECTION 9.3: PROGRAMMING TIMERS IN C .............................................................. 60
Chapter 10: INTERRUPT PROGRAMMING IN ASSEMBLY AND C ..................................... 65
SECTION 10.1: AVR INTERRUPTS ................................................................................... 65
SECTION 10.2: PROGRAMMING TIMER INTERRUPTS ............................................. 65
SECTION 10.3: PROGRAMMING EXTERNAL HARDWARE INTERRUPTS ........... 68
SECTION 10.4: INTERRUPT PRIORITY IN THE AVR.................................................. 70
CHAPTER 11: AVR SERIAL PORT PROGRAMMING IN ASSEMBLY AND C ................... 71
SECTION 11.1: BASICS OF SERIAL COMMUNICATION ............................................ 71
SECTION 11.2: ATMEGA32 CONNECTION TO RS232 ................................................. 71
SECTION 11.3: AVR SERIAL PORT PROGRAMMING IN ASSEMBLY..................... 72
SECTION 11.4: AVR SERIAL PORT PROGRAMMING IN C........................................ 74
CHAPTER 12: LCD AND KEYBOARD INTERFACING ......................................................... 76
SECTION 12.1: LCD INTERFACING ................................................................................. 76
SECTION 12.2: KEYBOARD INTERFACING .................................................................. 76
CHAPTER 13: ADC, DAC, AND SENSOR INTERFACING .................................................... 77
SECTION 13.1: ADC CHARACTERISTICS ...................................................................... 77
SECTION 13.2: ADC PROGRAMMING IN THE ATMEGA32 ....................................... 77
SECTION 13.3: SENSOR INTERFACING AND SIGNAL CONDITIONING ............... 78
SECTION 13.4: DAC INTERFACING................................................................................. 78
Chapter 14: RELAY, OPTOISOLATOR, AND STEPPER MOTOR INTERFACING WITH
AVR .............................................................................................................................................. 80
SECTION 14.1: RELAYS AND OPTOISOLATORS ......................................................... 80
SECTION 14.2: STEPPER MOTOR INTERFACING ....................................................... 80
Chapter 15: INPUT CAPTURE AND WAVE GENERATION IN AVR .................................... 81
SECTION 15.1: WAVE GENERATION USING 8-BIT TIMERS..................................... 81
SECTION 15.2: WAVE GENERATION USING TIMER1 ................................................ 82
SECTION 15.3: INPUT CAPTURE PROGRAMMING..................................................... 84
SECTION 15.4: C PROGRAMMING .................................................................................. 84
Chapter 16: PWM AND DC MOTOR CONTROL ...................................................................... 87
SECTION 16.1: DC MOTOR INTERFACING AND PWM .............................................. 87
SECTION 16.2: PWM MODES IN 8-BIT TIMERS............................................................ 87
SECTION 16.3: PWM MODES IN TIMER1 ....................................................................... 89
Chapter 17: SPI PROTOCOL AND MAX7221 DESPLAY INTERFACING ............................. 92
SECTION 17.1: SPI BUS PROTOCOL ................................................................................ 92
SECTION 17.2: SPI PROGRAMMING IN AVR ................................................................ 92
SECTION 17.3: MAX7221 INTERFACING AND PROGRAMMING ............................. 92
Chapter 18: I2C PROTOCOL AND DS1307 RTC INTERFACING ........................................... 93
SECTION 18.1: I2C BUS PROTOCOL................................................................................ 93
SECTION 18.2: TWI PROGRAMMING IN AVR .............................................................. 93
SECTION 18.3: AVR TWI PROGRAMMING IN ASSEMBLY AN C............................. 93
SECTION 18.4: DS1307 RTC INTERFACING AND PROGRAMMING ........................ 95
Instructor’s Manual for “The AVR Microcontroller and Embedded Systems” 4
, CHAPTER 0: INTRODUCTION TO COMPUTING
SECTION 0.1: NUMBERING AND CODING SYSTEMS
1.
(a) 1210 = 11002
(b) 12310 = 0111 10112
(c) 6310 = 0011 11112
(d) 12810 = 1000 00002
(e) 100010 = 0011 1110 10002
2.
(a) 1001002 = 3610
(b) 10000012 = 6510
(c) 111012 = 2910
(d) 10102 = 1010
(e) 001000102 = 3410
3.
(a) 1001002 = 2416
(b) 10000012 = 4116
(c) 111012 = 1D16
(d) 10102 = 0A16
(e) 001000102 = 2216
4.
(a) 2B916 = 0010 1011 10012, 69710
(b) F4416 = 1111 0100 01002, 390810
(c) 91216 = 1001 0001 00102, 232210
(d) 2B16 = 0010 10112, 4310
(e) FFFF16 = 1111 1111 1111 11112, 6553510
5.
(a) 1210 = 0C16
(b) 12310 = 7B16
(c) 6310 = 3F16
(d) 12810 = 8016
(e) 100010 = 3E816
6.
(a) 1001010 Î 0011 0110
(b) 111001 Î 0000 0111
(c) 10000010 Î 0111 1110
(d) 111110001 Î 0000 1111
7.
(a) 2C+3F = 6B
(b) F34+5D6 = 150A
(c) 20000+12FF = 212FF
(d) FFFF+2222 = 12221
8.
(a) 24F-129 = 12616
Instructor’s Manual for “The AVR Microcontroller and Embedded Systems” 5