Archive for April 21st, 2012

USBaspLoader, Metaboard

Saturday, April 21st, 2012

In 2009 und 2010 habe ich 2 BLIT2008-Boards gebaut: Atmega8, 12MHz Quarz, USB-Bootloader. http://bralug.de/wiki/BLIT2008-Board
Der 12Mhz Quarz war damals üblich, um das USB Timing für V-USB hinzukriegen.
Inzwischen hat sich V-USB weiterentwickelt und es geht auch mit anderen Taktfrequenzen.

We supply assembler modules for clock frequencies of 12 MHz, 12.8 MHz, 15 MHz, 16 MHz, 16.5 MHz 18 MHz and 20 MHz. Other clock rates are not supported.

Und es gibt einen Bootloader, der kompatibel zu USBasp ist. Folglich passt er dann auch zu avrdude und zur arduino-IDE:
http://www.obdev.at/products/vusb/usbasploader.html

Wie beschrieben habe ich USBaspLoader konfiguriert, kompiliert & geflasht…
make
make fuse
make flash

Das hat leider nicht funktioniert. Mein Notebook hat kein USB-Gerät erkannt.

Im Netz fand ich 2 weitere Boards mit Atmega & V-USB:
http://wiki.lochraster.org/wiki/Rumpus und https://metalab.at/wiki/Metaboard

Mein eigenes Board habe ich dem Metaboard angepasst, in dem ich USB D- an PD4 und den “Bootloader enable”-Schalter an PD7 angeschlossen habe.

Für das Metaboard mit Atmega328 @ 16Mhz fand ich sogar den USBaspLoader als fertiges HEX-File: http://sites.google.com/site/a52egv/metaboard

Das habe ich probiert und das hat auch funktioniert. Leider nur ein Mal. Danach war der Bootloader überschrieben. 🙁

Ich glaube im Makefile von USBaspLoader ist ein Fehler:
hfuse: DA -> ergibt 1k Bootloader, aber der Bootloder ist knapp 2k groß.

Mit hfuse: D8 funktioniert es bei mir.
lfuse: f7
Lockbits habe ich nicht benötigt.

Möglicherweise noch ein Fehler im Makefile:
# BOOTLOADER_ADDRESS is 1800 for 8k devices, 3800 for 16k and 7800 for 32k.
Das ist IMHO auch falsch, denn 0x3800 x 2 = 0x7000 und nicht 7800

Jedenfalls bin ich froh, dass es nun endlich funktioniert.
Wenn ich PD7 per Schalter oder Jumper auf GND lege und anschließend reset drücke hält das laufende Programm an und der Bootloader wartet. Wenn der Bootloader das neue Programm empfangen hat, läuft dieses automatisch sofort los.

inspired by metaboard