Motivation
Viele Entwicklerboards kommen ausgerüstet mit USB-Anschluss, vorkonfiguriert und mit einem sogenannten Bootloader versehen daher. Man kann diese Boards also direkt an den PC anschließen und eigene Programme hochladen. Board und Bootloader kümmern sich.
Wenn man nach ersten Experimenten sich dann eigene Controller und die zugehörigen Elektronikbauteile angeschafft hat, steht man vor der Herausforderung, das eigene Programm auf den Chip zu bekommen.
In der Arduino-Welt kann man dazu auf den Arduino ein entsprechendes Programm laden und den Arduino zu einem AVR ISP Programmer umrüsten. Wie das geht, ist in vielen Tutorials, Videos und Blogs beschrieben.
So ein Arduino mit den ganzen Jumper-Kabeln, etc. ist aber auf Dauer auch ein wenig unhandlich und man blockiert im Zweifel einen Arduino mit der Aufgabe. Bequemer und schon recht günstig zu haben, sind sogenannte ISP oder In-Circuit Serial Programming (ICSP) Geräte.
In der Regel haben auch die Entwicklerboards geeignete Anschlüsse, um ein solches Gerät anzuschließen. So ein ICSP-Anschluss wird dann wichtig, wenn es einem in einem Moment des Talentverlustes gelungen ist, den Controller oder mindestens den Bootloader abzuschießen.
Vor einer Weile habe ich mir einen ISP Programmer für AVR-Chips besorgt, da ich es bereits öfter geschafft habe, meinen Arduino oder eines der anderes Boards abzuschiessen. Mit diesem kleinen Helferlein kann man ganz schnell z.B. den Bootloader auf einen Arduino brennen.
Darüber hinaus habe ich begonnen, mit dem ATtiny85 und dem ATmega328p eigene kleine Schaltungen aufzubauen.
Installation eines ISP / ICSP Programmers
Ich habe die notwendige minimale Toolkette auf einem Raspberry Pi installiert. Dazu bin ich wie folgt vorgegangen:
- Wie immer vor neuen Installationen, das System insgesamt aktualisieren mit:
sudo apt-get update sudo apt-get upgrade
- Dann im zweiten Schritt den Compiler, die Werkzeuge, den Debugger, die Libraries, das Programmierwerkzeug und ein serielles Terminalprogramm installieren:
sudo apt-get install gcc-avr binutils-avr gdb-avr avr-libc avrdude minicom
- Raspberry Pi mit USB-Programmer verbinden, und den Programmer an den 6 alleinstehenden PINs, bezeichnet mit ICSP, des Arduinos anschließen. Der kleine weiße Punkt kennzeichnet den PIN 1.
- Mit
lsusb
nachsehen, ob der Programmer als USB-Gerät erkannt wird.
- Mit
ls /dev/tty*
nachsehen, wie der Programmer angesprochen wird (Hier Port ttyACM1).
- Mittels avrdude einfach mal nachsehen, was so angeschlossen ist.
sudo avrdude -p m328p -c stk500 -P /dev/ttyACM1 -v
Wobei -p m328p den Atmega 328p des Arduino, -c stk500 den Programmer und -P /dev/ttyACM1 den Port angibt. Die Option -v schaltet auf eine detaillierte Ausgabe um.
- Wenn jede Menge Infos zurückkommen, ist die Installation erfolgreich gewesen.
- Die anderen 6 PINs neben dem USB-Anschluss sind ebenfalls ein ICSP-Header, mit dem Experten den Microcontroller für das USB-Interface ansprechen können. Auch hier kennzeichnet der kleine weiße Punkt den PIN1.
sudo avrdude -p m16u2 -c stk500 -P /dev/ttyACM1 -v