AVR: AN INTRODUCTORY COURSE
CONTENTS CHAPTER 1 INTRODUCTION 1 1 MICROCONTROLLER, MICROCOMPUTER OR MICROPROCESSOR? 1 2 DO YOU NEED A MICROCONTROLLER? 1 3 WHY THE ATMEL’S AVR MICROCONTROLLER? 1 4 ORGANIZATION OF THIS BOOK 1 5 TIMING DIAGRAM CONVENTIONS CHAPTER 2 MICROCONTROLLERS 2 1 MICROCONTROLLER ARCHITECTURE 2 2 CHOOSING A MICROCONTROLLER 2 3 DEVELOPING APPLICATIONS WITH A MICROCONTROLLER CHAPTER 3 THE AVR RISC MICROCONTROLLER ARCHITECTURE 3 1 INTRODUCTION 3 2 AVR FAMILY ARCHITECTURE 3 3 THE REGISTER FILE 3 4 THE ALU 3 5 MEMORY ACCESS AND INSTRUCTION EXECUTION 3 6 I/O MEMORY 3 6 1 SREG: STATUS REGISTER 3 6 2 SP: STACK POINTER REGISTER 3 6 3 GIMSK: GENERAL INTERRUPT MASK REGISTER 3 6 4 GIFR: GENERAL INTERRUPT FLAG REGISTER 3 6 5 MCUCR: MCU GENERAL CONTROL REGISTER 3 6 6 MCUSR: MCU STATUS REGISTER 3 6 7 TCCRO: TIME/COUNTERO CONTROL REGISTER 3 6 8 TCNTO: TIME/COUNTERO REGISTER 3 6 9 TCCR1A: TIMER/COUNTER1 CONTROL REGISTER A 3 6 10 TCCR1B: TIMER/COUNTER1 CONTROL REGISTER B 3 6 12 OCR1AH, OCR1AL: TIMER/COUNTER1 OUTPUT COMPARE REGISTERS 3 6 13 OCRIBH, OCR1BL: TIMER/COUNTER1 OUTPUT COMPARE REGISTERS 3 6 14 ICR1H, ICR1L: TIMER/COUNTER1 OUTPUT CAPTURE REGISTERS 3 6 15 WDTCR: WATCHDOG TIMER CONTROL REGISTER 3 6 16 EEAR: EEPROM ADDRESS REGISTER 3 6 17 EEDR: EEPROM DATA REGISTER 3 6 18 EECR: EEPROM CONTROL REGISTER 3 6 19 PORTB: PORTB DATA REGISTER 3 6 20 DDRB: PORTB DATA DIRECTION REGISTER 3 6 21 PINB: INPUT PINS ON PORTB 3 6 22 PORTD: PORTD DATA REGISTER 3 6 23 DDRD: PORTD DATA DIRECTION REGISTER 3 6 24 PIND: INPUT PINS ON PORTD 3 6 25 SPI I/O DATA REGISTER 3 6 26 SPI STATUS REGISTER 3 6 27 SPI CONTROL REGISTER 3 6 28 UART I/O DATA REGISTER 3 6 29 UART STATUS REGISTER 3 6 30 UART CONTROL REGISTER 3 6 31 UART BAUD RATE REGISTER 3 6 32 ACSR: ANALOG COMPARATOR CONTROL AND STATUS REGISTER 3 7 THE EEPROM 3 8 THE I/O PORTS 3 9 THE SRAM 3 9 1 INTERFACE TO EXTERNAL SRAM 3 10 THE TIMER 3 11 THE UART 3 12 THE INTERRUPT STRUCTURE 3 13 THE INTERNAL WATCHDOG TIMER 3 14 POWER-DOWN MODES OF OPERATION 3 15 DIFFERENT TYPES OF AVR CONTROLLERS CHAPTER 4 THE AVR INSTRUCTION SET 4 1 PROGRAM AND DATA ADDRESSING MODES 4 1 1 REGISTER DIRECT (SINGLE REGISTER) 4 1 2 REGISTER DIRECT (TWO REGISTERS) 4 1 3 I/O DIRECT 4 1 4 DATA DIRECT 4 1 5 DATA INDIRECT 4 1 6 INDIRECT PROGRAM ADDRESSING 4 1 7 RELATIVE PROGRAM ADDRESSING 4 2 ARITHMETIC AND LOGIC INSTRUCTIONS 4 3 PROGRAM CONTROL INSTRUCTIONS 4 4 DATA TRANSFER INSTRUCTIONS 4 5 BIT AND BIT-TEST INSTRUCTIONS CHAPTER 5 AVR HARDWARE DESIGN ISSUES 5 1 POWER SOURCE 5 1 1 BATTERY POWER 5 1 2 MAIN OPERATING SUPPLY 5 1 3 POWER FROM PORT SIGNAL LINES 5 1 4 VOLTAGE REGULATORS 5 2 OPERATING CLOCK SOURCES 5 2 1 USING A CRYSTAL CLOCK IC 5 2 2 USING A CERAMIC RESONATOR 5 2 3 USING A QUARTZ CRYSTAL 5 2 4 USING A QUARTZ CLOCK CRYSTAL 5 2 5 USING INTERNAL RC CLOCK OSCILLATOR 5 3 RESET CIRCUIT CHAPTER 6 HARDWARE AND SOFTWARE INTERFACING WITH THE AVR 6 1 A BEGINNER’S CIRCUIT 6 2 LIGHTS AND SWITCHES 6 3 STACK OPERATION IN AVR PROCESSORS 6 4 IMPLEMENTING COMBINATIONAL LOGIC 6 5 CONNECTING THE AVR TO THE PC SERIAL PORT 6 6 EXPANDING I/O 6 6 1 I/O EXPANSION USING SHIFT REGISTER 6 6 2 IIC EXPANDERS 6 7 INTERFACING ANALOG TO DIGITAL CONVERTERS 6 7 1 AD CONVERSION USING THE ON-CHIP COMPARATOR 6 7 3 MAX186 DATA CONVERSION AND READOUT 6 8 INTERFACING DIGITAL-TO-ANALOG CONVERTERS 6 8 1 USING PWM FOR A DAC 6 8 2 R-2R LADDER DAC 6 8 3 MAX521 DAC 6 9 INTERFACING LED DISPLAYS 6 9 1 SEVEN-SEGMENT DISPLAYS 6 9 2 DOT MATRIX DISPLAYS 6 10 INTERFACING LCD DISPLAYS 6 11 DRIVING RELAYS WITH AVR 6 12 STEPPER MOTOR INTERFACE FOR THE AVR 6 13 INTERFACING TO A SERIAL EEPROM 6 14 INTERFACING TO A REAL TIME CLOCK (RTC) 6 15 ACCESSING A CONSTANTS TABLE 6 16 ARBITRARY WAVEFORM GENERATION 6 17 A SWITCH-CASE IMPLEMENTATION 6 18 IMPLEMENTING A FINITE STATE MACHINE 6 19 GENERATING RANDOM NUMBERS CHAPTER 7 COMMUNICATION LINKS FOR THE AVR PROCESSOR 7 1 INTRODUCTION 7 2 RS-232 LINK 7 3 RS-422/423 LINK 7 4 RS-485 LINK 7 5 SPI AND MICROWIRE BUS 7 6 IIC BUS 7 7 PC PARALLEL PORT 7 8 ISA BUS 7 9 UNIVERSAL SERIAL BUS 7 10 IRDA DATA LINK 7 11 CAN (CONTROLLER AREA NETWORK) BUS CHAPTER 8 AVR SYSTEM DEVELOPMENT TOOLS 8 1 CODE ASSEMBLER 8 1 1 AVR FAMILY ASSEMBLER 8 1 2 IAR ASSEMBLER 8 2 CODE SIMULATOR 8 2 1 AVR SIMULATOR 8 2 2 AVR STUDIO 8 3 EVALUATION BOARDS 8 3 1 ATMEL AVR MCU00100 DEVELOPMENT BOARD 8 3 2 STK200 BOARD 8 3 3 STK 300 BOARD 8 4 ICE200 AVR EMULATOR 8 5 THE DEVICE PROGRAMMER 8 6 AVR SYSTEM DESIGN WITH COMPONENTS OFF THE SHELF (COTS) 8 6 1 THE SIMMSTICK MAGIC 8 7 CODE DEVELOPMENT WITH A HIGH LEVEL LANGUAGE 8 7 1 C-AVR: A C COMPILER FOR AVR 8 7 2 DDS MICRO-C DEVELOPERS KIT FOR THE AVR 8 7 3 BASICX: A BASIC INTERPRETER FOR THE AVR 8 7 4 BASCOM-AVR: A BASIC COMPILER FOR THE AVR 8 7 5 JAVRBASIC: JACK’S AVR BASIC COMPILER CHAPTER 9 PROTOTYPING TECHNIQUES 9 1 WHY PROTOTYPE? 9 2 OK, SO YOU WANT TO PROTOTYPE 9 3 TOOLS OF THE TRADE 9 4 STEPS FOR PROTOTYPING CHAPTER 10 AVR PROJECT SMART DICE: A DICE WITH AN ATTITUDE 10 1 AT A GLANCE 10 2 INTRODUCTION 10 3 DESIGN ISSUES: SPECIFYING THE REQUIREMENT 10 4 DESIGN DESCRIPTION 10 5 POSSIBLE ALTERNATIVES 10 6 CODE DEVELOPMENT 10 7 FABRICATION 10 8 TESTING 10 9 USAGE 10 10 POWER CONSUMPTION CHAPTER 11 AVR PROJECT A MORSE KEYER 11 1 AT A GLANCE 11 2 INTRODUCTION 11 3 DESIGN SPECIFICATION 11 4 DESIGN DESCRIPTION 11 5 POSSIBLE ALTERNATIVES 11 6 FABRICATION 11 7 DESIGN CODE 11 8 TESTING THE SYSTEM CHAPTER 12 AVR PROJECT A SIMPLE DUAL-CHANNEL VOLTMETER 12 1 AT A GLANCE 12 2 INTRODUCTION 12 3 DESIGN DESCRIPTION 12 4 USAGE 12 5 FABRICATION 12 6 DESIGN CODE CHAPTER 13 AVR PROJECT THE UBIQUITOUS KITCHEN TIMER 13 1 AT A GLANCE 13 2 INTRODUCTION 13 3 DESIGN DESCRIPTION 13 4 POSSIBLE ALTERNATIVES 13 5 FABRICATION 13 6 DESIGN CODE 13 7 TESTING CHAPTER 14 AVR PROJECT RADIO BEACON CONTROLLER 14 1 AT A GLANCE 14 2 INTRODUCTION 14 3 DESIGN SPECIFICATIONS 14 4 DESIGN DESCRIPTION 14 5 FABRICATION 14 6 DESIGN CODE 14 7 TESTING CHAPTER 15 AVR PROJECT ASTRODAT: A STAND-ALONE DATA ACQUISITION SYSTEM 15 1 AT A GLANCE 15 2 INTRODUCTION 15 3 DESIGN DESCRIPTION FOR THE SNIFFSTICK 15 4 USING THE SNIFFSTICK 15 5 ASTRODAT: A COMPLETE DAS FOR ASTRONOMICAL APPLICATION 15 6 ASTRODAT USER INTERFACE 15 7 DESIGN DESCRIPTION 15 8 SYSTEM DEVELOPMENT 15 9 FABRICATION 15 10 DESIGN CODE 15 11 DATA READOUT 15 12 ASTRODAT USER’S GUIDE CHAPTER 16 AVR PROJECT SECURITY DONGLE 16 1 AT A GLANCE 16 2 INTRODUCTION 16 2 1 WHAT ARE SECURITY LOCKS? 16 2 2 VARIOUS HARDWARE LOCK SCHEMES 16 3 HOW TO BUILD AN ELECTRONIC LOCK 16 4 DESIGN DESCRIPTION 16 5 POSSIBLE ALTERNATIVES 16 6 FABRICATION 16 7 DESIGN CODE 16 8 TESTING CHAPTER 17 AVR PROJECT A PULSE FREQUENCY COUNTER WITH AN RS-232 INTERFACE 17 1 AT A GLANCE 17 2 INTRODUCTION 17 3 HOW DOES A FREQUENCY COUNTER WORK? 17 4 HOW DOES A PERIOD COUNTER WORK? 17 5 DESIGN DESCRIPTION OF AN AVR-PROCESSOR-BASED FREQUENCY COUNTER 17 6 USAGE 17 7 FABRICATION 17 8 DESIGN CODE 17 9 TESTING CHAPTER 18 AVR PROJECT SA-RE-GA FOLLOW ME: A MUSICAL TOY 18 1 AT A GLANCE 18 2 INTRODUCTION 18 3 DESIGN DESCRIPTION 18 4 FABRICATION 18 5 DESIGN CODE CHAPTER 19 AVR PROJECT AVR PROTOBOARD™ FOR NUTS™ 19 1 AT A GLANCE 19 2 INTRODUCTION 19 3 DESIGN DESCRIPTION CHAPTER 20 IDEAS FOR PROJECTS 20 1 AT90S2343 CONTROLLER BASED CODE AUTHENTICATOR 20 2 A CCD CAMERA CONTROLLER 20 3 PERSONAL TEMPERATURE LOGGER 20 3 1 CONFIGURING THE TEMPERATURE LOGGER 20 3 2 EXTRACTING DATA 20 4 SWIPE CARD READER 20 5 IBM PC KEYBOARD DECODER 20 6 A MORSE CODE TUTOR