englisch deutsch

AVR Tutorial für C Programmierer

Dieses AVR Tutorial führt Schritt für Schritt bis zum ersten funktionierenden C Programm auf einem AVR Mikrocontroller.


Einleitung

Ein C Programm auf einem AVR Controller laufen zu lassen ist nicht schwierig. Wer sich alles benötigte Material besorgt hat, bringt sein erstes Programm innerhalb eines Abends zum laufen. Dieses Tutorial hilft dabei, den kürzesten Weg zum ersten, laufenden Programm schnell und problemlos zurückzulegen. Wir beginnen mit der benötigten Hardware, anschliessend installieren wir das AVR Studio und den AVR GCC Compiler (beides kostenlos). Wenn das geschafft ist, besorgen wir uns die wichtigsten Datenblätter. Und zum Schuss schreiben wir unser erstes kleines Programm und lassen es auf dem Controller laufen.

Weiterführende Literatur:

Wer nach dem durcharbeiten dieses Tutorials noch tiefer ins Detail gehen will oder wer weitere Anleitungen und Anregungen zur Arbeit mit dem ATmega Mikrocontroller sucht, dem empfehle ich diese beiden Bücher:

AVR-Mikrocontroller
in C programmieren



AVR Mikrocontroller
Programmierung in C



Die Bilder in diesem Tutorial können durch Anklicken vergrössert betrachtet werden.

Schritt 1: Benötigtes Material

Bevor wir beginen, sollten folgende Dinge besorgt werden:

Computer
Natürlich benötigen wir einen Computer um unseren AVR zu programmieren. Es muss keine leistungsstarke Maschine sein. Ich persönlich habe eines meiner älteren Laptops mit Windows XP zum reinen programmier Computer gemacht. Es ist von Vorteil, wenn der computer eine serielle Schnittstelle hat. Bei neueren Geräten und Notebooks sucht man diese heute vergebens. Dieses AVR Tutorial C ist für das AVR Programmierboard STK500 geschrieben und um dieses zu betreiben ist die seielle Schnittstelle unerlässlich. Wenn der Computer nicht über eine serielle Schnittstelle verfügt, wird ein USB zu RS232 Adapter benötigt.

AVR Tutorial C Computer

AVR Tutorial C Adapter

USB zu RS232 Adapter
Wenn der Computer über keine serielle Schnittstelle verfügt, muss ein USB zu RS232 Adapter verwendet werden, um das Programm auf den AVR Mikrocontroller zu laden. Ich habe gute Erfahrungen mit dem Adapter UC232A vom Hersteller Aten gemacht.

AVR Programmierboard STK500
Dieses C Tutorial ist für das AVR Programmierrboard STK500 geschrieben. Dieses board ist nicht die günstigste Lösung, aber da es vom Prozessorhersteller selber stammt, sind mit diesem Board die wenigsten Probleme zu erwarten. Das STK500 funktioniert einwandfrei mit dem AVR-Studio (der Programmiersoftware) und die Kompatiblität zu den AVR- Mikrocontrollern ist garantiert. Ein RS232 Kabel wird mit dem Board mitgeliefert.
Im Internet gibt es diverse Anleitungen zum Bau eigener Programmieradapter. Dies ist ohne Zweifel güstiger, aber das fertig aufgebaute, professionelle STK500 führt sicher schneller zum Ziel. Das Board ist bei den meisten Elektronikhändlern, die auch AVR Mikrocontroller verkaufen, erhältlich.

AVR Tutorial C STK500

AVR Tutorial C Adapter

Spannungsversorgung
Das STK 500 wird leider ohne Netzteil geliefert. Beigelegt ist nur ein Kabel mit dem Stecker für die Speisebuchse und zwei blanken Enden. Es wird deshalb ein 12V Netzadapter benötigt. Noch besser ist ein Labornetzgerät.

AVR Mikrocontroller ATmega8
Ich schreibe dieses Tutorial für den ATmega8. Genau so gut, könnte man es für einen anderen Typ schreiben, denn so etwas wie "den besten AVR Mikrocontroller" gibt es nicht. Jeder Controller hat seine Eigenschaften, die ihn für bestimmte Anwendungen brauchbar machen und für andere nicht. Der ATmega8 ist ein universeller Controller, der die wichtigsten Grundfunktionen bietet. Laut Umfragen ist er im Hobbybereicht der am meisten verwendete AVR Mikrocontroller und in jedem Elektronikforum ist er immer wieder ein Thema.

Es ist aber immer gut, ein paar Ersatzcontoroller in der Schublade zu haben. Am besten bestellt man sich für den Anfang drei bis fünf Stück. Jeder Programmierer kommt irgendwann an den Punkt, wo er testen will, ob sein Programm fehlerhaft, oder sein Controller defekt ist.

AVR Tutorial C STK500

Weitere interessante AVR Hardware:

Folgende Hardware wird für dieses Tutorial nicht benötigt. Für den Entwickler von AVR-Hardware ist sie aber allemal interessant und nützlich:

Entwicklungsboard
ATMEL ATmega32



Lernpaket Mikrocontroller
Progammierung in Bascom und C



Schritt 2: Benötigte Software downloaden und installieren

AVR Studio
Auf der Website von Atmel kannst du das "AVR Studio 4" herunterladen. Eigentlich ist das "AVR Studio 4" durch die neuere Software "AVR Studio 5" und später durch das "ATMEL Studio 6" abgelöst worden. Der Link zum "AVR Studio 4" ist gut versteckt und man findet es am besten über die Suchfunktion der Website. Ich empfehle AVR Studio 4 aus guten Gründen:

AVR Tutorial C AVR Studio 4 Screenshot

AVR Tutorial C Schritt 1 Version 6 ist für das STK-600 Board optimiert, welches viel teurer ist, als das STK-500.
AVR Tutorial C Schritt 1 In Internetforen findet man viele Berichte über Kompatiblitätsprobleme zwischen Version 6 und dem
STK-500. Ärger scheint vorprogrammiert zu sein.
AVR Tutorial C Schritt 1 Version 4 bringt alles mit sich, was man für die Programmierung eines ATmeag8 benötigt.
AVR Tutorial C Schritt 1 Version 4 hat unzählige Buttons und Funktionen, die für die Programmierung eines ATmega8 nicht benötigt werden und die Programmoberfläche unübersichtlich machen.
AVR Tutorial C Schritt 1 Version 4 kommt in einem schlanken 100MB Download daher, während Version 6 800MB gross ist.
AVR Tutorial C Schritt 1 Von den 1600 Beispielprojekten sind nur ein kleiner Teil für die 8-Bit AVR Controller geschrieben.
AVR Tutorial C Schritt 1 Version 4 ist in der ATmega Gemeinde des Internets weitaus verbreiteter und beliebter als Version 6. Man wird bei Problemen viel schneller online Hilfe finden.

Zum Zeitpunkt, da dieses Tutorial geschrieben wurde, befand sich hier die Downloadseite des AVR Studio 4. Das Studio ist kostenlos, es ist jedoch eine kurze Registrierung mit Emailadresse nötig.

Bei der Installation können die Standardeinstellungen verwendet werden.

AVR Tutoril AVR Toolchain

AVR Toolchain
Die AVR Toolchain ist notwendig, damit das AVR Studio den C Code compillieren kann. Sie kann kostelos von der Atmel Website heruntergealden werden: ATMEL AVR Toolchain.

Bei der Installation können auch hier die Standardeinstellungen verwendet werden.

ATmega8 Datenblatt
Wenn du in Google "ATmega8" eingebst, kommt das Datenblatt üblicherweise an oberster Stelle. Ansonsten ist es auf der Website von Atmel erhältlich.

AVR Tutorial datasheet

electronicsplanet.ch

Fragen zum AVR Tutorial?

Schreib ins Elektronik Forum

(Keine Anmeldung nötig)

Schritt 3: STK-500 einrichten

Wir richten jetzt das STK500 für unsere Zwecke ein.

AVR Tutorial C Schritt 1 Setze den ATega8 in den Sockel "SCKT3200A2" ein.

AVR Tutorial C Schritt 1 Kontrolliere gleich jetzt nochmals, ob du ihn richtig rum eingestekt hast. Pin 1 (Die Seite mit der Kerbe) muss dort sein, wo der grünen Boardbläche eine Ecke fehlt.


AVR Tutorial C Schritt 1

AVR Tutorial C Schritt 1 Verbinde mit dem sechspoligen Programmerkabel den grünen Sockel "SPROG2" bit dem "ISP6PIN" Sockel.

AVR Tutorial C Schritt 1 Achte darauf, dass das Kabel nicht verdreht ist und die rote Ader bei beiden Sockel auf der Seite von Pin 1 ist.


AVR Tutorial C Schritt 1

Setze die Jumper

AVR Tutorial C Schritt 1 VTARGET
AVR Tutorial C Schritt 1 AREF
AVR Tutorial C Schritt 1 RESET
AVR Tutorial C Schritt 1 XTAL1
AVR Tutorial C Schritt 1 OSCSEL

Gemäss dem Bild. Achte darauf, dass kein Quarz im Sockel "CRYSTAL" steckt.


AVR Tutorial C Schritt 1

AVR Tutorial C Schritt 1 Verbinde mit dem RS232 Kabel das Board mit de Computer. Verwende den Sockel "RS232 CTRL" und nicht den "RS232 SPARE"

AVR Tutorial C Schritt 1 Schliesse die Spannungsversurgung an.


AVR Tutorial C Schritt 1

Schritt 4: Neues Projekt im AVR Studio eröffnen

Nach dem Start öffnet AVR Studio das Wilkommensfenster. Für ein neues Projekt betätigt man die Schaltfläche New Project .

AVR Tutorial C Schritt 2

Im daraf folgenden Dialog führt man folgende Schritte aus:
AVR Tutorial C Schritt 1 Unter Location gibt man ein Projektverzeichnis an.
AVR Tutorial C Schritt 1 Unter Project Type wählt man AVR GCC.
AVR Tutorial C Schritt 1 Unter Project Name gibt man einen Projektnamen an.
AVR Tutorial C Schritt 1 Das Häckchen Create initial file wird gelöscht. Das Feld Initial File wird automatisch ausgefüllt, sein Inhalt ist aber belanglos, solange das Häkchen nicht aktiviert ist.
AVR Tutorial C Schritt 1 Anschliessend klickt man auf Finish (nicht auf Next)

AVR Tutorial C Schritt 3

Es erscheint die Programmierumgebung. Links befindet sich der Projektexplorer. Klicke rechts auf den Projektnamen in der obersten Ebene und wähle aus dem Dropdownmeü Edit Configuration Options.

AVR Tutorial C Schritt 4

Es erscheint das Fenster mit den Projektkonfigurationen.
AVR Tutorial C Schritt 1 Unter Device wählst du den ATmega8
AVR Tutorial C Schritt 1 Unter Optimization wählst du -01
AVR Tutorial C Schritt 1 Schliesse das Fenster mit Ok.

AVR Tutorial C Schritt 5

Schritt 5: C-Code in neues C-File einfügen.

Wir erstellen ein neues C-File. Mit einem Rechtsklick auf den Ordner Source Files erscheint ein Menü in welchem du Create new Source File anwählst.
Im erscheinenden Fenster gibst du den Namen der neuen Datei ein. Für die Datei mit der main() Routine wählst du am besten den Namen main.c. Anschliessend klickst du auf ok.

AVR Tutorial C Schritt 6

Gib den Code aus dem Bild in die Datei ein. Es handelt sich dabei um unser Testprogramm, das einen Schalter einliest und seinen Zustand auf einer LED ausgibt. Du kannst den Code auch aus dem folgenden Codefenster kopieren.

AVR Tutorial C Schritt 7

#include <avr/io.h>
int main(void)
{

    DDRC = 0x01;
    for(;;)
    {
        if(PIND & 0x01)
            PORTC |= 0x01;
        else
            PORTC &= ~0x01;
    }

    return 0;
}

Schritt 6: Kompillieren und Fehler beheben

Anschliessend klickst du auf die Build Schaltfläche und dein C Code wird Kompilliert.

AVR Tutorial C Schritt 8

Im Berichtfenster am unteren Bildschirmrand kannst du sehen, ob die Kompillierung erfolgreich war. Wenn nicht kannst du im Bericht auf die Error Zeile klicken und AVR Studio zeigt dir an, aur welcher Code Zeile ein Fehler erkannt wurde.

AVR Tutorial C Schritt 9

Schritt 7: Verbindung zum STK500 herstellen und Programm downloaden

Klicke auf die Connect Schaltfläche.

AVR Tutorial C Schritt 10

Es erscheint der Select AVR Programmer Dialog.
AVR Tutorial C Schritt 1 Wähle als Platform das STK500
AVR Tutorial C Schritt 1 Unter Port wählst du Auto
AVR Tutorial C Schritt 1 Anschliessend klickst du auf Connect.

AVR Tutorial C Schritt 11

Es erscheint STK500 ISP Mode with ATmega8 Fenster
AVR Tutorial C Schritt 1 Wähle den Reiter Program

AVR Tutorial C Schritt 1 Wähle unter input HEX File das .hex File in deinem Projektunterverzeichnis default. Dieses wurde beim Kompillieren automatisch erstellt.

AVR Tutorial C Schritt 1 Anschliessend klickst du auf Program.

Das Program wird jetzt auf den ATmega8 geladen.

AVR Tutorial C Schritt 1 Überprüfe, ob im unteren Bereich des Fensters neben jeder Zeile OK steht.

AVR Tutorial C Schritt 11


AVR Tutorial C Schritt 1 Wähle den Reiter Fuses

AVR Tutorial C Schritt 1 Richte alle Einstellungen so wie im Bild ein.

AVR Tutorial C Schritt 1 Anschliessend klickst du auf Program.

Die Fuses des ATmega8 werden jetzt gesetzt.

AVR Tutorial C Schritt 1 Überprüfe, ob im unteren Bereich des Fensters neben jeder Zeile OK steht.

AVR Tutorial C Schritt 11

Schritt 8: Interfacekabel verbinden

Verbinde die LED's des STK500 mit Port C und die Taster mit Port D. Benutze dazu die beiden Flachbandkabel, wie auf de Bild.

AVR Tutorial Interfacekabel

Schritt 9: Programm testen

Das Programm liest den Taster SW0 ein und gibt seinen Zustand an die LED LED0 weiter.

Ist der Taster nicht gedrückt, bleibt die LED dunkel.

AVR Tutorial C Schritt 10



Wird der Taster gedrückt, leuchtet die LED auf.


Herzlichen Glückwunsch, du hast das Tutorial durchgearbeitet und ein einfaches Programm auf dem ATmega8 zum laufen gebracht.

AVR Tutorial C Schritt 11

electronicsplanet.ch

Hat dir das AVR Tutorial weitergeholfen?

Ich freue mich auf dein Feedback im Elektronik Forum

(Keine Anmeldung nötig)