Christians Bastel-Laden

Benutzungsanleitung für den Arduino-ISP

Was ist ein Arduino-ISP?

Mit einem Arduino-ISP (=In System Programmer) kann man den Bootloader (z.B. Duemilanove oder UNO) auf einen ATMEGA328 brennen. Erst der Bootloader macht den ATMEGA328 kompatibel zur Arduino-Welt.

Diese Anleitung behandelt die Benutzung. Es gibt auch eine Anleitung für den Aufbau.

Arduino-ISP-Aufbau

Bausatz

Einen Bausatz für ein Arduino-ISP gibt es bei Elmotex.

Um das Arduino-ISP-Shield benutzen zu können, braucht man zusätzlich einen Arduino-UNO (oder ähnlich) als Steuerung.

Arduino-ISP-Bausatz

Wie funktioniert das?

Wie man mit einem Arduino als ISP den Bootloader auf einen ATMEGS328 brennen kann, ist auf der Seite des Arduino-Projektes dokumentiert.

Arduino as AVR ISP

Benutzung des Arduino-ISP: Einleitung

1. Einleitung

Der Arduino-ISP ist eine Platine mit der man mit Hilfe der Arduino-IDE den Bootloader auf einen leeren ATMEGA328 brennen kann.

Der Arduino-ISP ist als Shield ausgeführt und wird auf den Arduino-UNO oder -Duemilanove gesteckt.

Benutzung des Arduino-ISP: USB-Port isolieren

2. USB-Port isolieren

Wie man in diesem (und dem vorangegangenen) Bild sehen kann, sitzt der Arduino-ISP sehr knapp über dem USB-Port vom Duemilanove. Ich empfehle daher dringend, den USB-Port mit Isolierband abzukleben.

Benutzung des Arduino-ISP: Konfiguration

3. Konfiguration

Der Arduino-ISP besitzt einige Konfigurationsmöglichkeiten.

In der Mitte links ist ein Jumper mit der Bezeichnung C4 <> dir. Er bestimmt, ob die Reset-Steuerung (D10 vom Arduino) direkt auf den Reset-Pin vom ATMEGA328-Chip geht, oder ob ein 100 nF-Kondensator dazwischen geschaltet ist (Default: direkt).

Unten links ist ein Jumper mit der Bezeichnung 10k <> 120. Er bestimmt, ob die Reset-Leitung mit 10 kOhm oder mit 120 Ohm gegen Ground gezogen wird (Default: 10 kOhm).

Unter dem FTDI-Header gibt es noch einen Jumper J5. Er bestimmt, ob die Reset-Leitung vom ISP-Header (oben links) mit einem 100 nF-Kondensator gegen Ground geschaltet wird (Default: offen).

Den kompletten Schaltplan kann man leicht der Fritzing-Datei entnehmen.

Benutzung des Arduino-ISP: Firmware installieren

4. Firmware installieren

Jetzt geht's los: Damit das Arduino-Board als ISP funktionieren kann, muß ein spezieller Sketch installiert werden. Er befindet sich unter Datei → Beispiele → ArduinoISP und wird nach dem Öffnen auf den Arduino gespielt.

Benutzung des Arduino-ISP: Firmware prüfen

5. Firmware prüfen

Wenn alles geklappt hat leuchtet auf dem ISP-Shield die grüne LED (Power) und die gelbe LED pulsiert vor sich hin (HB = Heart Beat = Pulsschlag).

Benutzung des Arduino-ISP: Bootloader wählen

6. Bootloader wählen

Um den Bootloader brennen zu können, muß man ihn zunächst auswählen. Dazu wählt man im Menüpunkt Board das passende Board aus. Also nicht das Board, auf dem der Arduino-ISP steckt! Wählt man als Board Arduino UNO aus, muß man zukünftig zum Bespielen des Chips auch Arduino UNO auswählen. Nimmt man Arduino Duemilanove w/ ATmega328 muß man zukünftig zum Bespielen des Chips auch Arduino Duemilanove w/ ATmega328 wählen.

Unterschiede zwischen den Bootloadern kann man z.B. hier bei Lady Ada nachlesen.

Benutzung des Arduino-ISP: ISP wählen

7. ISP wählen

Dann wählt man noch Tools → Programmer → Arduino as ISP aus und ist bereit zum Brennen.

Benutzung des Arduino-ISP: Brennvorgang starten

8. Brennvorgang starten

Ein leerer ATMEGA328 wird in den Sockel eingesetzt (die Nase zeigt dabei nach links, zu dem Hebel des Sockels), und der Brennvorgang mit Tools → Bootloader installieren gestartet.

Benutzung des Arduino-ISP: Brennablauf

9. Brennablauf

Wenn alles gut geht, leuchtet die blau LED auf (PRG = Programming = Brenne). Manchmal leuchtet aber die rote LED auf (ERR = Error = Fehler) und im Arduino-Status-Fenster kommt statt Burning Bootloader, this can take a minute or so... eine Fehlermeldung in der Art avrdude: stk500_getsync(): not in sync: resp=0x00. Häufig hilft es, den Brennvorgang einfach ein zweites Mal zu starten. Auf meinem Mac habe ich es leider nicht mehr zum Laufen bekommen, trotz aller guten Ratschläge aus dem Netz.

Benutzung des Arduino-ISP: Betriebssystemkonfusion

10. Betriebssystemkonfusion

Unter Windows hat das Ganze dann wunderbar funktioniert. Und das mir, als großem Mac-Fan!

Benutzung des Arduino-ISP: Korrekter Ablauf

11. Korrekter Ablauf

So sieht der korrekte Brennvorgang aus. Die blaue LED leuchtet durchgehend (bei mir hat sie am Anfang einen kleinen Schluckauf), die gelbe LED pulsiert. Manchmal leuchtet ganz am Anfang des Brennvorgans ganz kurz die rote LED auf.

Benutzung des Arduino-ISP: Fehlersuche

12. Fehlersuche

Wenn man statt einem ATMEGA328P einem ATMEGA328-PU hat, stoppt der Brennvorgang wegen einer falschen Device-Signatur. Dann muß man in der avrdude.conf die Signatur für den ATMEGA328P hinten von 0x0F auf 0x14 ändern.

Wenn der erste Brennvorgang abbricht einfach ein zweites Mal starten, das hilft häufig.

Wie geht es weiter?

Arduino-Stand-Alone

Der ATMEGA328 mit Bootloader kann man jetzt in eigenen Projekten einsetzen. Z.B. im Ultra-Real-Bare-Bones-Board.

zum URBBB

Softwareuploads via FTDI

Das Arduino-ISP-Shield eignet sich ohne den Arduino als Unterbau auch hervorragend, um über den FTDI-Header Software auf ATMEG328-MCUs zu spielen.

Benutzung des Arduino-ISP: Stereo-Brennen
Stereo-Brennen

Und wenn es mal schneller gehen muß, kann man auch mit mehreren Arduino-ISPs parallel Bootloader brennen...

Blog-Eintrag Stereo-Brennen