Tutorial zur ersten Verwendung des ATmega8-Experimentierboards (Teil 1)
Einführung
Dieses zweiteilige Tutorial soll den Einstieg in die Programmierung des ATmega8-Experimientierboards erleichtern und die ersten Schritte zur Inbetriebnahme des Mega8-Boards bis hin zu einem einfachen Beispielprogramm zur Ansteuerung der Leuchtdioden über die USB-Schnittstelle zeigen.
Der erste Teil widmet sich der Vorbereitung des PC und der USB-Schnittstelle des Mega8-Boards. Es zeigt dabei wie ein AVR mit dem USBasp beschrieben wird.
Vorkenntnisse
Günstig wären: Etwas Programmiererfahrung in einer Hochsprache oder den festen Willen diese zu erlernen. Grundkenntnisse zur AVR-Architektur und Programmierung in Embedded C. Diese erlangt man z.B. durch Studium der Tutorials: AVR-Tutorial, AVR-GCC-Tutorial. Außerdem sind die Informationen auf den Webseiten zum Programmer und ATmega8 Experimentierboard gut zu wissen. Auch das Stöbern und Suchen im Forum kann hilfreich sein.
Benötigte Programme und Treiber
- Windows XP/Vista/7
- WinAVR (Komplette Toolchain für die Programmierung von AVR Mikrocontrollern)
- AVR8-Burn-O-Mat (GUI für den Programmer bzw. AVRDUDE)
- Java SE Runtime Environment (Laufzeitumgebung für Java-Programme, ggf. schon auf dem Rechner)
- USBasp Treiber
- AVR-USB-CDC Treiber (Virtueller-Comport Treiber für den USB-Anschluss des Mega8-Boards)
- Quellen der USB-Firmware für den ATtiny2313 und Projektdateien
Benötigte Hardware
- Gleichspannungs-Netzteil mit ca. 7 bis 9V und min. 250mA zur Versorgung des Mega8-Boards. (Das Board kann auch über USB gespeist werden)
- 2 freie USB-Ports am Rechner (Low-Speed reicht aus)
- Fertig aufgebauter USBasp (Andere Programmer sind natürlich ebenfalls möglich)
- Fertig aufgebautes ATmega8 Experimentierboard
Installation der Software und Treiber
USBasp
Der Programmer wird an einen USB-Port des Rechners angeschlossen. Nun sollte Windows den Installationsdialog zur Einrichtung des Treibers anzeigen. Dort wird dann der Pfad zum bereits entpackten Treiber angeben. Nach der Installation sollte im Gerätemanager das Gerät "USBasp" unter Lib-USB erscheinen.
WinAVR
WinAVR mit den Standard-Vorgaben des Installations-Programms installieren.
AVR8-Burn-O-Mat
Dieses Programm ist in Java geschrieben und benötigt eine Java-Laufzeitumgebung, die ggf. zunächst installiert werden muss.
AVR8-Burn-O-Mat mit den Standard-Vorgaben installieren und danach im Programm unter "Optionen" die Pfade zu AVRDUDE (in WinAVR enthalten) angegeben, sowie als Programmer "USBasp" auswählen. AVR8-Burn-O-Mat muss nach diesen Einstellungen neu gestartet werden und ist dann fertig eingerichtet.
AVR-USB-CDC-Treiber
Die Installation dieses Treibers kann natürlich erst erfolgen, wenn der ATtiny2313 des Mega8-Boards programmiert wurde, aber das Archiv entpacken wir schon mal.
Der Treiber dient der reibungslosen Einrichtung eines virtuellen Com-Port zur Kommunikation mit der USB-Schnittstelle des Experimentierboards. Das Board wird dann später also genauso angesprochen wie eine serielle Schnittstelle. Das Treiber-Archiv enthält jeweils unterschiedliche .inf-Dateien für die Windows-Versionen.
Kontrolle der Hardware
Es sollten die aufgebauten Leiterplattenbaugruppen peinlich genau auf korrekte Werte der Bauteile und den polungsrichtigen Einbau überprüft werden. Weiterhin müssen Lötseite UND Bauteilseite auf Kurzschlüsse und fehlerhafte Lötstellen untersucht werden. Dazu sind viel Licht und eine Lupe nützlich.
Jetzt ein zweites Mal alles kontrollieren, bevor die Spannung angelegt wird. Ernsthaft, auch wenn’s schwer fällt.
Programmierung des ATtiny2313 (USB-Schnittstelle)
Damit das Mega8-Board per USB Daten austauschen kann, muss zunächst der dafür vorgesehene Mikrocontroller ATtiny2313 (IC4) mit der USB-Firmware beschrieben werden:
-
Jumper setzen
- Alle Jumper des ATmega8-Boards sollten ab jetzt geöffnet sein.
- Am Programmer: JP1 und JP3 geöffnet, JP2 geschlossen. -
Programmer anschließen
Anschließen des USBasp an JP7 entsprechend den Schaltplänen für USBasp und ATmega8-Experimentierboard. -
Verbinden der Spannungsversorgung mit dem Mega8-Board
Entweder über ein USB-Kabel (dann muss JP6 geschlossen sein), oder über
ein Steckernetzteil (ca. 7-9V) (dann muss JP6 geöffnet sein).
Die erste LED sollte nun dauerhaft leuchten. -
Quelltexte öffnen
Mit Programmers-Notepad (Teil von WinAVR) wird nun das Projekt im Verzeichnis "ATtiny2313" aus den Quellen des ATmega8-Experimentierboards geöffnet. (Die darin enthaltenen Dateien bilden ein raffiniertes USB-Interface, dessen Implementierung uns hier aber nicht interessiert.)
Per Doppelklick wird nun das MAKEFILE geöffnet und dort die Bezeichnung des Programmers angegeben. Dazu muss die Zeile AVRDUDE_PROGRAMMER = stk200 zu AVRDUDE_PROGRAMMER = usbasp geändert werden. -
Kompilieren des Quelltextes und programmieren des Mikrocontrollers
Im Menü "Tools" nacheinander folgendes ausführen:
- make clean (Evtl. bereits kompilierte Dateien entfernen)
- make all (Quelltext kompilieren)
- make program (Das Intel-Hex-File in den Flash-Speicher des ATtiny schreiben)
Die Ausgabe nach "make program" sollte dann etwa wie folgt aussehen und man kann erkennen, was AVRDUDE geschrieben hat und ob Fehler aufgetreten sind.
-----------------------------------------------------------------------------------------------------------
> "make.exe" program
avrdude -p attiny2313 -P lpt1 -c usbasp -U flash:w:main.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e910a
....
avrdude: writing flash (1984 bytes):
Writing | ################################################## | 100% 10.08s
avrdude: 1984 bytes of flash written
....
avrdude: input file main.hex contains 1984 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 8.60s
avrdude: verifying ...
avrdude: 1984 bytes of flash verified
-----------------------------------------------------------------------------------------------------------
Hinweis: Erkennt der Programmer den ATtiny nicht korrekt (falsche Device-ID), dann ist die Verwendung eines Steckernetzteils zur Spannungsversorgung zu empfehlen. Auch sollten die Verbindungen zwischen Programmer und Mega8-Board noch einmal kontrolliert werden. -
Einstellen der Fusebits mit AVR8 Burn-O-Mat
Natürlich hätte man AVRDUDE im Makefile auch noch mitteilen können, die Fusebits zu setzen, wir machen das jetzt aber per Hand mit Unterstützung eines gelungenen GUI für AVRDUDE.
Zunächst muss bei "AVR type" ATtiny2313 ausgewählt werden, dann gelangt man über den Button "Fuses" in den Dialog zum Einstellen der Fusebits.
Hier werden unter dem Reiter "Fuse Hex Editor" die Werte
efuse=FF; hfuse=DF; lfuse=FF eingetragen und mit "Apply" und "write Fuses" in den Mikrokontroller geschrieben.
-
Fertig!
Sind keine Fehler aufgetreten, sollte die USB-Schnittstelle betriebsbereit sein und kann getestet werden!
Anschluss an eine USB-Schnittstelle des Rechners und ein erster Test
Installieren des Treibers
Nach Anschluss den Mega8-Boards an eine USB-Schnittstelle des Rechners, sollte sich Windows mit dem Installationsdialog für den Treiber melden. Dabei muss Windows das Gerät "RS-232" erkennen. Es wird nun der Pfad zum bereits entpackten AVR-USB-CDC-Treiber angegeben und den, für die Windows-Version passenden, Treiber ausgewählt.
Im Gerätemanager erscheint das Gerät "Virtual Communications Port (COMx)". Innerhalb der Klammer kann nun abegelesen werden, welchem COM-Port das Mega8-Board zugeordnet wurde.
Ein einfacher Test
Ob Daten, die man an den virtuellen COM-Port sendet, auch tatsächlich an JP5 des Mega8-Boards ankommen, kann man leicht mit einer LED überprüfen.
Die RX-Leitung wird am oberen linken Pin von JP5 abgreifen und direkt mit einer der LEDs verbunden. Dazu eignen sich am besten Steckleitungen für Experimentierboards.
Um Zeichen über den virtuellen COM-Port des Rechners auszugeben, kann einfach die Windows Eingabeaufforderung verwenden werden. Folgende Anweisung sendet ein paar Zeichen:
echo testzeichentestzeichentestzeichentestzeichen > com5
(Anstelle von "com5" ist natürlich der oben bereits abgelesene COM-Port anzugeben.)
Nach Betätigung der ENTER-Taste, muss die LED kurz aufleuchten bzw. schwach "flackern"! Wenn nicht, ist bei den vorangegangenen Schritten etwas schief gelaufen und das Forum wartet, nach gewissenhafter Fehlersuche auf Fragen. ;-)
Die LED leuchtet auf!? Prima, dann ist jetzt der richtige Zeitpunkt sich mal richtig auf die Schulter zu klopfen! Glückwunsch! Und schnell weiter zum zweiten Teil...
Vorherige Seite: ATmega8/88/168/328 Experimentierboard
Nächste Seite: Tutorial zur ersten Verwendung des ATmega8 Experimentierboards (Teil 2)