ISP-Shield für Arduino

Die Platine sollte in der Reihenfolge der Stückliste aufgelötet werden.

Anzahl Bezeichnung Wert
3 Stiftleiste 20-polig
1 Buchsenleiste 2×3-polig
6 Widerstand 470R (gelb-lila-braun-gold)
1 Widerstand 10k (braun-schwarz-orange-gold)
2 Kondensator 100nF
1 Quarz 16MHz
2 Kondensator 22pF
1 IC-Sockel 28-polig
1 Elektrolytkondensator 10µF
1 Taster schwarz
1 LED rot
1 LED gelb
1 LED grün
5 Stiftleiste 3-polig (von den 20-poligen abgeschnitten)
1 Wannenstecker 6-polig
5 Jumper mit Lasche

Eine bebilderte Aufbauanleitung gibt es hier.

Sockel

Der 28-polige Sockel bietet durch seine Belegung die Möglichkeit sowohl ATtinys 13/25/45/85 im oberen Bereich, sowie ATmega 8/168/328 aufzunehmen. Für die passenden Jumpersetting ist JP1 und JP2 korrekt zu setzen (Siehe Kapitel Jumper).

ISP-Connector

Um externe Targets zu programmieren, befindet sich ein 6-poliger ISP-Anschluss auf der Platine. Es kann mittels des Jumpers „TARGET-PWR“ ausgewählt werden, ob dem externen Target Versorgungsspannung bereitgestellt werden soll oder nicht (Siehe Kapitel Jumper).

HEART

Die HEART LED befindet sich am PORTB1 (D9) des Arduino

ERR

Die ERR LED befindet sich am PORTB0 (D8) des Arduino

PRG

Die PRG LED befindet sich am PORTD7 (D7) des Arduino

RESET

Der Ziel-Chip des RESET Tasters kann mittels des Jumpers BUTTONMODE selektiert werden (Siehe Kapitel Jumper). Durch einen kurzen druck wird der selektierte Chip zurückgesetzt.

AUTORST (ON/OFF)

Bei einigen Arduino Boards gibt es Probleme bei der Programmierung des Target aufgrund der Autoreset funktion. Wenn Probleme beim Programmieren des Targets auftreten, kann dieser Jumper auf OFF gesetzt werden.

BUTTONMODE (MASTER/SLAVE)

Es besteht die Möglichkeit über diesen Jumper das Ziel des integrierten Reset-Tasters zu definieren. Es kann entweder der Target-Chip (SLAVE) oder der MASTER zurückgesetzt werden.

JP2 (Tiny/Mega bzw. T/M)

Aufgrund der unterschiedlichen Pinbelegung zwischen der ATtiny 13/25/45/85 und den ATmega 8/168/328 sollten diese beiden Jumper je nach Chip entweder auf „Tiny“ und „T“ oder „Mega“ und „M“ gesteckt werden.

TARGET-PWR (ON/OFF)

Die Stromversorgung über den ISP-Stecker kann mit diesem Jumper ein- und ausgeschaltet werden.

AVRISP mit Arduino

Um den Arduino als Programmer zu benutzen, muss zuerst ein passender Sketch darauf gespielt werden. Dieser ist zufinden unter „Datei“ > „Beispiele“ > „ArduinoISP“. Das Sketch anschließend wie jedes andere Sketch an den Arduino übertragen.

Wenn die Übertragung abgeschlossen ist, kann der „AUTORST“ Jumper auf OFF gesetzt werden (nur bei einigen Modellen notwendig).

Um nun einen neuen Chip über den Arduino zu programmieren, gibt es die Möglichkeit dies über die Arduino IDE zu tun oder AVRDUDE direkt zu nutzen:

Arduino IDE

Die IDE kann ganz normal wie sonst verwendet werden. Es sind nur zwei kleine Punkte zu beachen. Zuerst muss der Programmer auf „Arduino als ISP“ eingestellt werden. Dieser Punkt ist zu finden unter „Werkzeuge“ > „Progammer“ > „Arduino als ISP“. Wenn dies gesetzt ist, ist der einzige Unterschied in der Verwendung, dass zum Hochladen der Software nicht der normale „Hochladen“ Knopf verwendet werden darf, sondern „Hochladen mit Programmer“ (STRG + UMSCHALT + U).

AVRDUDE

Wenn man mit AVRDUDE hochladen will, dann kann z.B. folgender Befehl verwendet werden:

Windows

avrdude -P COM1 -b 19200 -c avrisp […]
*nix
avrdude -P /dev/tty.usbserial -b 19200 -c avrisp […]

Der Port muss durch das jeweilige Gerät ersetzt werden. Passende Parameter für die jeweilige Aufgabe sind dem Befehl am Ende anzufügen

OptiLoader

OptiLoader ist ein Sketch um Massenupdates von Arduino-Boards durchzuführen und den Arduino Bootloader aufzuspielen. Der Source ist unter github.com/WestfW/OptiLoader zu finden. Das Shield kann für diesen Zweck problemlos verwendet werden. Es sind aber einige Dinge zu beachten: 1. Die LEDs führen nicht ihre gewohnten/bezeichneten Aufgaben aus a. HEART leuchtet während des Programmiervorgangs dauerhaft b. ERR und PRG leuchten nie 2. OptiLoader benutzt eine fragwürdige Methode um den Target-Chip mit Energie zu versorgen. Dies wird vom Shield nicht unterstützt. Der Sockel steht dauerhaft unter Spannung