Das Programmiergerät basiert auf dem
USBasp-Programmer von Thomas Fischl.
Es ist zu diesem Software-kompatibel.
Gegenüber dem Original wurden ein paar Veränderungen an der Hardware vorgenommen:
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
zunkü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.
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 interenen 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 muß 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) anzulöten und am anderen Ende des Kabels eine Buchse passend aufzucrimpen.
|
|
Permalink: http://thomaspfeifer.net/atmel_usb_programmer.htm © 2010 Thomas Pfeifer |