Karl Hans Janke Kollaborativ
Heute die Welt, morgen das Sonnensystem!
<< prev next >>

Arduino als AVR-Programmierer

arduino-avrprog.klein.jpg

Hah! Geht doch (TM). Ich habs irgendwie nicht eingesehen, mir ein teures Programmiergeraet zum Beschreiben von Mikrocontrollern zu kaufen, wenn ich doch mit meinem Arduino bereits ueber einen frei (!) programmierbaren ebensolchen verfuege. Also ist mein erstes richtiges Arduino-Projekt ein AVR-Programmierer. Ist alles noch recht roh und leicht ATmega8-spezifisch, aber funktioniert soweit anstandslos.

Kurzanleitung: Arduino-Pins 2 bis 5 mit RESET, SCK, MISO, MOSI verbinden. VCC und GND anschliessen. Mit minicom auf den Arduino gehen, ggf. resetten. Es sollten Informationen ueber den angeschlossenen Zielchip erscheinen. Nach Aufforderung gewuenschtes Firmware-Image als Intel .hex-Datei an die Serielle senden. Beispiel:

cat foo.hex > /dev/cuaU0

Vorsicht: Nicht zu schnell senden! Sonst laeuft dem Arduino der Empfangspuffer voll und er verschluckt alles, was danach kommt. Man kann das Problem vermutlich vermeiden, indem man die Serielle langsam schaltet. Aber: Fuer sowas gibt es doch Flusskontrolle! :)

Der Arduino hat vier leere Loetstellen, die mit X3 markiert sind. Da kann man Pfostenstecker einloeten. Und zufaellig entsprechen diese Pins gerade den seriellen Steuerleitungen, die nicht anderweitig angeschlossen sind. Eine davon ist CTS, clear to send. Darueber teilt man dem angeschlossen Endgeraet (lies: PC) mit, ob man gerade empfangsbereit ist oder nicht. Also X3-1 mit Arduino-Pin 6 verbinden und die Daten sollten lueckenlos ankommen. Bei mir musste man auch noch die Beachtung der Flusskontrolle einschalten:

stty -f /dev/cuaU0 crtscts

NB. Ich habe FreeBSD und meine Serielle heisst cuaU0. Die Linux-Fanbois setzen bitte ttyS0 oder was auch immer. ;)