AVR Butterfly

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
AVR Butterfly

Der AVR-Butterfly ist ein Demo-Board für den ATmega169V AVR-Controller von Atmel. Der Preis liegt zwischen ca. 19 und 35 €, dies ist für die gebotene Ausstattung sehr günstig.

Aufbau/Bestandteile

  • AVR ATmega169V Controller (low-voltage-Ausführung, 16kB Flash, LCD-Controller)
  • LC-Display (6 Stellen)
  • "Joystick"
  • RS-232-Schnittstelle
  • 4MBit Flash-Speicher (DataFlash)
  • Piezo-Lautsprecher
  • Lichtsensor (LDR) (aufgrund RoHS derzeit nicht bestückt)
  • Temperatursensor (NTC)
  • Anschluss für Spannungsmessung (0-5V)
  • USI Schnittstelle (für I2C, SPI und Software-UART)
  • JTAG-Schnittstelle
  • Knopfzelle

Eigene Programme können über eine RS232-Verbindung zum AVR auf dem Butterfly übertragen werden. Es ist dazu keine besondere Programmierhardware erforderlich, ein einfaches Kabel zum seriellen Anschluss genügt (z. B. Kabel einer alten/defekten seriellen PC-Maus "recyclen").

Programme für den AVR-Butterfly erstellen

Der Butterfly wird mit einer vorinstallierten Anwendung geliefert, die bis auf das DataFlash und die USI-Schnittstelle die Funktion aller Komponenten demonstriert. Der Quellcode dieser Anwendung (in C) ist frei verfügbar und kann als Grundlage für eigene Entwicklungen genutzt werden.

Der von Atmel bereitgestellte Quellcode ist an den AVR Compiler von IAR angepasst, wurde jedoch von Dritten an andere Compiler angepasst (vgl. Web-Links).

Der Mikrocontroller auf dem Butterfly ist ein ATmega169V. Programme für den Controller können also wie für jeden anderen AVR in Assembler, C, Basic oder Pascal erstellt werden.

Anwendungsprogramm zum AVR-Butterfly übertragen

Die vom Compiler bzw. Assembler erzeugte HEX-Datei mit dem Anwendungsprogramm kann über den vorinstallierten Bootloader, das ISP-Interface, die JTAG-Schnittstelle oder im "Parallel-Programming-Mode" auf den Mikrocontroller (ATmega169V) übertragen werden.

Seriell über Bootloader

Diese Methode ist die einfachste und auch die sicherste Art der Programmierung. Mithilfe des vorinstallierten Bootloaders kann der Code schnell übertragen werden. Dazu wird lediglich ein "Adapterkabel" (3-adrig) zwischen einem RS-232 Anschluss am PC (COMx, ttySX) und dem RS-232/UART Anschluss des Butterfly benötigt. Die Vorgehensweise und die Anschlussbelegung ist im "Butterfly User-Guide" beschrieben. Software zur Übertragung ist AVR-Studio und aktuelle Versionen von AVRDUDE (letzteres auch für UNIX/BSD-Systeme). In diesem Modus ist es nicht möglich, Fuse oder Lockbits zu verändern, man kann also nichts "wirklich kaputt machen". Siehe dazu auch den Artikel: AVR Butterfly über serielle Schnittstelle programmieren.

Low Voltage ISP-Programmierung

Über den ISP-Abschluss (J403)am Butterfly werden Anwendungen im "low-voltage-serial-programming-mode" zum ATmega169 übertragen. Dazu kann jeder ISP-Programmer genutzt werden, der mit der empfohlenen maximalen Betriebsspannung des Butterfly (4,5V) zurecht kommt (STK500, ATMEL AVRISP, AVR910-Programmer, Evertool, möglicherweise auch manche STK200-Dongles). Programmiersoftware ist jede zur Programmierhardware passende (AVR-Studio, yaap, AVRDUDE, Uisp etc.).

Mit dieser Methode ist es möglich, Grundeinstellungen (Fuse- und Lockbits) zu ändern, was bei der Programmierung über Bootloader nicht möglich ist. Unerfahrene Anwender sollten hierbei also besondere Vorsicht walten lassen, denn der vorinstallierte Bootloader kann über ISP gelöscht werden ("Chip-Erase") oder die Taktquelle kann verstellt werden. Man kann also damit einiges so verstellen, dass der Controller nur mit hohen Aufwand wieder in den Auslieferungszustand versetzt werden kann. Folglich: vor Benutzung Datenblatt des ATmega169 genau durchlesen!

Nie die Taktquelle auf einen externen Quarz(-oszillator) einstellen. Das wieder rückgängig zu machen, kann kniffig werden. NUR internen R/C-Oszillator als Taktquelle verwenden (dieser kann für genaues UART-Timing mittels des Uhrenquarzes kalibriert werden).

JTAG Programmierung/Debugging

Über die ATmega169 JTAG-Schnittstelle, die am Butterfly an J402 herausgeführt ist, kann der Controller über das Atmel JTAGICE (oder "Nachbauten" wie BootICE oder Evertool) programmiert werden. Zusätzlich besteht die Möglichkeit, das Programm "im Controller" zu debuggen. Näheres dazu im Butterfly User-Manual und in der AVRStudio-Online-Hilfe. Programmiersoftware ist AVRStudio und AVRICE.

High Voltage Parallel-Programming-Mode

Dieser Modus kann nur nach Umlöten einiger (sehr kleiner) Bauteile auf dem Butterfly genutzt werden. Der Modus dient sozusagen als "letzte Rettung", falls sonst kein Zugriff mehr möglich ist, z. B. bei stark "verstellten" Fusebits (z. B. Taktquelle auf externen Oszillator/Quarz). Hardware ist das STK500 (oder der "Teil-Nachbau" HVProg). Das STK500 muss dazu entsprechend "gejumpert" werden, die erforderliche Software ist AVRStudio. Die Vorgehensweise ist detailiert im User's-Manual und in der AVRStudio Online-Hilfe beschrieben.

Anwendungshinweise

Bei Problemen mit den ADC-Eingängen und PORTB: Der vorinstallierte Bootloader deaktiviert einige Eingänge. Der Kommentar zum Code und der Code selbst sind verwirrend und moeglicherweise falsch. Abhilfe: Vergleiche ATmega169-Datenblatt Register DIDR0 und DIDR1.

Stolperfallen

  • Unter Linux funktioniert die "download name"-Anwendung mit "cat > /dev/ttyS0" bei mir fehlerhaft (nur erster und evtl. zweiter Buchstabe richtig übertragen). Mit minicom geht es, und genauso mit einem eigenen Programm, solange dieses nach jedem Buchstaben eine Verzögerung macht (flush() und 100ms warten).
  • Um ein hochgeladenes Programm zu starten braucht es noch einen Druck auf den Joystick nach oben.

Weblinks

Siehe auch