Logo jkrieger.de section logo
invisible corner_top_left.gif
divider design elem. Home design elem.   design elem. Software design elem.   design elem. Links design elem.   design elem. Science design elem.   design elem. Photographie design elem.   design elem. everythingelse design elem.   design elem. eMail design elem.
divider_end corner_top_right
Verlauf

Atmel AVR-Mikrocontroller Programmieren

PonyProg: Serieller Programmer

Auf diesen Seiten möchte ich die Programmiergeräte, die ich für AVRs nutze kurz vorstellen und ihre Bedienung erläutern. Für erste Experimente hat sich PonyProg bewährt. Dabei handelt es sich um eine Software für Linux und Windows, die über einen einfachen Programmer (ein paar Teile) an der seriellen oder parallelen Schnittstelle eines PCs mit dem Controller verbunden wird. Hier die einfache Schalung. Der ATmega32 kann durch jeden beliebigen anderen AVR ersetzt werden.

Ponyporg-serial programmer

Diese Schaltung eignet sich auch gut, um sie in andere Designs zu integrieren. Man muss die Schaltung dann nur noch mit einem Kabel an einen PC anbinden und kann mit dem Programmieren loslegen. Neben der Software PonyProg kann auch das Programm avr-dude verwendet werden, das auch zu WinAVR gehört.

Um avr-dude zu benutzen muss man den Programmer angeben und an welchen Port er hängt. Das geht mit den folgenden Programmoptionen:

    avrdude -c siprog -P COM1
Der Parameter -P COM1 muss natürlich an den entsprechenden Port angepasst werden.





USBasp: Ein Programmer für den USB-Port

Auf der Seite http://www.fischl.de/usbasp/ wird eine Schaltung für einen AVR-Programmer für den USB-Port beschrieben. Er lässt sich für ein paar Euro aufbauen.

Man muss nur ein (auch als Binary) auf der Seite downloadbares Programm in einen ATmega8 oder ATmega48 programmieren. Dazu kann man z.B. den Programmer von oben nutzen. Ich habe eine Platine zum Programmer entwickelt:

Den fertigen Programmer verbindet man mit dem PC. Windows fragt danach nach einem USB-Treiber, der ebenfalls von obiger Internet-Seite heruntergeladen werden kann. Der Programmer kann in Verbindung mit der Software avr-dude verwendet werden, die auch Teil von WinAVR ist. Wenn man einen Controller zum ersten mal programmiert, ist er oft für einen internen RC-Oszillator programmiert. Dann kann es nötig sein, den SlowCSK Jumper zu setzen, um die Geschwindigkeit der Programmierung herunterzusetzen.

Um avr-dude zu benutzen muss man den Programmer angeben und an welchen Port er hängt. Das geht mit den folgenden Programmoptionen:

    avrdude -P USB -c usbasp
Die Option -c usbasp legt den Programmer fest und -P USB legt fest, dass der USB-Port genutzt werden soll.





Programmieren mit avr-dude

Mit avr-dude kann man alle Speicher des AVR-controllers programmieren und auch auslesen. Wie genau wird in der Dokumentation erklärt. Hier sollen nur einige ausgewählte Beispiele aufgeführt werden. Außerdem enthalten die Standard-Makefiles aus WinAVR eine Regel, um das Programm gleich im Flash des Controllers zu speichern (mit make program). Bei jedem Aufruf von avrdude muss ein Controller spezifiziert werden, der zu programmieren ist. Dies geht mit der Option -p m32 für einen ATmega32, mit -p 8535 für einen AT90S8535 usw. Eine Auflistung aller verfügbarer Controller findet sich in der avrdude-Dokumentation.
  • Besonders wichtig ist of das Programmieren der Fuse-Bits, die den Controller konfigurieren. Wie man sie genau setzen muss kann man entweder im Datenblatt des Controllers nachlesen, oder sich mit einem Fuse-Bit-Calculator (z.B. unter http://www.engbedded.com/cgi-bin/fc.cgi) berechnen lassen. Hat man die zwei Werte ermittelt, so können sie mit folgendem Befehl programmiert werden:
      avrdude -P USB -c usbasp -p m32 -U lfuse:w:0xFF:m -U hfuse:w:0xC9:m
    In diesem Beispiel wird 0xFF in die low fuse und 0xC9 in die high fuse programmiert. Das abschließende :m steht jeweils dafür, dass die Werte direkt angegeben werden und nichta us einer Datei gelesen werden müssen.
  • Das Flash kann mit folgendem Befehl mit dem Inhalt der Datei filename.hex im Intel-HEX-Format gefüllt werden:
      avrdude -P USB -c usbasp -p m32 -U flash:w:filename.hex:i
    Mit einem abschließenden :s sagt man avr-dude, dass die Dateim im Motoral S-Record Format vorliegt.




 printable version Impressum
corner_top_right2
verlauf_right.gif
corner_bottom_left.gif corner_bottom_left2 Copyright (c) J. Krieger corner_bottom_right.gif
invisible
last updated: 18.06.2008
file: http://www.jkrieger.de/electronics/avr/programming.html
invisible