Atmel-USB-Programmiergerät (USBasp)

Ein kleines USB-Programmiergerät für Atmels AVR Mikrocontroller. Praktisch für Notebook-Besitzer die über keine Parallele-Schnittstelle mehr verfügen.

Das Programmiergerät basiert auf dem Externer LinkUSBasp-Programmer von Thomas Fischl. Es ist zu diesem Software-kompatibel.

Das fertige Programmiergerät (Vorderseite)

Bild 1: Das fertige Programmiergerät (Vorderseite)

Das fertige Programmiergerät (Rückseite)

Bild 2: Das fertige Programmiergerät (Rückseite)

Hardware

Gegenüber dem Original wurden ein paar Veränderungen an der Hardware vorgenommen:

Das Platinenlayout

Bild 3: Das Platinenlayout

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 Externer Linkneueren 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.

Download

atmel_usb_programmer.zip (555 KB) - Layout, Schaltplan, Firmware/AVRDude-Binary (!!!Veraltete Firmware Version!!!)

Tags: Programmer Programmieradapter Adapter Flash Flasher Programmierer programmierung Atmel AVR Mikrocontroller Mikrocontroller Parallel USB avrdude binary avrusb libusb avrdude Atmel AVR Mikrocontroller Projekte Projekt uC diy selbstbau tutorial µC selbstgebaut schaltung schaltplan schema bauplan bauanleitung schematic programmierung elektronik controller embedded Atmega8 Atmega32 arduino bascom avr-gcc avr studio atmega microcontroller isp