Inhaltsverzeichnis
amforth auf dem AVR Butterfly
Matthias Trute hat sein amforth auch für den ATmega169 angepasst. Damit gibt es nun eine Version für das Butterfly.
Ullrich Hoffmann hat dann unter Mac OS X die Quelle des amforth mit Hilfe des avra übersetzt und ein Butterfly geflasht. Das amforth kann also auch in der Mac-Welt recht einfach auf das Butterfly gebracht werden, und man kann damit schon sehr schön interaktiv arbeiten.
Folgende Hardware war dabei im Einsatz:
- Der avrdude bediente über den AVR-Programmer den ATmega169 chip auf dem Butterfly.
- Im ZTerm erhielt man das begehrte OK über einen USB-232 converter als Anschluß für den UART des Butterfly. (Wähle Zterm/settings/text pacing options/wait for character echo) Hinweis
Folgende Software-Versionen waren im Einsatz:
- amforth-1.2,
- avra-1.2.1.ulli-src, (1)
- avrdude-5.3.1,
- libusb-0.1.12.
Features des Butterfly
Der AVR Butterfly ist komplett ausgerüstet um den ATmega169 AVR microcontroller zu erkunden und dessen Fähigkeiten darzustellen. Mit dem amforth kann das AVR Butterfly nun sogar interaktiv erkundet werden. Hilfsmittel
- ATmega169 AVR microcontroler
- 100 Segment LCD Display = 6 Zeichen display im Prinzip
- 32KHz Oscillator für RTC - Real Time Clock (Echtzeituhr)
- 4-way Joystick, mit center push
- Light Sensor (LDR)
- Temperature Sensor (NTC)
- Piezo Summer zur Tonerzeugung.
- Access to Periperals through Header Connectors
- Voltage Reading 0-5V
Anmerkungen
Flashen und lesen der AVR Prozessoren braucht einen AVR-Programmer, eine Harware die das Protokoll dafür macht. Um den verwendeten USB-AVR-Programmer mit dem avrdude über USB anzusprechen, musste zunächst libusb auf dem Mac nachinstalliert werden. Dann konnte avrdude ebenfalls richtig installiert werden. Danach war es dann möglich, über den AVRProgrammer den ATmega169 auf dem AVR Butterly über dessen ISP-Stecker anzusprechen.
Das amForth wurde mit avra assembliert und dann mit avrdude in den m169 geflasht.
(1) Die avra 1.2.1-Quellen kennen den ATmega169 nicht. Wir haben den Patch von Redhat, der nur eine Zeile in Device.c hinzufügt, angewendet. Wenn man ein RPM-basiertes Linux hat, hat man den Patch eh. Damit steht dann m169 = ATmega169 auch zur Verfügung und avra kann installiert werden.
Die vorgefundene Fuse-Einstellungen HFuse=D7 und LFuse=E2 - sie stammten aus einer anderen Anwendung des Butterfly - verhinderten das im Forth compiliert werden konnte. Mit HFuse auf D9 geht auch das Kompilieren. Damit wird der Boot-Bereich auf 1024 Worte = nrww festgelegt und der bootinterrupt ist aus.
(Das doc2514.pdf zum ATmega169 meint dazu auf S.253 oben: „Note that the user software can never read any code that is located inside the RWW section during a Boot Loader software operation.“ Denn: „The program memory is updated in a page by page fashion. Before programming a page with the data stored in the temporary page buffer, the page must be erased. The temporary page buffer is filled one word at a time using SPM and the buffer can be filled either before the Page Erase command or between a Page Erase and a Page Write operation…“)
Die Kommandozeile zum Flashen:
avrdude -c usbasp -p atmega169 -e -U hfuse:w:0xD9:m -U lfuse:w:0xE2:m -U flash:w:bf.hex:i -U eeprom:w:bf.eep.hex:i