USBasp

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 deutsch Fisch und Fischl GmbH hat sich diesem Problem angenommen und eine Programmierplatine entwickelt, die über ein USB-Kabel an den Computer angschlossen wird: english USBasp (USB-basiertes Programmiergerät für Atmels AVR-Microcontroller). Jens Edelmann hat sich die Technik einmal angesehen.

Als Grundlage unserer Microcontroller-Experimente dient deutsch 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.

schematische Darstellung der Zusammenschaltung

Aufbau der Schaltungen

Aufbau
PROG

Nach deutsch Aufbauanleitung, zusätzlich muss JP3 überbrückt werden.

EXP

Weitgehend nach selbiger Aufbauanleitung mit folgenden Änderungen:

KA
PROG.CON2EXP.CON2
1 - MOSI1 - MOSI
2 - VCC2 - VCC
3 - offen3 - offen
4 - TxD6 - RxD
5 - RESET5 - RESET
6 - RxD4 - TxD
7 - SCK7 - SCK
8 - GND8 - GND
9 - MISO9 - MISO
10 - GND10 - GND

Test der aufgebauten Schaltungen

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:

Terminal:

$ 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:

Terminal:

$ 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.