# C-Programmierung mit AVR-GCC
## Inhaltsverzeichnis
### Vorwort

* Über dieses Buch

### Grundlagen

* Quickstart Linux
* Arbeiten mit make
* Compiler und Standardbibliothek
* Tipps Tricks und kleine Helferlein
* Hardware und IO-Register
* Interrupts

### Funktionseinheiten

* GPIO Pins
** Projekt-1: PS/2 Tastatur
** Projekt-2: R/2R DA-Wandler
* Timer und Counter
** Projekt-1: Back to the 80ies sound
** Projekt-2: PWM sin Signal via wavetable
* Die asynchrone serielle Schnittstelle - UART
* Two Wire Interface
* Two Wire Interface2
** Projekt-1: Ansteuerung LCD Display
** Projekt-2: Ansteuerung EEPROM

### Anhang

* Codebeispiele zu den Kapiteln

### Literatur

* Literatur

## Vorlagen

Hier findet sich eine Liste bucheigener Vorlagen:
* C-Programmierung_mit_AVR-GCC: Vorlage: WTFPL Head
* C-Programmierung_mit_AVR-GCC: Vorlage: WTFPL Foot
* C-Programmierung_mit_AVR-GCC: Vorlage: Achtung
* C-Programmierung_mit_AVR-GCC: Vorlage: Zitat

## Druckversion

Druckversion

## Zusammenfassung des Projekts

* Zielgruppe: Einsteiger in die Microcontroller-Programmierung
** nur minimale Grundkenntnisse der Programmiersprache C sind erforderlich
** auch ein Quereinstieg mit Kenntnis in einer Sprache der C-Sprachfamilie (Java / C++ / C#) ist möglich
* Lernziele: Die Grundlagen der Microcontroller-Programmierung auf Basis des AVR von Atmel zu erlernen.
** TODO: schwach! und viel zu allgemein gehalten ... dringend genauer aufschlüsseln / zerlegen
* Buchpatenschaft/Ansprechperson:
** letzte Lebenszeichen des ursprünglich als Ansprechperson genannten Nutzers: The todd stammen aus dem Jahr 2013
** zur Zeit werkelt hauptsächlich Benutzer:Mikyra ein wenig am Buch herum.
* Sind Co-Autoren gegenwärtig erwünscht? Und ob!
** Der ursprüngliche Buchpate The todd schrieb einst: Schreibt, was ihr wollt, ich freu mich darüber! Kaputtmachen könnt ihr nichts!
** Der aktuelle Bearbeiter Benutzer:Mikyra sieht es ganz genau so.
* Richtlinien für Co-Autoren:
** Dem Wunsch des ursprünglichen Buchpaten The todd Anmerkungen für fortgeschrittene Leser als solche zu kennzeichnen sollte entsprochen werden. Über Möglichkeiten zu ihrer Umsetzung grübele ich zur Zeit selbst noch nach. Vorschläge jeder Art willkommen.
** Einheitlicher Stil (Anrede, Typographie, semantische Auszeichnung der Inhalte) und Aufbau der einzelnen Kapitel (Lernziele zu Beginn, Lernkontrolle am Ende, etc.) wäre wünschenswert.
* Projektumfang und Abgrenzung zu anderen Wikibooks:
** Aufbauend auf Grundwissen über die C-Programmierung sollen die Besonderheiten im Umgang mit der AVR-Familie behandelt werden.
** Dem Titel entsprechend soll hierbei das Werkzeug AVR-GCC zum Einsatz kommen.
* Aufbau des Buches: Aufteilung des Inhalts in Einführungsteil und Vertiefungsteil.
** Kapitel im Einführungsteil sollen alle Aspekte beleuchten, die für die Bearbeitung von Kapiteln des zweiten Teils benötigt werden. Kapitel in diesem Teil bauen aufeinander auf und sollten daher sofern nicht anders angegeben sequentiell gelesen werden.
** Kapitel Vertiefungsteil sollten nach Möglichkeit voneinander unabhängig sein. Im Idealfall sollten sie sich in Sachen benötigtes Vorwissen ausschließlich auf Teile des Einführungsteils beziehen Kapitel in diesem Teil des Buches können in beliebiger Reihenfolge bearbeitet und nach Lage des eigenen Interesses ausgewählt werden.
** Ob es irgendwann einmal einen weiteren Teil mit ausgewählten Themen für Fortgeschrittene geben wird, und ob es dafür überhaupt genug Material gibt, steht derzeit noch in den Sternen. Derzeit geplant ist in dieser Hinsicht nichts.

## Qua­ran­tä­ne­sta­ti­on

* Die meisten Kapitel in diesem Abschnitt sind von Mikrocontroller.net AVR-GCC-Tutorial übernommen oder basieren auf Importen von dort. Die Texte stehen unter der Creative Commons Lizenz BY-SA, die die Namensnennung erforderlich macht (vgl. Lizenzbestimmung auf µC.net.
* Die Liste aller Autoren findet man in der Versionsgeschichte des AVR-GCC-Tutorials. Einige Hauptautoren der Importversionen sind im C-Programmierung mit AVR-GCC/ Vorwort erwähnt: "Das ursprüngliche Tutorial stammt von Christian Schifferle, viele neue Abschnitte und aktuelle Anpassungen von Martin Thomas, Buchbearbeitung von Manuel Stahl." Es sind ein paar auf Mikrocontroller.net namentlich aktive Autoren nicht erfasst. Viele Änderungen stammen auch von anonymen Nutzern.
* Der rechtliche Status der Kapitelverwendung in diesem Buch konnte nicht zufriedenstellend geklärt werden.
* Siehe: Diskussion:C-Programmierung_mit_AVR-GCC#Lizenzverletzung.
* Nicht zuletzt aus diesem Grund standen Teile des Buchs wegen Urheberrechtsverletzungen bereits kurz vor ihrer Löschung.
* Langfristiges Ziel dieses Buches kann sein, die betroffenen Kapitel inhaltlich soweit mit neu verfasstem Text abzudecken, dass die zweifelhaften Kapitel schließlich endgültig aus dem Buch entfernt werden können.
* Die Krankheit der Patienten in der Qua­ran­tä­ne­sta­ti­on ist leider nicht nur unheilbar, sondern auch so ansteckend, dass Du für den Fall, dass Du Dich als Autor an diesem Buchen beteiligen möchtest unbedingt dafür Sorge tragen musst, dass keine Keime auf Kapitel außerhalb der Quarantänestation übertragen werden.
* Konkret bedeutet das, dass Du unter keinen Umständen Kapitel in der Quarantänestation inhaltlich oder in Teilen in den restlichen Teil des Buchs übernehmen darfst!
* Einer Transplantation in umgekehrter Richtung, das heißt von den restlichen Teilen des Buchs zu Patienten in der Quarantänestation, hingegen steht nichts im Wege.
Patienten, die außer bereits abgedeckten Inhalten keine relevanten oder gar irreführende Informationen enthalten sind in der Übersicht als ersetzt ausgezeichnet.

### Vorbereitung

* Vorwort
* Benötigte Werkzeuge
* Was tun, wenn's nicht "klappt"?
* Hello World
* Makefile

### Grundlagen

* Datentypen
* Grundsätzlicher Aufbau eines µC-Programms
* Warteschleifen (delay.h)
* Register - Grundbaustein eines Microcontrollers

### Schnittstellen

* Timer
* Zugriff auf IO-Ports
* I$^2$C / TWI

### Fortgeschrittene Programmierung

* LCD Ansteuerung