6.3.2009 0:00, pesco
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. ;)