Inhalt
Kapitel 1. Einführung oder die neuen Mitglieder der AVR-Familie (11)
- Beispiele für das Buch (12)
- XMEGA-Mikrocontroller (12)
- XMEGA und andere AVRs (15)
- Compiler (15)
- Neue Peripherie (16)
Kapitel 2. Erste Schritte – Installation der Umgebung (21)
- Xplained als Entwicklungsboard (22)
- Xplained auf einem System installieren (22)
- Installieren von XMEGA mit dem Bootloader der DFU-Klasse (25)
- XMEGA-Chip-Programmierung (25)
- Laden der Firmware über FLIP (26)
- Atmels Bootloader (28)
- Grundlegende Optionen für Batchisp (28)
- JTAG-Schnittstelle (32)
- Programmierung mit der PDI-Schnittstelle (34)
- Programmierer (34)
- AVRISP mkII (35)
- JTAGICE mkII (35)
- JTAGICEIII (36)
- AVREins! (36)
- AVR-Drache (36)
- Programmieren und Debuggen von XMEGA-Prozessoren (43)
- Leistungsentkopplung (44)
- Gewünschte Software installieren (44)
- Atmel Studio 6 - Grundlagen (45)
- Programmieren ab AS6-Ebene - warum Sie Dateien im elf-Format verwenden sollten (53)
Kapitel 3. Projektorganisation und -management (55)
- Kommentare (55)
- Nomenklatur (57)
- Brechen Sie Ihren Code in Dateien auf 61
- Sichtbarkeit der Funktion
- Sichtbarkeit von Variablen (66)
- Unterverzeichnisse (67)
- Funktionsgliederung 69
- Globale Variablen
- Versionierungssysteme (74)
- SVN-Server auf eigenem Rechner (75)
- So verwenden Sie SVN (78)
- Arbeiten mit SVN
- Schlussbemerkungen (84)
- Andere Einrichtungen (85)
- Wie schreibt man bessere Programme? (86)
Kapitel 4. Wie man ein besseres und effizienteres Code-Rezept erstellt
- Optimierung aktivieren (90)
- Typenlänge (91)
- Globale Variablen und lokale Variablen 93
- Der Registermodifikator (94)
- Verwenden von globalen Mehrzweckregistern
- Verwendung anderer Register als GPIOR
- Globale Variablen initialisieren 99
- Position von Variablen im Speicher 99
- Loop-Optimierung
- Funktionsoptimierung 101
- Optimierung der Hauptfunktion 101
- Optimierung von Prologen und Epilogen von Funktionen (101)
- Optimierung der Übergabe von Funktionsparametern 102
- Optimieren von Funktionsrückgaben 105
- Zusätzliche Funktionsattribute
- Andere (110)
- Entfernung von totem Code 111
- Konstruktoren und Destruktoren 114
Kapitel 5. Wie man Chaos oder komplexe Datentypen und Listen anordnet (117)
- Arrays (118)
- Strukturen (119)
- Tiefe Kopie und flache Kopie (123)
- Zeiger und Strukturen 126
- Anonyme Strukturen 127
- Initialisierung von Strukturfeldern
- Einheit (129)
- Bitfelder (130)
- Strukturen und Programmoptimierung (131)
- Listen (135)
- One-Way-Listen
- Bidirektionale Listen
- XOR-Listen 142
- Puffer (148)
- Ringpuffer (149)
- FIFO / LIFO-Warteschlangen (152)
- Stapel (152)
Kapitel 6. Das Ende des Schlamassels oder die Namen der Register und peripheren Systeme (155)
- Strukturen, die XMEGA-Mikrocontroller beschreiben
- Namen registrieren
- Bitnamen 162
Kapitel 7. Besser und einfacher oder CPU-IO-Ports auf Steroiden (167)
- Eingangs- und Ausgangspins (168)
- Umwandlung von Logikpegeln zwischen Schaltkreisen, die mit unterschiedlichen Versorgungsspannungen arbeiten (171)
- Anschluss des Prozessorausgangs an eine Schaltung, die mit 5 V arbeitet (171)
- Verwenden eines aktiven Konverters 174
- Umwandlung von Hoch- in Niederspannung (174)
- Widerstandsteiler (176)
- Verwenden der integrierten Pufferspannungswandlung 177
- Bidirektionaler Puffer, der in Open-Drain-Bussen verwendet wird (178)
- Kontrolle über CPU-Ports
- Eingangs- und Ausgangspins (182)
- Synchronisierer (184)
- Pin-Treiberkonfiguration (186)
- Totempfahl-Konfiguration (186)
- Pull-Up / Down-Konfiguration (187)
- Bus-Keeper-Konfiguration (188)
- Wired-AND-Konfiguration
- Wired-OR-Konfiguration (191)
- Invertieren der IO-Ausgänge (192)
- Steuerung der Sinkrate und Steigung (193)
- Überprüfen von Pin-Ereignissen 193
- Hafenkontrollregister (194)
- Modifikation des Atom-Pin-Zustands und RMW-Unterstützung (196)
- Alternative Pin-Funktionen
- Virtuelle Ports (200)
- Übergeben eines Registers als Funktionsparameter 202
- E/A-Ausgänge neu zuordnen 203
Kapitel 8 NVM-Controller - wie man Speicher auf einfache und angenehme Weise auswählt (205)
- EEPROM und verwandte Operationen (206)
- Zugriff auf EEPROM von AVR-libc (208)
- Zugriff auf EEPROM mit direktem Zugriff auf NVM-Controller (213)
- Wear-Leveling-Techniken (219)
- Trennung von Lösch- und Schreibspeicher (221)
- Zugriff auf EEPROM mit Tokens (224)
- EEPROM und Stromausfall (232)
- Das Atomizitätsproblem beim Zugriff auf EEPROM 244
- Schreiben in EEPROM mit Interrupts (244)
- Vermeidung einer Beschädigung des EEPROM-Speichers (246)
- Zugriff auf FLASH-Speicher (246)
- Datentypen in Bezug auf FLASH-Speicher 248
- Lesen von Daten aus FLASH-Speicher (250)
- FLASH-Zugriff in avr-gcc 4.7 und höher - benannte Adressräume (252)
- Zeiger, die Adressräume verwenden 254
- 24-Bit-Typen
Kapitel 9. Ich brauche mehr Strom – Ein paar Worte zur Uhrenkonfiguration 259
- Uhrensteuerregister (260)
- Uhreinstellung (262)
- Taktquellen (263)
- Taktquelle entsperren (270)
- PLL-Chip (270)
- DFL (272)
- Externes Uhrenüberwachungssystem (275)
- Taktquelle und -frequenz ändern 277
- Sperren der Uhreinstellungen (277)
- Taktvorteiler (278)
- Kommentare (281)
- Entkopplungskondensatoren (282)
Kapitel 10. Interrupts und der Interrupt-Checker 285
- Unterbrechungen (285)
- Was sind Interrupts? (285)
- Maskieren von Interrupts (286)
- Nicht maskierende Unterbrechungen 287
- Unterbrechungsquellen 287
- Konfigurieren und Behandeln von Interrupts
- Reaktionszeit unterbrechen (288)
- Der Interrupt-Handler 289
- Interrupt-Vektoren
- Leere Unterbrechungsvektoren 292
- Leere Unterbrechungen 293
- Teilen von Code unter Verwendung von Interrupts 294
- Das nackte Attribut und die Unterbrechungsbehandlung in der Assemblierung
- Unterbrechungsebenen 297
- Unterbrechende Unterbrechungen (300)
- Unterbrechungsprioritäten
- Dynamische Priorität 302
- Globales Interrupt-Freigabe-Flag (303)
- Nicht maskierender Interrupt
- Interrupt-Controller-Statusregister (304)
- Der flüchtige Modifikator 305
- Nachbestellungsanweisungen 307
- Die Atomarität des Datenzugriffs
- Anweisungen zur Modifikation des atomaren Gedächtnisses 311
- Zugriff auf Multibyte-IO-Register
- Die Reentrant-Funktionen 314
- Allzweck-IO-Register (316)
Kapitel 11. Das Ereignissystem
- Ereigniskanal-Multiplexerregister (320)
- Erweiterte Funktionen des Ereigniskanals
- Digitalfilter (322)
- Quadratur-Decoder (322)
- Index-Quadratur-Encoder (331)
- Software-Ereignissteuerung 332
- Ereignisse als Steuersignale für externe Systeme (333)
- Andere Registrierungsfunktionen
Kapitel 12. Timer und Zähler 337
- Was ist ein Zähler? (337)
- Taktquellen und Prescaler
- Zählertypen und Funktionen
- Zählerausgangspins (350)
- Zähler Typ 2 (351)
- Timer Typ 4/5 (353)
- Zwischenspeichern 354
- Kontrolle über den Zähler (357)
- Kaskadierende Zähler (358)
- Temporäres TEMP-Register (359)
- Verwendung von PWM zur Erzeugung analoger Signale (361)
- Beispiel – Erzeugen einer Spannung mit variabler Amplitude 363
- Beispiel – Generieren einer beliebigen Wellenform 364
- PWM und Interrupts (369)
- Oder vielleicht DMA? (371)
- Erweiterung 374 zur Erhöhung der Auflösung
- HiRes-Modus für einen Zählertyp 2 (377)
Kapitel 13. Der DMA-Controller 379
- Übertragung von Speicher zu Speicher (383)
- Invertieren von Daten 384
- Überlappende Speicherblöcke senden 385
- Speicher mit Mustern füllen 388
- Speicher-IO-Registerübertragung (389)
- Auslöser (392)
- Pufferarbeit
- DMA-Kanalprioritäten
- DMA-Interrupts
- DMA-Übertragungsfehler (397)
- Abbrechen Ende des Deals (398)
Kapitel 14. LEDs – was kann man aus ihnen herausholen? (399)
- LED-Streifen (399)
- Ein bisschen über die Eigenschaften des Auges, also RGB in der Praxis (403)
- Steuerprogramm (404)
- 7-Segment-LED-Anzeigen (407)
- LED-Matrizen (416)
- Leiterplattendesign und Stromversorgung (421)
- Wahl der Versorgungsspannung der Matrix (422)
- Diodenstromregelung (423)
- Zweifarbiges Matrixlayout 423
- Matrixsteuerung (425)
- Anders PWM, oder wie man Farbschattierungen bekommt (433)
Kapitel 15. Taktschaltungen in der Praxis 437
- Echtzeituhr oder ... Echtzeituhr? (438)
- 16-Bit-RTC-Chip (438)
- Synchronisation des Zugriffs auf RTC-Register (441)
- PER- und COMP-Register (442)
- RTC im Schlafmodus (445)
- 32-Bit-RTC-Chip (445)
- Taktsignalgenerator (445)
- PER- und COMP-Register (445)
- CNT-Register (446)
- Beispielkalenderprogramm (446)
- Linux-Timer-Marker 447
- Zeitumrechnung (447)
- Uhrzeit per Funk, z.B. DCF77 (451)
- Etwas mehr über DCF77 (452)
- Datendekodierung 454
- DCF77-Empfängermodul (454)
- Beispiel (455)
- Krafthaltesystem (462)
- Auswahl einer Notstromquelle (463)
- Batterieverbrauch (463)
- Superkondensatoren (463)
- Wiederaufladbare Batterien (464)
- Aufrechterhaltung der Stromversorgung für die gesamte CPU (465)
- Batterie-Backup-System (465)
Kapitel 16 Wir bauen einen Wecker oder einen endlichen Zustandsautomaten in der Praxis (469)
- Schalter-/gehäusebasiertes FSM 471
- Tabellenbasiertes FSM
- Wecker (477)
- Mehr über Zustandsmaschinen (489)
Kapitel 17. Verschiedene Arten der Kommunikation - oder USART in der Praxis (491)
- Die elektrische Implementierung der USART-Schnittstelle (492)
- Datenübertragungsformat (494)
- Bitrate (496)
- Klemme (496)
- Vorschau Datenübertragung (497)
- Virtueller serieller Port (499)
- Schnittstellenkonfiguration (500)
- IO-Pin-Konfiguration (501)
- Konfigurieren des DataFrame-Formats (502)
- Zusatzfunktionen der Schnittstelle (502)
- Schnittstellengeschwindigkeitseinstellung (503)
- Datenvalidierung 508
- Datenübertragung (509)
- Umsetzung der Übertragung durch Pooling (509)
- Verwenden von Interrupts (512)
- Verwenden von DMA 517
- Gleichzeitiger Zugriff auf USART von mehreren "Threads" (525)
- Zugriff auf USART über Streams
- Die Get-Methode (528)
- Die Put-Methode 528
- Öffnen des Streams (529)
- MPCM-Modus (530)
Kapitel 18. Datenvisualisierung 535
- Atmel Datenvisualisierer (535)
- Datenformat (537)
- Von ADV verwendete Strukturen (540)
- Ultraschall-Abstandsmessung (543)
- Digitalmodule (544)
- Benutzerdefiniertes Modul (548)
- Wir bauen einen Logikanalysator (550)
- Ausrüstung (551)
- Kommunikationsprotokoll (553)
- Protokollimplementierung 555
- Wie schnell zu probieren? (560)
- Kunde (564)
- Praktische Hinweise (566)
Kapitel 19. Verwendung von Infrarot zur Datenübertragung 569
- IR-Modulation (570)
- Reden wir mit der TV-Fernbedienung (572)
- Der Hardwareteil, d. h. der IR-Empfänger (572)
- Der Softwareteil oder die Kodierungsstandards 574
- NEC-Standard und verwandte (575)
- RC5 und Motorola (581)
- RC5-Code (587)
- Andere Kodierungsstandards
- IR-Sender (592)
- Reverse Engineering - Wir decodieren das Fernbedienungssignal der Canon-Kamera (595)
- Datenübertragung (597)
- Wir bauen ein Datenpaket (600)
- Hardware-CRC-Generator (602)
- CRC von Software gezählt (604)
- Paketübertragung (605)
- Universal-Fernbedienung (608)
- IrDA- und IRCOM-Schnittstelle (613)
Index (615)
|