AVR Butterfly: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
(Hinweise DIDRx - mthomas)
K (Link korrigiert)
 
(36 dazwischenliegende Versionen von 24 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:AVR]]
[[Bild:AVRButterfly.jpg|right|thumb|320px|AVR Butterfly]]
[[Category:Starterkits]]
Der [http://www.atmel.com/products/AVR/butterfly AVR-Butterfly] ist ein Demo-Board für den ATMega169V [[AVR]]-Controller von [[Atmel]]. Der Preis liegt zwischen ca. 19 und 35 Euro, dies ist für die gebotene Ausstattung sehr günstig.


[[Bild:Avr-butterfly.jpg]]
Der [http://www.atmel.com/products/AVR/butterfly AVR-Butterfly] ist ein Demo-Board für den ATmega169V [[AVR]]-Controller von
[http://www.atmel.com Atmel].
Der Preis liegt zwischen ca. 19 und 35 €, dies ist für die gebotene Ausstattung sehr günstig.


== Aufbau/Bestandteile ==
== Aufbau/Bestandteile ==


* AVR ATMega169V Controller (low-voltage-Ausführung, 16kB Flash, LCD-Controller)
* AVR ATmega169V Controller (low-voltage-Ausführung, 16kB Flash, [[LCD]]-Controller)
* [[LCD]]-Display (6 Stellen)
* LC-Display (6 Stellen)
* "Joystick"
* "Joystick"
* [[RS-232]]-Schnittstelle
* [[RS-232]]-Schnittstelle
* 4MBit Flash-Speicher ([[DataFlash]])
* 4MBit Flash-Speicher ([[DataFlash]])
* Piezo-Lautsprecher
* Piezo-Lautsprecher
* Lichtsensor (LDR)
* Lichtsensor (LDR) (aufgrund RoHS derzeit nicht bestückt)
* Temperatursensor (NTC)
* Temperatursensor (NTC)
* Anschluss für Spannungsmessung (0-5V)
* Anschluss für Spannungsmessung (0-5V)
Zeile 20: Zeile 20:
* Knopfzelle
* 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").
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 ==
== 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 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.
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.
Zeile 33: Zeile 35:


=== Seriell über Bootloader ===
=== 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, ttyX) und dem RS-232/UART Anschuss 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-serial) ISP Programmierung ===
Diese Methode ist die einfachste und auch die sicherste Art der Programmierung. Mithilfe des vorinstallierten [[Bootloader]]s 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]].


Über den ISP-Abschluss (Jxyz)am Butterfly werden Anwendungen im "low-voltage-serial-programming-mode" zum ATmega ü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.).
=== ''Low Voltage'' ISP-Programmierung ===


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 jedoch besondere Vorsicht walten lassen. Auch der vorinstallierte Bootloader kann über ISP gelöscht werden ("Chip-Erase"). Man kann also damit einiges so verstellen, dass der Controller nur mit hohen Aufwand wieder in den Auslieferungszustand versetzt werden kann. Also: vor Benutzung Datenblatt lesen!
Über den [[AVR In System Programmer|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.).  


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 (kann für genaues UART-Timing mittels des Uhrenquarzes kalibriert werden).
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!


=== JTAG Programmierung/Debugging ===
'''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).


Über die ATmega 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 (TODO: OS-Programm fuer JTAGICE).
=== [[JTAG]] Programmierung/Debugging ===


=== Parallel-Programming-Mode ===
Ü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.


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 Users-Manual und in der AVRStudio Online-Hilfe beschrieben.
=== ''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 ==
== Anwendungshinweise ==


Bei Problemen mit den ADC-Eingaengen 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.
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 ==
== Weblinks ==
* http://www.atmel.com/products/AVR/butterfly Butterfly "Homepage" bei Atmel (Dokumentation, Quellcode der vorinstallierten Sortware für IAR-Compiler)
* http://www.dwelch.com/avr/ Butterfly Einführung (auch Assembler-Beispiele)
* http://www.siwawi.arubi.uni-kl.de/avr_projects (gcc-Portierung der vorinstallierten Software, Linksammlung zu Butterfly-Informationen, Beispielanwendungen etc.)


<!-- * http://cgi.segor.de/user-cgi-bin/sidestep2.pl?foto=1&Q=butterfly&M=1#
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3146 Butterfly "Homepage" bei Atmel] - Dokumentation, Quellcode der vorinstallierten Software für IAR C-Compiler
mthomas->"segor link einfueger": was lernt man aus der verlinkten seite, ausser dass von segor butterfly-boards verkauft werden? nichts gegen segor als anbieter ansonsten schwer erhaeltlicher teile, aber der link ist hier deplatziert. man koennte eine anbieterliste erstellen. mir fallen ca. 5 fuer d-land ein. dabei waere der segor-preis allerdings bei den hoechsten -->
* http://www.dwelch.com/avr/ - Butterfly Einführung (auch Assembler-Beispiele)
* http://www.siwawi.arubi.uni-kl.de/avr_projects - Portierung des Quellcodes der vorinstallierten Software für avr-gcc/avr-libc, Linksammlung zu Butterfly-Informationen, Beispielanwendungen etc.)
* http://www.hpinfotech.ro/html/download.htm - Portierung des Quellcodes der vorinstallierten Software an Codevision AVR
* http://www.ecrostech.com/AtmelAvr/Butterfly/index.htm - Trägerplatine für Butterfly
* http://www.smileymicros.com/ (C-Programmierbuch, Trägerplatine, Teilesätze)
* [http://www.fourwalledcubicle.com/ButtLoad.php ButtLoad] - Butterfly als ISP programmer
* https://hbe-shop.de/Art-3168335-ADVANCED-PHOTONIX-NSL-19M51-LICHTABHAENGIGER-WIDERSTAND - Der fehlende Lichtsensor NSL 19M51 bei HBE


== Siehe auch ==
== Siehe auch ==


* [[STK500]]
* [[AVR Butterfly über serielle Schnittstelle programmieren]]
* [[AVR-GCC-Tutorial]]
* [[AVR-GCC-Tutorial]]
* [[AVR Butterfly über serielle Schnittstelle programmieren]]
* AVR [[DB101]]
 
[[Kategorie:AVR-Boards]]
[[Category:Starterkits]]

Aktuelle Version vom 7. Dezember 2014, 22:48 Uhr

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