Wolfgang Trampert AVR-RISC MikroController Architektur, Hardware-Ressourcen, Befehlsvorrat, Programmierung, Applikationen Mit 200 Abbildungen und 47 Tabellen 2. Auflage Franzis
9 Inhalt Einführung 13 1.1 Die RISC-Architektur 13 1.2 Die Mitglieder der AVR-Basic Line 16 Überblick 17 2.1 Grundlegende Leistungsmerkmale der AVR-Familie 17 2.2 Blockschaltbilder des AT90S1200 und des AT90S8515 21 2.3 Gehäusebauformen und Anschlußbelegung 23 2.4 Die Erzeugung des Systemtaktes «P der AVR Basic Line 25 2.4.1 Der integrierte Quarzoszillator der AVR Basic Line 26 2.4.2 Generierung des Systemtaktes durch den integrierten RC-Oszillatorschaltkreis 26 2.5 Programmerstellung für AVR-Controller in der Hochsprache C 27 CPU (Central Processing Unit) und interne Speicher (On-Chip-Memory) 33 3.1 Systemsteuerung und ALU (Arithmetic Logic Unit) 33 3.2 Das statische RAM (SRAM)... 33 3.2.1 Der Registerbereich 36 3.2.2 Der Ein-/Ausgabe- (I/O-) Bereich 37 3.2.3 Das interne SRAM 42 3.2.4 Das externe SRAM 43 3.2.5 Der Stack der AVR Basic Line 46 3.3 Der Befehlsspeicher (Flash-EPROM Technologie) 50 3.4 Der Speicher für nichtflüchtige Daten (EEPROM Technologie) 55 3.5 Die verschiedenen Adressierungsmöglichkeiten von Programm- und Datenbereichen 63 3.5.1 Direkte Adressierung eines einzelnen Registers 63 3.5.2 Direkte Adressierung zweier Register Rd und Rr 64 3.5.3 Direkte Adressierung des I/O-Bereichs 64 3.5.4 Direkte Adressierung des Datenspeichers (SRAM) 65 3.5.5 Indirekte Adressierung des Datenspeichers (SRAM) 66 3.5.6 Indirekte Adressierung eines Registers beim AT90S1200 67 3.5.7 Indirekte Adressierung des Datenspeichers mit Post-Increment 68 3.5.8 Indirekte Adressierung des Datenspeichers mit Pre-Decrement 69 3.5.9 Indirekte Adressierung des Datenspeichers mit Displacement 70 3.5.10 Adressierung von Konstanten im Programmspeicher 71 3.5.11 Direkte Adressierung des Programmspeichers (jmp- und call-befehle) 72 3.5.12 Indirekte Adressierung des Programmspeichers (i jmp- und ical 1 -Befehle) 73
10 Inhalt 3.5.13 Relative Adressierung des Programmspeichers (rjmp- und real 1-Befehle) 74 3.6 RESET und Interrupt-Verarbeitung 75 3.7 Die Ruhezustände (Sleep Modes) der CPU 88 4 Die Zeitgeber/Zähler (Timer/ Counter) der AVR Basic Line 91 4.1 Der Vorteiler (Prescaler) und die Timer-Steuerlogik 91 4.2 Der 8-Bit Zeitgeber / Zähler T/CO 93 4.3 Der 16-Bit Zeitgeber / Zähler T/C1 95 5 Der Watchdog Timer 111 6 Asynchrone Datenübertragung über den UART (Universal Asynchronous Receiver/Transmitter) 115 7 Synchrone Datenübertragung über das serielle periphere Interface (SPI) 129 8 Serielle Datenübertragung über den I 2 C - Bus 141 9 Der integrierte Analog-Komparator 155 10 Die Ein-/Ausgabeports (I/O-Ports) 159 11 Die Programmierung der Speicher 169 11.1 Der parallele Programmiermodus 171 11.2 Der serielle Programmiermodus 181 12 Der Befehlsvorrat 187 12.1 Übersicht der AVR - Befehle 195 12.2 Beschreibung der/41//?- Befehle 207 13 Der Assembler 265 13.1 Installation des /WR-Assemblers 269 13.2 Assembler - Syntax 270 13.3 Die Bedienung des /4W?-Assemblers 271 13.4 Fehlersuche 273 13.5 Assembler - Direktiven 274 13.6 Ausdrücke (Expressions) 284 13.6.1 Operanden 285 13.6.2 Funktionen 285 13.6.3 Operatoren 286 14 Das AVR-Studio - ein Simulator zum Debugging eigener Programme 291 14.1 Installation des AVR-Studios 291 14.2 Überblick 292 14.3 Die Fenster des /4W?-Studios 294 14.3.1 Das Source Window 294 14.3.2 Das Register Window 295 14.3.3 Das Processor Window 295 14.3.4 Die Memory Windows 296
Inhalt 11 14.3.5 Das I/O Window 298 14.3.6 Das Waten Window 301 14.3.7 Das Trace Window 302 14.3.8 Das Message Window 302 14.4 Die Menüs des /4Vß-Studios 302 14.4.1 Das Datei-Menü <File> 302 14.4.2 Das»Bearbeiten«-Menü <Edit> 303 14.4.3 Das Menü <Debug> zur Steuerung des Programmablaufs 303 14.4.4 Das»Breakpoint«-Menü 304 14.4.5 Das»Trace & Triggers«- Menü 305 14.4.6 Das»Waten«- Menü 305 14.4.7 Das»Options«- Menü 306 14.4.8 Das»Views«- Menü 306 14.5 Die I/O-Module des Simulators 307 15 Das AVR-Starter-Kit STK200 zum Austesten und zur Programmierung selbsterstellter Software in den Speicher 309 15.1 Beschreibung der STK200- Hardware 310 15.1.1 Die Spannungsversorgung des STK200 311 15.1.2 Die Brown Out - Erkennung des STK200 312 15.1.3 Die Funktion der Jumper des STK200 313 15.1.4 Die Port-Anschlüsse des STK200 313 15.1.5 Die ISP-Schnittstelle des STK200 315 15.1.6 Die RS232-Schnittstelle des STK200 315 15.1.7 Das LCD-Interface des STK200 316 15.1.8 Der On-Board - Quarzoszillator des STK200 318 15.1.9 Die acht Anzeige-LEDs auf dem STK200 318 15.1.10 Die acht Tastenschalter auf dem STK200 319 15.1.11 Die Erweiterung des RAM-Speichers auf dem STK200 319 15.2 Die Software des STK200 319 15.2.1 Die Menüs der ISP-Software 320 15.2.2 Die Symbolleiste der ISP-Software 322 16 Applikationen der AVR-Familie 323 16.1 Tools zur BCD-Arithmetik 323 16.2 Grundlegende Ein-/Ausgabe-Operationen 331 16.3 Anschluß eines LCD-Moduls 338 16.4 Ausgabe eines Impulses definierter Länge mittels T/C0 356 16.5 Software-Autoreload für T/C0 359 16.6 Erzeugung einer quarzgenauen Frequenz von 50 Hz mit. einem Tastgrad von 0,025 mittels T/C1 363 16.7 Ein 3-kanaliger D/A-Wandler mit einer Auflösung von 10 Bit 367 16.8 Ein 4-kanaliger Dual-Slope A/D-Wandler mit einer Auflösung von 11 Bit mittels T/C1 380 16.9 Software-Realisierung eines UARTs für den AT90S1200 390 16.10 Anschluß des DAC-Bausteins MAX5154 an einen AT90S8515 via SPI 399 16.11 Erweiterung der I/O-Ports des AT90S4414 über die SPI-Schnittstelle 407 16.12 Software-Realisierung der SPI-Schnittstelle für den AT90S1200 zum Anschluß des A/D-Wandlers TLV1572 414
12 Inhalt 16.13 Betrieb des Temperatursensors LM75 über den l 2 C-Bus 419 16.14 Betrieb des4-digit LED-Treibers SAA1064 über den l 2 C-Bus 425 16.15 Ein AVR als l 2 C-Master zur Ansteuerung der Slavesaus16.13und 16.14 429 17 Anhang 445 17.1 Charakteristische Daten und Grenzwerte der /4W?-Familie 445 17.2 Errata (von ATMEL dokumentierte Fehlfunktionen und Abhilfen) 445 Inhalt der mitgelieferten CD-ROM 447 Adressen 451 Literaturverzeichnis 452 Stichwortverzeichnis 455