Inhalt Einführung (11) - Beispielcodes (12)
- Diagramme (12)
- Erforderliche Teile (12)
Kapitel 1. Installieren der Umgebung und der erforderlichen Tools (15) - Installation von WinAVR (16)
- Installation von AVR Studio (17)
- GNU / Linux-Systeme (18)
- AVR-Studio (19)
- Erstanwendung (21)
- Dateien zu einem Projekt hinzufügen (25)
- Dienstprogramme (27)
- Linker (27)
- AVR-Größe (31)
- Das avr-nm-Programm (32)
- Avr-Objektkopie
- Das Make-Programm (36)
- Ergebnisdateien (43)
- Bibliotheken (46)
- Bibliotheksdesign (47)
- Bibliothekserstellung (48)
- Einbinden einer Bibliothek in ein Programm (49)
- Veraltete Funktionen (50)
- Bibliotheksfunktionen überschreiben (50)
- Löschen unnötiger Funktionen und Daten 51
Kapitel 2. Programmierung des Mikrocontrollers (53) - Anschluss - allgemeine Bemerkungen (53)
- ISP-Programmierer (55)
- Programmiererstruktur (56)
- USBASP-Programmierer (59)
- Mehrere Prozessoren in einem Chip (59)
- JTAG-Programmierer (60)
- JTAGICE Programmierer (61)
- JTAGICE mkII Programmierer (62)
- Mehrere Prozessoren in einem Chip (62)
- AVR-Drache (63)
- HW- und Parallelprogrammierer (63)
- TPI-Modus (64)
- Programmieren des Prozessors in AVR Studio (64)
- Programmierung mit Tools von Atmel (65)
- AVRDUDE-Programm (67)
- PonyProg-Programm (70)
- Fusebits und Lockbits in AVR-libc (70)
- Lockbits (71)
- Sicherungen (71)
- Unterschrift (74)
- Lockbits in AVR-libc (74)
- Sicherungen in AVR-libc (75)
Kapitel 3. C Grundlagen zu AVR - Arithmetik (77)
- Einfache Datentypen
- Festpunktarithmetik (81)
- Gleitkomma-Arithmetik (87)
- Bitweise Operationen
- Binäre Darstellung von Zahlen 95
- Die Bitproduktoperation 96
- Bitsummenoperation 97
- Ohne Summenoperation 98
- Die bitweise Negationsoperation 99
- Bitverschiebungsoperationen (100)
- Variabler Umfang (100)
- Globale Variablen 101
- Lokale Variablen 102
- Const-Modifikator 103
- Blinker (104)
- Arrays (109)
- Eigenschaften (112)
- Übergabe von Parametern nach Wert und Referenz 114
- Funktionsaufruf (114)
- Rekursive Funktionsaufrufe
- Schlüsselwörter (116)
- Betreiber
- Steueranweisungen (120)
- Der Präprozessor (123)
- Die #include-Richtlinie 124
- Bedingte Kompilierungsanweisungen
- Die #define-Direktive 126
- Header- und Quelldateien (127)
- Definition versus Deklaration
- Das statische Schlüsselwort 129
- Das Schlüsselwort extern (130)
- Die Inline-Richtlinie 132
- Registermodifikator (136)
Kapitel 4. Programmabschnitte 141 - Datenabschnitte (142)
- .Textabschnitt 142
- .Datenabschnitt 142
- .Bss Abschnitt 143
- .Eeprom Abschnitt 143
- Programmcodeabschnitte (144)
- .Init Unterabschnitte [0-9] (144)
- .Fini Unterabschnitte [0-9] (145)
- Sondersektionen (146)
- Vom Entwickler erstellte Abschnitte
- Abschnitte an einer bestimmten Adresse platzieren (147)
Kapitel 5. Kernsteuerung und Energieverwaltung (149) - RESET-Signalquellen (149)
- Einschalt-Reset (150)
- Externes RESET-Signal (151)
- Brownout-Detektor (151)
- Watchdog-Schaltung (152)
- Stromverbrauchsmanagement (156)
- Prozessorruhe (157)
- BOD deaktivieren (157)
- Deaktivieren von CPU-Subsystemen
- Uhrenvorzähler (159)
- Andere Möglichkeiten zur Minimierung des Energieverbrauchs 160
Kapitel 6. Dynamische Speicherzuweisung 163 - Speicherzuweisung in der AVR-libc-Bibliothek 164
- Die malloc-Funktion 166
- Die Calloc-Funktion 166
- Die Realloc-Funktion 166
- Die freie Funktion (168)
- Speicherlecks und Missbrauch von dynamisch zugewiesenem Speicher
- Wie ein Allokator funktioniert 171
- Heap- und Stack-Kollisionen erkennen 172
- Methode I - Benutzerdefinierte Speicherzuweisungsfunktionen 173
- Methode II - Überprüfen des verfügbaren Speichers 173
- Methode III - Marker (173)
- Methode IV - Erinnerungsmuster (173)
- Die V-Methode - Verwenden der JTAG-Schnittstelle 176
Kapitel 7. Onboard-EEPROM (177) - Verhinderung von EEPROM-Korruption (178)
- EEPROM Lese- und Schreibsteuerung (179)
- Lesen des Inhalts einer Speicherzelle (180)
- Schreiben auf Speicherplatz (180)
- Zugriff auf EEPROM von AVR-libc (181)
- Datendeklarationen im EEPROM (182)
- Funktionen, die auf EEPROM zugreifen (183)
- Andere Funktionen, die auf EEPROM arbeiten
- Wear-Leveling-Techniken (186)
Kapitel 8. Zugreifen auf den FLASH-Speicher 189 - Datentypen in Bezug auf FLASH-Speicher 190
- Daten aus FLASH-Speicher lesen (191)
- Zugriff auf FLASH-Speicher ᡸ kB (192)
Kapitel 9. Die XMEM-Schnittstelle 193 - Verwenden von externem SRAM in einem Programm (197)
- Konfiguration I - es gibt nur einen speziellen Abschnitt im externen Speicher (198)
- Konfiguration II - alle Abschnitte im externen Speicher, Stack im internen Speicher (199)
- Konfiguration III - nur ein Heap befindet sich im externen Speicher (201)
- Konfiguration IV - in externem Speicherhaufen und Segment definiert durch Programmierer (202)
- V-Konfiguration - es gibt einen Stack im externen Speicher (208)
- ROM als externer Speicher (208)
Kapitel 10. Zugriff auf 16-Bit-IO-Register (211) - Zugriff auf das 16-Bit-ADC-Register (211)
- Zugriff auf 16-Bit-Timer-Register (213)
Kapitel 11. Verzögerungen (217) Kapitel 12. Zugriff auf Prozessor-IO-Ports 221 - IO-Pin-Konfiguration (221)
- Manipulation des IO-Pin-Zustands (225)
- Ändern des Status eines Ports in das Gegenteil
- Einstellen der IO-Leitung (226)
- Zurücksetzen der IO-Leitung 226
- Makrodefinition _BV () 227
- Verwenden von Bitfeldern 227
- Synchronisierer (228)
- Praxisbeispiele 230
- Steuerung der 7-Segment-Anzeige (230)
- Tastenanschluss (232)
- Drehgeber (237)
- Matrix-Tastatur (242)
Kapitel 13. Allzweck-IO-Register - Verwendung anderer Register als GPIOR 246
Kapitel 14. Unterbrechungen 249 - Interrupt-Behandlung
- sei () / cli () (254)
- Das nackte Attribut und die Unterbrechungsbehandlung in der Assemblierung
- Der flüchtige Modifikator 257
- Die Atomarität des Datenzugriffs
- Die Reentrant-Funktionen 266
- Praxisbeispiele (268)
- Multiplexanzeige (268)
- Multiplex-Display mit Display-Helligkeitssteuerung (272)
- Tastenbedienung (276)
- Encoder-Unterstützung (279)
- Matrix-Tastatur (280)
Kapitel 15. Analog-Digital-Wandler (283) - Referenzspannungsauswahl (284)
- Multiplexer (285)
- ADC-Wandler (285)
- Einzelumwandlungsmodus 286
- Kontinuierlicher Konvertierungsmodus 287
- Einzel- und Differenzeingänge (287)
- Ergebnis (288)
- Auslöser (288)
- Blockieren digitaler Eingänge (289)
- ADC unterbricht (289)
- Präzise Messungen mit ADC (290)
- Oversampling (291)
- Mittelung (292)
- Dezimierung und Interpolation 292
- Beispiele (292)
- Analoges Thermometer LM35 (293)
- Schlüssel (295)
Kapitel 16. Der analoge Komparator 301 - Zusatzfunktionen (302)
- Stiftverriegelung (302)
- Auslösen von Timer-Ereignissen (302)
- Auswahl des Komparatoreingangs (302)
- ADC-Triggerung (303)
Kapitel 17. Zeitgeber (305) - Taktsignal (306)
- Internes Taktsignal (306)
- Externes Taktsignal (308)
- Zähler (308)
- Datenvergleichssystem 309
- Beeinflusst die IO-Pins 309
- Externer Ereignis-Interceptor (310)
- Geräuschunterdrückung (311)
- Ein Komparator als Trigger für ein ICP-Ereignis
- Timer-Modi (312)
- Einfacher Modus (312)
- CTC-Modus (315)
- PWM-Modi (316)
- Schutzschaltung (321)
- Ausgangssignalmodulator (322)
- Frequenz- und Tastmesser (323)
- Ausführen von RTC mit einem Timer (326)
- Hardwarerealisierung (327)
- Programmausführung (328)
Kapitel 18. Handhabung von LCDs (331) - Unterstützung für alphanumerische Anzeigen (332)
- Bibliotheksfunktionen 337
- Eigene Charaktere definieren 342
- Beispiel - Menü (345)
- Grafikdisplay-Unterstützung (354)
Kapitel 19. Die USART-Schnittstelle 367 - Serielle Schnittstellen (367)
- USART-Schnittstelle (368)
- USART-Schnittstelle des AVR-Mikrocontrollers (371)
- Beispiele (375)
- Mikrocontroller - PC-Anbindung (375)
- RS485 (383)
Kapitel 20. Die SPI-Schnittstelle 391 - Schnittstelleninitialisierung
- IO-Pin-Einstellung (395)
- Uhr (396)
- Prozessor im Master-SPI-Modus (396)
- Prozessor im SPI-Slave-Modus (397)
- Beispiele (397)
- AVR-AVR-Verbindung (397)
- AVR-Verbindung – Serielles Register (403)
- USART-Schnittstelle im SPI-Modus (408)
- Timing des SPI-Busses (409)
- SPI-Modus (409)
- Datenrahmenformat (409)
- Schnittstellenkonfiguration (410)
Kapitel 21. Die TWI-Schnittstelle (413) - Multimaster-Modus (416)
- Schnittstelleninitialisierung 417
- Prozessor im I2C-Mastermodus (417)
- START- und STOP-Bits (417)
- Basisfunktionen für die Zusammenarbeit mit I2C (418)
- Zusammenarbeit mit externem EEPROM-Speicher (422)
- Zusammenarbeit mit externem FRAM-Speicher (427)
- Variablen im externen EEPROM speichern (427)
- Zusammenarbeit mit der RTC-Uhr (431)
- Unterstützt IO-Expander PCF8574 (436)
- Prozessor im I2C-Slave-Modus (437)
Kapitel 22 Die USI-Schnittstelle 447 - Der 4-Bit-Zähler und die Uhr 447
- USI-Interrupts
- Änderung der Stiftposition (449)
- Verwendung der USI-Schnittstelle im SPI-Modus 449
- SPI-Mastermodus (451)
- SPI-Slave-Modus (452)
Kapitel 23. Die USB-Schnittstelle 453 - Leistung (454)
- Datensignale (455)
- VID und PID (456)
- USB-Schnittstelle realisiert mittels Konverter (458)
- Softwareimplementierte USB-Schnittstelle (459)
- Elektrischer Anschluss (460)
- Zugriff auf PC (460)
- Software-USB-zu-AVR-Schnittstelle (461)
- Hardware-USB-Schnittstelle (464)
Kapitel 24: Die 1-Wire-Schnittstelle 465 - 1-Wire-Master-Implementierung auf AVR (469)
- 1-Wire-Master-Implementierung mit IO-Pins (469)
- 1-Wire-Master-Implementierung unter Verwendung der USART-Schnittstelle (472)
- High-Level-1-Wire-Handling-Funktionen 477
- Digitalthermometer DS1820 (480)
Kapitel 25 Der Bootloader 483 - NRWW- und RWW-Erinnerungen (483)
- Bootloader-Konfigurationsbits (485)
- Lockbits-Konfiguration aus der Anwendung (486)
- FLASH-Speicherprogrammierung (487)
- Verwenden von Interrupts im Bootloader-Code 489
- Löschen einer Interrupt-Vektortabelle
- Abschneiden der Unterbrechungsvektortabelle
- Bootloader booten (496)
- Verwendung eines zusätzlichen Tasters / Jumpers (496)
- Verwenden von Markern im EEPROM (497)
- Warten auf ein Sonderzeichen im ausgewählten Kommunikationskanal (498)
- Bewerbungsstart (499)
- Anwendungscode und Bootloader teilen (499)
- Aufrufen von Bootloader-Funktionen auf ATMega256x (501)-Prozessoren
- Aufruf von im Bootloader-Code enthaltenen Interrupt-Handlern (505)
- Gemeinsame Nutzung von Variablen zwischen Anwendung und Bootloader (505)
- AVR-Mikrocontroller mit eingebettetem Bootloader (507)
Kapitel 26 Programmintegrität prüfen 509 - Prüfsumme (509)
- CRC (511)
- Automatische CRC-Generierung
Kapitel 27. Codesicherheit (517) - Methoden der Sicherheitsverletzung 517
- Anwendungen sicher aktualisieren (518)
- Hinweis AVR231 - AES-Bootloader (519)
- Setzen der Konfigurationsbits (524)
- Bewerbungsvorbereitung (526)
- Update laden (527)
Kapitel 28. Kombinieren von C und Assemblercode 529 - Das Schlüsselwort asm (530)
- Arten von Operanden
- Zugriff auf IO-Ports (533)
- Zugriff auf Multibyte-Daten
- Zugriff auf Indikatoren (534)
- Liste der modifizierten Register (535)
- Assemblerspracheneinfügung 535 wiederverwenden
- .S-Dateien
- Verwenden von Registern in Assembly
- Beispiele (541)
Kapitel 29. Optimieren und Debuggen eines Programmrezepts - Optimierung eines Programms
- Compiler-Optionen zur Optimierung
- Optimierungsattribute
- Debuggen eines Programms
- Starten einer Debugger-Sitzung 553
- Erweiterte Kontrolle über den Verlauf der ausgeführten Anwendung (556)
Index (559) |