Viele Programmier- und Einsteigerboards für Microcontroller verwenden noch immer die serielle Schnittstelle für die Datenübertragung — eine veraltete Technik. Kaum ein Laptop hat mehr einen entsprechenden Port. Die Firma Fisch und Fischl GmbH hat sich diesem Problem angenommen und eine Programmierplatine entwickelt, die über ein USB-Kabel an den Computer angschlossen wird:
USBasp (USB-basiertes Programmiergerät für Atmels AVR-Microcontroller). Jens Edelmann hat sich die Technik einmal angesehen.
Als Grundlage unserer Microcontroller-Experimente dient das offizielle Selbstbau-Kit zu USBasp. Der Bausatz enthält alle benötigten Bauteile inklusive eines programmierten Microcontrollers. Für die Experimente werden zwei dieser Bausätze benötigt. Ein Board dient als Programmierer (PROG), das zweite Board (EXP) wird mit dem Experimentiercode programmiert. Für den Programmiervorgang von EXP muss ein Verbindungskabel (KA) an die Boards angeschlossen werden.
Nach Aufbauanleitung, zusätzlich muss JP3 überbrückt werden.
Weitgehend nach selbiger Aufbauanleitung mit folgenden Änderungen:
PROG.CON2 | EXP.CON2 |
---|---|
1 - MOSI | 1 - MOSI |
2 - VCC | 2 - VCC |
3 - offen | 3 - offen |
4 - TxD | 6 - RxD |
5 - RESET | 5 - RESET |
6 - RxD | 4 - TxD |
7 - SCK | 7 - SCK |
8 - GND | 8 - GND |
9 - MISO | 9 - MISO |
10 - GND | 10 - GND |
Um die Grundfunktionalität von PROG zu testen, wird die Schaltung über ein USB-Kabel mit dem Rechner verbunden. Die grüne LED (PROG.LED1) sollte leuchten.
Ob die Platine auch vom Computer erkannt wird, kann man auf Linux mit dem Befehl lusb
herausfinden. Das Programm gibt Information über alle USB-Busse des Systems und aller dort angeschlossenen Geräte aus. Die folgende Zeile sollte in der Ausgabe enthalten sein:
$ lsusb
Bus 002 Device 051: ID 16c0:05dc VOTI shared ID for use with libusb
Ebenso kann man danach EXP testen. Erst dann kann die Zielschaltung programmiert werden:
$ avrdude -p atmega8 -c usbasp -U flash:w:datei.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9309
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "datei.hex"
avrdude: writing flash (5462 bytes):
Writing | ################################################## | 100% 3.18s
avrdude: 5462 bytes of flash written
avrdude: verifying flash memory against datei.hex:
avrdude: load data flash data from input file datei.hex:
avrdude: input file datei.hex contains 5462 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 2.08s
avrdude: verifying ...
avrdude: 5462 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.