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.
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.
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.
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.
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).
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.
7. ISP wählen
Dann wählt man noch
Tools → Programmer → Arduino as ISP
aus und ist bereit zum Brennen.
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.
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.
10. Betriebssystemkonfusion
Unter Windows hat das Ganze dann wunderbar
funktioniert. Und das mir, als großem Mac-Fan!
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.
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.
Stereo-Brennen
Und wenn es mal schneller gehen muß, kann
man auch mit mehreren Arduino-ISPs
parallel Bootloader brennen...
Blog-Eintrag Stereo-Brennen