AVR-GCC-Tutorial
发布: 2009-6-15 12:28 | 作者: caolong | 来源: StmFans思蜕盟 OPELC 自由电子联盟
AVR-GCC-Tutorial
* 1 Vorwort
* 2 Benötigte Werkzeuge
* 3 Was tun, wenn's nicht "klappt"?
* 4 Erzeugen von Maschinencode
* 5 Einführungsbeispiel
* 6 Exkurs: Makefiles
o 6.1 Controllertyp setzen
o 6.2 Quellcode-Dateien eintragen
o 6.3 Programmiergerät einstellen
o 6.4 Anwendung
o 6.5 Sonstige Einstellungen
+ 6.5.1 Optimierungsgrad
+ 6.5.2 Debug-Format
+ 6.5.3 Assembler-Dateien
+ 6.5.4 Taktfrequenz
o 6.6 Eingabedateien zur Simulation in AVR-Studio
* 7 Ganzzahlige (Integer) Datentypen
* 8 Bitfelder
* 9 Grundsätzlicher Programmaufbau eines µC-Programms
o 9.1 Sequentieller Programmablauf
o 9.2 Interruptgesteuerter Programmablauf
* 10 Zugriff auf Register
o 10.1 Schreiben in Register
o 10.2 Verändern von Registerinhalten
o 10.3 Lesen aus Registern
o 10.4 Warten auf einen bestimmten Zustand
o 10.5 16-Bit Register (ADC, ICR1, OCR1, TCNT1, UBRR)
o 10.6 IO-Register als Parameter und Variablen
* 11 Zugriff auf IO-Ports
o 11.1 Datenrichtung bestimmen
o 11.2 Vordefinierte Bitnummern für I/O-Register
o 11.3 Digitale Signale
o 11.4 Ausgänge
o 11.5 Eingänge (Wie kommen Signale in den µC)
+ 11.5.1 Signalkopplung
+ 11.5.2 Interne Pull-Up Widerstände
+ 11.5.3 Tasten und Schalter
# 11.5.3.1 (Tasten-)Entprellung
* 12 Der UART
o 12.1 Allgemeines zum UART
o 12.2 Die Hardware
o 12.3 UART initialisieren
o 12.4 Senden mit dem UART
+ 12.4.1 Senden einzelner Zeichen
+ 12.4.2 Schreiben einer Zeichenkette (String)
+ 12.4.3 Schreiben von Variableninhalten
o 12.5 Empfangen
+ 12.5.1 einzelne Zeichen empfangen
+ 12.5.2 Empfang von Zeichenketten (Strings)
o 12.6 Interruptbetrieb
o 12.7 Software-UART
o 12.8 Handshaking
+ 12.8.1 Hardwarehandshake (RTS/CTS)
+ 12.8.2 Softwarehandshake (XON/XOFF)
o 12.9 Fehlersuche
o 12.10 Links
* 13 Analoge Ein- und Ausgabe
o 13.1 AC (Analog Comparator)
o 13.2 ADC (Analog Digital Converter)
+ 13.2.1 Der interne ADC im AVR
# 13.2.1.1 Die Register des ADC
# 13.2.1.2 Aktivieren des ADC
+ 13.2.2 Analog-Digital-Wandlung ohne internen ADC
# 13.2.2.1 Messen eines Widerstandes
# 13.2.2.2 ADC über Komparator
o 13.3 DAC (Digital Analog Converter)
+ 13.3.1 DAC über mehrere digitale Ausgänge
+ 13.3.2 PWM (Pulsweitenmodulation)
* 14 LCD-Ansteuerung
o 14.1 Das LCD und sein Controller
o 14.2 Anschluss an den Controller
o 14.3 Programmierung
* 15 Die Timer/Counter des AVR
o 15.1 Der Vorteiler (Prescaler)
o 15.2 8-Bit Timer/Counter
o 15.3 Timer-Bitzahlen verschiedener AVR's
o 15.4 16-Bit Timer/Counter
+ 15.4.1 Die PWM-Betriebsart
+ 15.4.2 Vergleichswert-Überprüfung (Compare Match)
+ 15.4.3 CTC-Betriebsart (Clear Timer on Compare Match)
+ 15.4.4 Einfangen eines Eingangssignals (Input Capturing)
o 15.5 Gemeinsame Register
* 16 Warteschleifen (delay.h)
o 16.1 avr-libc Versionen kleiner 1.6
o 16.2 avr-libc Versionen ab 1.6
* 17 Der Watchdog
o 17.1 Wie funktioniert nun der Watchdog?
o 17.2 Watchdog-Anwendungshinweise
* 18 Programmieren mit Interrupts
o 18.1 Anforderungen an Interrupt-Routinen
o 18.2 Interrupt-Quellen
o 18.3 Register
o 18.4 Allgemeines über die Interrupt-Abarbeitung
o 18.5 Interrupts mit dem AVR GCC Compiler (WinAVR)
+ 18.5.1 ISR
+ 18.5.2 Unterbrechbare Interruptroutinen
o 18.6 Datenaustausch mit Interrupt-Routinen
+ 18.6.1 volatile und Pointer
+ 18.6.2 Variablen größer 1 Byte
o 18.7 Interrupt-Routinen und Registerzugriffe
o 18.8 Was macht das Hauptprogramm?
* 19 Sleep-Modes
* 20 Speicherzugriffe
o 20.1 RAM
o 20.2 Programmspeicher (Flash)
+ 20.2.1 Byte lesen
+ 20.2.2 Wort lesen
+ 20.2.3 Strings lesen
+ 20.2.4 Floats und Structs lesen
+ 20.2.5 Array aus Strings im Flash-Speicher
+ 20.2.6 Vereinfachung für Zeichenketten (Strings) im Flash
+ 20.2.7 Flash in der Anwendung schreiben
+ 20.2.8 Warum so kompliziert?
o 20.3 EEPROM
+ 20.3.1 Bytes lesen/schreiben
+ 20.3.2 Wort lesen/schreiben
+ 20.3.3 Block lesen/schreiben
+ 20.3.4 EEPROM-Speicherabbild in .eep-Datei
+ 20.3.5 EEPROM-Variable auf feste Adressen legen
+ 20.3.6 Bekannte Probleme bei den EEPROM-Funktionen
+ 20.3.7 EEPROM Register
* 21 Die Nutzung von sprintf und printf
* 22 Assembler und Inline-Assembler
o 22.1 Inline-Assembler
o 22.2 Assembler-Dateien
o 22.3 Globale Variablen für Datenaustausch
+ 22.3.1 Globale Variablen im Assemblerfile anlegen
+ 22.3.2 Variablen größer als 1 Byte
* 23 Anhang
o 23.1 Besonderheiten bei der Anpassung bestehenden Quellcodes
+ 23.1.1 Veraltete Funktionen zur Deklaration von Interrupt-Routinen
+ 23.1.2 Veraltete Funktionen zum Portzugriff
+ 23.1.3 Veraltete Funktionen zum Zugriff auf Bits in Registern
+ 23.1.4 Selbstdefinierte (nicht-standardisierte) ganzzahlige Datentypen
o 23.2 Zusätzliche Funktionen im Makefile
+ 23.2.1 Bibliotheken (Libraries/.a-Dateien) hinzufügen
+ 23.2.2 Fuse-Bits
o 23.3 Externe Referenzspannung des internen Analog-Digital-Wandlers
* 24 TODO
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
AVR-GCC-Tutorial:
* 1 Vorwort
* 2 Benötigte Werkzeuge
* 3 Was tun, wenn's nicht "klappt"?
* 4 Erzeugen von Maschinencode
* 5 Einführungsbeispiel
* 6 Exkurs: Makefiles
o 6.1 Controllertyp setzen
o 6.2 Quellcode-Dateien eintragen
o 6.3 Programmiergerät einstellen
o 6.4 Anwendung
o 6.5 Sonstige Einstellungen
+ 6.5.1 Optimierungsgrad
+ 6.5.2 Debug-Format
+ 6.5.3 Assembler-Dateien
+ 6.5.4 Taktfrequenz
o 6.6 Eingabedateien zur Simulation in AVR-Studio
* 7 Ganzzahlige (Integer) Datentypen
* 8 Bitfelder
* 9 Grundsätzlicher Programmaufbau eines µC-Programms
o 9.1 Sequentieller Programmablauf
o 9.2 Interruptgesteuerter Programmablauf
* 10 Zugriff auf Register
o 10.1 Schreiben in Register
o 10.2 Verändern von Registerinhalten
o 10.3 Lesen aus Registern
o 10.4 Warten auf einen bestimmten Zustand
o 10.5 16-Bit Register (ADC, ICR1, OCR1, TCNT1, UBRR)
o 10.6 IO-Register als Parameter und Variablen
* 11 Zugriff auf IO-Ports
o 11.1 Datenrichtung bestimmen
o 11.2 Vordefinierte Bitnummern für I/O-Register
o 11.3 Digitale Signale
o 11.4 Ausgänge
o 11.5 Eingänge (Wie kommen Signale in den µC)
+ 11.5.1 Signalkopplung
+ 11.5.2 Interne Pull-Up Widerstände
+ 11.5.3 Tasten und Schalter
# 11.5.3.1 (Tasten-)Entprellung
* 12 Der UART
o 12.1 Allgemeines zum UART
o 12.2 Die Hardware
o 12.3 UART initialisieren
o 12.4 Senden mit dem UART
+ 12.4.1 Senden einzelner Zeichen
+ 12.4.2 Schreiben einer Zeichenkette (String)
+ 12.4.3 Schreiben von Variableninhalten
o 12.5 Empfangen
+ 12.5.1 einzelne Zeichen empfangen
+ 12.5.2 Empfang von Zeichenketten (Strings)
o 12.6 Interruptbetrieb
o 12.7 Software-UART
o 12.8 Handshaking
+ 12.8.1 Hardwarehandshake (RTS/CTS)
+ 12.8.2 Softwarehandshake (XON/XOFF)
o 12.9 Fehlersuche
o 12.10 Links
* 13 Analoge Ein- und Ausgabe
o 13.1 AC (Analog Comparator)
o 13.2 ADC (Analog Digital Converter)
+ 13.2.1 Der interne ADC im AVR
# 13.2.1.1 Die Register des ADC
# 13.2.1.2 Aktivieren des ADC
+ 13.2.2 Analog-Digital-Wandlung ohne internen ADC
# 13.2.2.1 Messen eines Widerstandes
# 13.2.2.2 ADC über Komparator
o 13.3 DAC (Digital Analog Converter)
+ 13.3.1 DAC über mehrere digitale Ausgänge
+ 13.3.2 PWM (Pulsweitenmodulation)
* 14 LCD-Ansteuerung
o 14.1 Das LCD und sein Controller
o 14.2 Anschluss an den Controller
o 14.3 Programmierung
* 15 Die Timer/Counter des AVR
o 15.1 Der Vorteiler (Prescaler)
o 15.2 8-Bit Timer/Counter
o 15.3 Timer-Bitzahlen verschiedener AVR's
o 15.4 16-Bit Timer/Counter
+ 15.4.1 Die PWM-Betriebsart
+ 15.4.2 Vergleichswert-Überprüfung (Compare Match)
+ 15.4.3 CTC-Betriebsart (Clear Timer on Compare Match)
+ 15.4.4 Einfangen eines Eingangssignals (Input Capturing)
o 15.5 Gemeinsame Register
* 16 Warteschleifen (delay.h)
o 16.1 avr-libc Versionen kleiner 1.6
o 16.2 avr-libc Versionen ab 1.6
* 17 Der Watchdog
o 17.1 Wie funktioniert nun der Watchdog?
o 17.2 Watchdog-Anwendungshinweise
* 18 Programmieren mit Interrupts
o 18.1 Anforderungen an Interrupt-Routinen
o 18.2 Interrupt-Quellen
o 18.3 Register
o 18.4 Allgemeines über die Interrupt-Abarbeitung
o 18.5 Interrupts mit dem AVR GCC Compiler (WinAVR)
+ 18.5.1 ISR
+ 18.5.2 Unterbrechbare Interruptroutinen
o 18.6 Datenaustausch mit Interrupt-Routinen
+ 18.6.1 volatile und Pointer
+ 18.6.2 Variablen größer 1 Byte
o 18.7 Interrupt-Routinen und Registerzugriffe
o 18.8 Was macht das Hauptprogramm?
* 19 Sleep-Modes
* 20 Speicherzugriffe
o 20.1 RAM
o 20.2 Programmspeicher (Flash)
+ 20.2.1 Byte lesen
+ 20.2.2 Wort lesen
+ 20.2.3 Strings lesen
+ 20.2.4 Floats und Structs lesen
+ 20.2.5 Array aus Strings im Flash-Speicher
+ 20.2.6 Vereinfachung für Zeichenketten (Strings) im Flash
+ 20.2.7 Flash in der Anwendung schreiben
+ 20.2.8 Warum so kompliziert?
o 20.3 EEPROM
+ 20.3.1 Bytes lesen/schreiben
+ 20.3.2 Wort lesen/schreiben
+ 20.3.3 Block lesen/schreiben
+ 20.3.4 EEPROM-Speicherabbild in .eep-Datei
+ 20.3.5 EEPROM-Variable auf feste Adressen legen
+ 20.3.6 Bekannte Probleme bei den EEPROM-Funktionen
+ 20.3.7 EEPROM Register
* 21 Die Nutzung von sprintf und printf
* 22 Assembler und Inline-Assembler
o 22.1 Inline-Assembler
o 22.2 Assembler-Dateien
o 22.3 Globale Variablen für Datenaustausch
+ 22.3.1 Globale Variablen im Assemblerfile anlegen
+ 22.3.2 Variablen größer als 1 Byte
* 23 Anhang
o 23.1 Besonderheiten bei der Anpassung bestehenden Quellcodes
+ 23.1.1 Veraltete Funktionen zur Deklaration von Interrupt-Routinen
+ 23.1.2 Veraltete Funktionen zum Portzugriff
+ 23.1.3 Veraltete Funktionen zum Zugriff auf Bits in Registern
+ 23.1.4 Selbstdefinierte (nicht-standardisierte) ganzzahlige Datentypen
o 23.2 Zusätzliche Funktionen im Makefile
+ 23.2.1 Bibliotheken (Libraries/.a-Dateien) hinzufügen
+ 23.2.2 Fuse-Bits
o 23.3 Externe Referenzspannung des internen Analog-Digital-Wandlers
* 24 TODO
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
AVR-GCC-Tutorial:
AVR-GCC-Tutorial_-_www_mikrocontroller_net.pdf
(2009-06-15 12:28:34, Size: 615 KB, Downloads: 2)
