C-Programmierung mit AVR-GCC

Aus Wikibooks
Wechseln zu: Navigation, Suche
Sleep.svg Dieses Buch ist verwaist. Es ist herrenlos und sucht dringend einen neuen Autor! Vielleicht kannst du etwas zum Inhalt beitragen? Wenn du dich traust, kannst du das Buch auch gern als neuer Autor übernehmen.
Es gibt eine Liste von weiteren verwaisten Büchern, vielleicht findest du dort ein Buch, welches du gern weiterschreiben willst?
Gnome-applications-office.svg Dieses Buch steht im Regal Programmierung.

Zusammenfassung des Projekts [Bearbeiten]

  • Zielgruppe: Leute mit Programmiererfahrung in C, die in die Microcontroller-Programmierung einsteigen wollen.
  • Lernziele: Die Grundlagen der Microcontroller-Programmierung auf Basis des AVR von Atmel zu erlernen.
  • Buchpatenschaft/Ansprechperson: --ThyMYthOS 14:59, 6. Nov. 2008 (CET)
  • Sind Co-Autoren gegenwärtig erwünscht? Schreibt, was ihr wollt, ich freu mich darüber! Kaputtmachen könnt ihr nichts!
  • Richtlinien für Co-Autoren: Anmerkungen für fortgeschrittene Leser sollten als solche gekennzeichnet werden.
  • Projektumfang und Abgrenzung zu anderen Wikibooks: Es sollen aufbauend auf z.B. C-Programmierung die Besonderheiten im Umgang mit der AVR-Familie behandelt werden.
  • Aufbau des Buches:

Es handelt sich hier um den Versuch, das AVR-GCC-Tutorial (Veröffentlicht unter der Creative Commons Attribution-Share Alike Lizenz) von www.mikrocontroller.net als Buch umzuschreiben.


Vorwort [Bearbeiten]

Dieses Tutorial soll den Einstieg in die Programmierung von Atmel AVR-Mikrocontrollern in der Programmiersprache C mit dem freien C-Compiler avr-gcc erleichtern.

Vorausgesetzt werden Grundkenntnisse der Progammiersprache C. Diese Kenntnisse kann man sich online erarbeiten, z. B. mit dem C Tutorial von Helmut Schellong oder dem Online Buch C von A bis Z oder im Wikibuch C-Programmierung. Nicht erforderlich sind Vorkenntnisse in der Programmierung von Mikrocontrollern, weder in Assembler noch in einer anderen Sprache.

In diesem Text wird häufig auf die Standardbibliothek avr-libc verwiesen, für die es eine Online-Dokumentation gibt, in der sich auch viele nützliche Informationen zum Compiler und zur Programmierung von AVR Controllern finden. Bei WinAVR gehört die avr-libc Dokumentation zum Lieferumfang und wird mitinstalliert.

Der Compiler und die Standardbibliothek avr-libc werden stetig weiterentwickelt. Erläuterungen und Beispiele beziehen sich auf den C-Compiler avr-gcc ab Version 3.4 und die avr-libc ab Version 1.4.3. Die Unterschiede zu älteren Versionen werden im Haupttext und Anhang zwar erläutert, Anfängern sei jedoch empfohlen, die aktuellen Versionen zu nutzen (für MS-Windows: aktuelle Version des WinAVR-Pakets).

Das ursprüngliche Tutorial stammt von Christian Schifferle, viele neue Abschnitte und aktuelle Anpassungen von Martin Thomas, Buchbearbeitung von Manuel Stahl.

Inhalt [Bearbeiten]

Vorbereitung

1. Benötigte Werkzeuge [Bearbeiten]

  1. Einführung
  2. Platine oder Versuchsaufbau
  3. Compiler
  4. Programmiersoftware und -hardware
  5. Editor oder IDE

2. Was tun, wenn's nicht "klappt"? [Bearbeiten]

3. Erzeugen von Maschinencode [Bearbeiten]

4. Einführungsbeispiel [Bearbeiten]

5. Exkurs: Makefiles [Bearbeiten]

  1. Controllertyp setzen
  2. Quellcode-Dateien eintragen
  3. Programmiergerät einstellen
  4. Anwendung
  5. Sonstige Einstellungen
  6. Eingabedateien zur Simulation in AVR-Studio

Grundlagen

6. Datentypen [Bearbeiten]

  1. Ganzzahlige (Integer) Datentypen
  2. Fließkommazahlen
  3. Strings
  4. Felder
  5. Bitfelder
  6. Strukturen

7. Grundsätzlicher Aufbau eines µC-Programms [Bearbeiten]

  1. Sequentieller Programmablauf
  2. Interruptgesteuerter Programmablauf
  3. Multithreading

8. Warteschleifen (delay.h) [Bearbeiten]

  1. avr-libc Versionen kleiner 1.6
  2. avr-libc Versionen ab 1.6

9. Register - Grundbaustein eines Microcontrollers [Bearbeiten]

  1. Schreiben in Register
  2. Verändern von Registerinhalten
  3. Lesen aus Registern
  4. Warten auf einen bestimmten Zustand


Schnittstellen

10. Zugriff auf IO-Ports [Bearbeiten]

11. Timer [Bearbeiten]

11. Die asynchrone serielle Schnittstelle - UART [Bearbeiten]

12. Die synchrone serielle Schnittstelle - SPI [Bearbeiten]

13. I2C / TWI [Bearbeiten]

14. Analoge Ein- und Ausgabe [Bearbeiten]

Best practice

Parser [Bearbeiten]

LCD-Ansteuerung [Bearbeiten]

Programmieren mit Interrupts [Bearbeiten]