Startseite

AVR Programmier-Tools

Um AVR Mikrocontroller zu programmieren, brauchst du im Minimal-Fall nur zwei Programme: Die Toolchain enthält den C-Compiler und avrdude überträgt das Programm in den Mikrocontroller. Die Hello World Programmiervorlage zeigt, wie man damit arbeitet.

Zur Berechnung und Kontrolle von Fuses verwende ich die Online Tools Engbedded Fuse Calculator und Eleccelator Fuse Calculator.

Für Linux

Alle gängigen Linux Distributionen stellen die Toolchain über ihren Installer bereit. Bei Ubuntu heißen die Pakete: make, avr-libc und gcc-avr. Installiere auch das Paket avrdude.

Zusätzlich möchtest du vielleicht den AVR8 Burn-O-Mat herunterladen, das ist eine grafische Oberfläche für avrdude. Du benötigst dazu eine Java Runtime (JRE).

Zum manuellen Testen von seriellen Datenübertragungen empfehle ich Cutecom oder das Hammer Terminal. Zum manuellen Testen von Netzwerk-Verbindungen (TCP und UDP) ist hingegen Netcat (nc) das richtige Werkzeug.

Für Windows

Die Toolchain wurde von Linux nach Windows portiert. Du hast die Wahl zwischen:

Die Installationsprogramme von WinAVR und der Prebuilt GNU toolchain richten die PATH Variable automatisch ein. Wenn du das Atmel Studio installiert hast, benutze den den "Atmel Studio 7 Command Prompt" aus dem Startmenü. Wenn du die Atmels Toolchain mit CygWin kombinierst, richte dir in der Systemsteuerung die Umgebungsvarable PATH manuell so ein, dass c:\cygwin64\bin und c:\avr8-gnu-toolchain\bin enthalten sind.

Unabhängig davon, welche Toolchain du verwendest, wirst du wahrscheinlich die folgenden Programme brauchen:

Avrdude

Zum Ansteuern von Programmieradaptern hat sich avrdude 6.3 durchgesetzt. Es unterstützt praktisch alle Programmieradapter, die es gibt. Kopiere die beiden Dateien aus dem ZIP File am besten in das bin Verzeichnis ihrer Toolchain. Für die meisten USB Programmieradapter musst du außerdem den libusb Treiber installieren. Im Fall von Windows 8 (oder neuer) bitte gemäß dieser Anleitung.

Das Zadig Tool hat vielen Leuten bei hartnäckigen Treiberproblemen geholfen.

Wenn du vor der Eingabe von Befehlen in der Eingabeaufforderung zurück schreckst, möchtest du eventuell den AVR8 Burn-O-Mat installieren. Das ist eine grafische Bedienoberfläche für avrdude. Du musst zusätzlich eine Java Runtime (JRE) installieren.

Für alte Programmieradapter mit den Protokollen AVR910, AVR911, AVRISP, AVROSP und AVROSPII kann man alternativ das grafische Windows Programm Avr-Osp II .547 benutzen. Es arbeitet ohne avrdude und ohne libusb.

Weitere Tools

Als Texteditor empfehle ich unter Windows das Notepad++ oder Editpad Lite.

Zum manuellen Testen von seriellen Datenübertragungen empfehle ich das Programm Hammer Terminal von Tobias Hammer. Zum manuellen Testen von Netzwerk-Verbindungen (TCP und UDP) ist hingegen Netcat das richtige Werkzeug.

Prolific PL2303

Der PL2303 Chip wird in vielen USB-UART Adaptern verwendet. Der aktuelle Windows Treiber funktioniert leider nicht mit alten und gefälschten PL2303 Chips. Abhilfe schafft die Installation des älteren Treibers v3.4.25.218 oder v3.3.2.105.

Wenn Windows jetzt trotzdem den neueren Treiber lädt, hat man zwei Möglichkeiten:

1) Den neueren Treiber entfernen
Dazu geht man im Gerätemanager mit der rechten Mastaste auf den Prolific Adapter und wählt "Gerät Deinstallieren". Im Nächtsen Dialog soll "Treibersoftware für dieses Gerät löschen" aktiviert sein. Anschließend den USB Stecker ziehen und wieder einstecken. Windows wird danach den verbleibenden alten Treiber laden.

2) Den richtigen (alten) Treiber zuweisen
Dazu geht man im Gerätemanager mit der rechten Mastaste auf den Prolific Adapter und wählt "Treiber aktualisieren". Im Nächtsen Dialog soll Windows den PC nach verfügbaren Treibern durchsuchen (Aus einer Liste von Gerätetreibern auf dem Computer wählen). Dort wählst du dann nicht den aktuellen Treiber aus, sondern den älteren mit Version 3.4.25.218 oder 3.3.2.105.

Dies muss man nach jedem Windows Upgrade wiederholen, sowie nach jedem Umstecken an einen anderen USB Anschluss.

Integrierte Entwicklungsumgebungen

Für mittlere bis große Projekte eignen sich integrierte Entwicklungsumgebungen (kurz IDE) besser, als simple Text-Editoren. Die automatische Eingabe-Ergänzung, das Springen zwischen Dateien und das Suchen und Umbenennen von Symbolen geht damit viel komfortabler. Die meisten IDE's können Makefile Projekte importieren und eignen sich somit für AVR Programmierung.

Wenn du noch kein Makefile Projekt erstellt haben, verwende meine Hello-World Vorlage.

Für alle IDE's musst du zuerst herausfinden, in welchem Verzeichnis die Include Dateien der AVR C Library liegen. Suche nach einer Datei mit dem Namen iom328.h. Diese findest du normalerweise hier:

Das Include-Verzeichnis ist das Übergeordnete, also das mit dem Namen "include". Merke dir diesen Pfad.

Schaue in die Datei include/avr/io.h. Dort findest du Symbole für die ganzen unterschiedlichen AVR Typen, im Format "__AVR_ATxxxxx__". Finde dort deinen Mikrocontroller-Typ, zum Beispiel "__AVR_ATtiny2313__". Den musst du später in der IDE konfigurieren. Die Angabe soll mit dem Mikrocontroller-Typ im Makefile überein stimmen, also würde in diesem Fall im Makefile "attiny2313" stehen.

AVR Studio

Das Windows Programm AVR Studio 4.19 ist eigentlich veraltet, aber ich empfehle es trotzdem immer noch weil es viel kleiner ist und auf jedem Computer zuverlässig und schnell läuft. AVR Studio beinhaltet einen Assembler und einen Simulator, der bei den ersten Übungen hilfreich sein kann. Wer in C/C++ programmiert, muss zusätzlich eine Toolchain installieren.

AVR Studio funktioniert auch in virtuellen Maschinen (Vmware, VirtualBox aber nicht Wine), was die Linux und Mac-User erfreuen dürfte.

In den Projekteinstellungen musst du den Pfad zu avr-gcc.exe und make.exe angeben:

Die grafische Entwicklungsumgebung benutzt normalerweise ihre eigenen Projekt-Einstellungen anstelle von make und Makefile, um Programme zu compilieren. Ich rate allerdings dringend dazu, Makefiles zu benutzen, damit man von der Entwicklungsumgebung unabhängig bleibt. Das stellt man in diesem Dialog im Abschnitt "General" ein.

Im AVR Studio ist ein Programm zum Bedienen einiger Programmieradapter eingebettet. Der dazu mitgelieferte (Jungo) USB Treiber funktioniert allerdings nur in alten Windows Versionen bis 7. Verwende alternativ avrdude.

Ich bedanke mich bei Atmel für die besondere Genehmigung, das AVR Studio hier zum Download anzubieten.

Atmel Studio

Das Atmel Studio 7 ist sehr groß und erfordert einen sehr schnellen Windows Computer. Ich empfehle mindestens 4 CPU Kerne, 8GB RAM und eine SSD. Mit weniger wird man das Programm kaum nutzen können.

Eine separate Toolchain ist nicht nötig, da das Atmel Studio bereits eine Toolchain enthält. Die optionale Komponente "Atmel Solutions" wird normalerweise nicht benötigt, es sei denn man möchte die fertigen Programmbeispiele oder Libraries von Atmel verwenden.

Die grafische Entwicklungsumgebung benutzt normalerweise ihre eigenen Projekt-Einstellungen anstelle von make und Makefile, um Programme zu compilieren. Ich rate allerdings dringend dazu, Makefiles zu benutzen, damit man von der Entwicklungsumgebung unabhängig bleibt.

Der Installer richtet im Startmenü den "Atmel Studio 7 Command Prompt" ein, das ist eine cmd Shell, wo alle nötigen Umgebungsvariablen richtig gesetzt sind. In dieser Shell kann man Makefile-basierte Projekte mit dem make Befehl compilieren.

Um bestehende Makefile-basierte Projekte mit der grafischen Entwicklungsumgebung zu bearbeiten, geht man auf den Menüpunkt File/New/Project. In der Gruppe C/C++ wählt man den Projekttyp "GCC C Executable Project" aus. Der Name vom Projekt und von der Solution soll exakt dem Namen des Projektverzeichnisses entsprechen. Als Location gibt man das überordnete Verzeichnis an, in dem sich das Projektverzeichnis bereits befindet.

Zum Beispiel: Wenn das Projekt in C:\Programmierung\MeinProjekt liegt, dann muss man bei Location das Verzeichnis C:\Programmierung eintragen.

Es folgt der Dialog "Device Selection" wo man den Mikrocontroller Typ eingibt. Er muss mit der Angabe MCU=... im Makefile überein stimmen.

Falls das Atmel Studio nun eine neue leere Datei main.c erzeugt hat, klicke mit der rechten Maustaste darauf und wähle den Befehl "Remove" um sie zu entfernen. In diesem Solution Explorer kannst du nun auf das "Show all files" Symbol klicken, damit alle Dateien des Projektes angezeigt werden.

Dann klickt man mit der rechten Maustaste auf den Projektnamen (die Zeile mit dem orangenem Symbol) und dann auf Properties.

Die Checkbox "Use External Makefile" muss eingeschaltet werden, und darunter gibt man den Pfad zum Makefile ein. Danach kann man dieses Properties Fenster schließen.

Um das Projekt zu compilieren, kann man nun die Taste F7 drücken oder die Befehle aus dem Build Menü verwenden.

Qt Creator

Qt Creator ist eine kostenlose IDE für das Qt Framework. Man kann die IDE allerdings auch zum Editieren von anderen Projekten verwenden. Qt Creator wirkt sehr aufgeräumt, wenn nicht gar spartanisch. Doch bei genauerem Hinsehen stellt man fest, dass die IDE dennoch alle wichtigen Funktionen bereit stellt. Es gibt sie für Linux, Windows und MAC OS. Qt Creator ist in C++ geschrieben, und läuft daher auf jedem Computer flott.

Gehe nach der Installation auf Extras/Einstellungen/Erstellung und Ausführung/Compiler. Füge dort einen Compiler mit dem Namen "AVR" hinzu. Dort stelle den Pfad zum avr-gcc Compiler ein:

Dann gehe auf den "Kits" Reiter und fügen ein Kit mit dem Namen "AVR" hinzu. Dort wähle den gerade erstellten AVR Compiler.

Die CMAKE Konfiguration spielt keine Rolle, lasse sie einfach unverändert. Im Grunde genommen musst du also bloß den Pfad zum avr-gcc Compiler einstellen.

Anschließend kannst du das Mikrocontroller-Projekt über das Menü "Datei/Neu/Projekt importieren/Import eines existierenden Projekts" importieren.

Gebe in der Datei "ProjektName.files" alle Dateien an, die du mit QtCreator editieren möchten. Zum Beispiel

src/main.c
src/Makefile
doc/README.TXT

Gebe n der Datei "ProjektName.includes" das Include-Verzeichnis der AVR C Library an:

/usr/lib/avr/include

Gebe in der Datei "ProjektName.config" Makros für den Mikrocontroller-Typ und die Taktfrequenz an.

#define __AVR_ATtiny2313__
#define F_CPU 1000000 

Netbeans

Netbeans war ursprünglich eine Entwicklungsumgebung für Java, aber inzwischen unterstützt Netbeans auch C recht gut. Netbeans ist übersichtlich gestaltet und daher für Anfänger sicher viel angenehmer, als Eclipse oder Atmel Studio. Netbeans ist eine Java Anwendung und erfordert daher die Installation eines Java Developer Kits (JDK).

Downloade das Bundle für C/C++ oder installiere nachträglich das C/C++ Plugin. Nach dem ersten Start stelle folgendes ein:

Dieses Bildschirmfoto zeigt die richtigen Einstellungen für Linux:

Anschließend kannst du das Mikrocontroller-Projekt über das Datei Menü von Netbeans öffnen:

Damit Netbeans die SFR Register (zum Beispiel PORTB) erkennt,

Ich habe diese Anleitung gefunden, wo erklärt wird, wie man den Editor von Netbeans benutzt.

Eclipse

Eclipse war ebenfalls ursprünglich eine Entwicklungsumgebung für Java, unterstützt nun jedoch viele andere Sprachen. Eclipse fällt durch extrem viele Einstellmöglichkeiten und Plugins auf, was Anfänger oft erschreckt. Die Einarbeitungszeit ist deutlich länger, als bei den anderen IDE's. Danach kann man mit Eclipse allerdings effizient arbeiten. Da Eclipse selbst eine Java Anwendung ist, muss man auch ein Java Developer Kits (JDK) installieren.

Downloade die Eclipse IDE für C/C++ Entwickler oder installiere das C/C++ Plugin in ihre vorhandene Eclipse IDE. Importiere das Projekt über das Menü File/New/Makefile Projekt With Existing Code.

Klicke dann mit der Rechten Maustaste auf den Namen des soeben importierten Projektes, und dann auf Properties.