Atmel-USB-Programmiergerät (USBasp)
Das Programmiergerät basiert auf dem USBasp-Programmer von Thomas Fischl. Es ist zu diesem Software-kompatibel.
Hardware
Gegenüber dem Original wurden ein paar Veränderungen an der Hardware vorgenommen:
- Das einseitige Platinen-Layout wurde komplett neu entworfen. Fast alle Teile wurden durch SMD-Bauteile ersetzt. Das Ergebnis ist eine schön kleine Platine, welche genau in die Schachtel einer Mikrokassette (Anrufbeantworter/Diktiergerät) passt.
- Ein Target-Reset-Taster wurde hinzugefügt.
- In den ISP-Leitungen wurden Widerstände eingefügt um den Strom zu begrenzen, falls aus irgendeinem Grund mal 2 Ausgänge gegeneinander arbeiten.
Software
Die Original-Firmware von Thomas Fischl war damals nicht in der Lage
Atmel-Controller mit einer Page-Größe >=256.
Dazu gehört zum Beispiel der ATMega128, welcher beim flashen mit AVRDude
lediglich ein "verification error" lieferte.
Das Problem war recht schnell gefunden: Die Page-Größe wird als uchar und
damit als 8-Bit-Wert übertragen. Als Lösung wurden einfach 4-Bit der
"prog_blockflags" Variable abgezwackt.
Damit kann die Page-Größe 2^12=4095 Bytes groß werden - das sollte auch für
zukünftige Prozessoren reichen.
Diese Änderung ist in den neueren Versionen (ab usbasp.2005-07-03) bereits vorhanden. Seit Version 5.2 wird das Programmiergerät auch von AVRDude offiziell unterstützt.
Anmerkungen
L1 ist optional und dient zur Unterdrückung von HF-Störungen. Ein Wert um 47µH ist optimal, eine Drahtbrücke funktioniert zur Not aber auch.
RX/TX des Controllers ist auf den Programmierstecker gelegt. Dies war ursprünglich zu Debug-Zwecken gedacht, wird von der Firmware aber derzeit nicht unterstützt (vielleicht hat ja jemand Zeit und Lust ?).
Die Taktquelle muss per Fusebits von dem internen 8 MHz Oszillator auf den externen Quarzoszillator umgeschaltet werden (CKSEL[3:0]=1111, siehe Datenblatt).
Die Testpunkte TPx dienen nur dazu, für evtl. Erweiterungen mal ein Kabel anlöten zu können.
Um das Henne-Ei-Problem zu lösen - der Programmer muss auch programmiert werden - ist z.B. dieses ISP-Programmierkabel (mit entsprechend angepasster Pinbelegung) geeignet.
AVRDude-Beispiel um beispiel.hex in einen Mega8 zu flashen:
avrdude.exe -p m8 -c usbasp -e -U flash:w:beispiel.hex
Programmieren funktioniert derzeit nur mit AVRDude.
Firmware Versionen vor/nach usbasp.2006-09-16.tar.gz und entsprechende AVRDude-Versionen können nicht gemischt werden, da sich die USB-ID (Neu: vid=0x16c0 pid=0x05dc) geändert hat.
Die Pinbelegung ist gegenüber dem Original versehentlich gespiegelt worden. Es wird daher empfohlen ein Stück Flachbandkabel direkt auf der Platine "verdreht" (gerade und ungerade Pins vertauscht) an zulöten und am anderen Ende des Kabels eine Buchse passend aufzucrimpen.