Atmel-USB-Programmiergerät

Ein kleines USB-Programmiergerät für Atmels AVR Mikrocontroller. Praktisch für Notebookbesitzer 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 zunkü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.

Software

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

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

Tags: Programmer Programmieradapter Adapter Flash Flasher Programmierer programmierung Atmel AVR Mikrocontroller Mikrocontroller Parallel USB avrdude binary avrusb libusb avrdude AVR Mikrocontroller Projekte Projekt uC diy selbstbau tutorial µC selbstgebaut schaltung schaltplan schema schematic programmierung elektronik controller Atmel embedded Atmega8

zur�ck zu Homepage Permalink: http://thomaspfeifer.net/atmel_usb_programmer.htm
© 2008 Thomas Pfeifer