AVR: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
(→‎Projekte: weiteres Projekt)
(Seite aufgeräumt, reine Werbung entfernt, nicht passendes ausgelagert, Unklares umformuliert, Weblinks aktualisiert)
Zeile 5: Zeile 5:
==Architektur==
==Architektur==


Die Architektur ist eine 8-Bit-[[Harvard-Architektur]], das heißt, es gibt getrennte Busse zum Programmspeicher ([[Speicher#Flash-ROM |Flash-ROM]], dieser ist 16 bit breit) und Schreib-Lese-Speicher ([[Speicher#RAM |RAM]]). Programmcode kann ausschließlich aus dem Programmspeicher ausgeführt werden. Weiterhin sind die Adressräume getrennt (d.h. die erste Speicherstelle im Flash-Speicher hat die gleiche Adresse (0) wie die erste Speicherstelle im RAM). Bei der Programmierung in Assembler und einigen C-Compilern bedeutet dies, dass sich Konstanten aus dem ROM nicht mit dem gleichen Code laden lassen wie Daten aus dem RAM. Abgesehen davon ist der Aufbau des Controllers recht übersichtlich und birgt wenige Fallstricke.
Die Architektur ist eine 8-Bit-[[Harvard-Architektur]], das heißt, es gibt getrennte Busse zum Programmspeicher ([[Speicher#Flash-ROM |Flash-ROM]], dieser ist 16 bit breit) und Schreib-Lese-Speicher ([[Speicher#RAM |RAM]]). Programmcode kann ausschließlich aus dem Programmspeicher ausgeführt werden. Weiterhin sind die Adressräume unabhängig (d.h. beide Speicher besitzen eigene Adressbereiche, die sich wertemäßig überschneiden können). Bei der Programmierung in Assembler und einigen C-Compilern bedeutet dies, dass sich Konstanten aus dem ROM nicht mit dem gleichen Code laden lassen wie Daten aus dem RAM. Abgesehen davon ist der Aufbau des Controllers recht übersichtlich und birgt wenige Fallstricke.


* 32 größtenteils gleichwertige Register
* 32 größtenteils gleichwertige Register
* davon 1-3 16-bit-Zeigerregister (paarweise)
* davon 1–3 16-bit-Zeigerregister (paarweise)
* ca. 110 Befehle, die meist 1-2 Taktzyklen dauern
* ca. 110 Befehle, die meist 1–2 Taktzyklen dauern
* Taktfrequenz bis 32MHz
* Taktfrequenz bis 32 MHz
* Betriebsspannung von 1,8 - 5,5 V
* Betriebsspannung von 1,8 5,5 V
* Speicher
* Speicher
**1-256 kB [[Speicher#Flash-ROM | Flash-ROM]]
**1–256 kB [[Speicher#Flash-ROM | Flash-ROM]]
**0-4 kB [[Speicher#EEPROM | EEPROM]]
**0–4 kB [[Speicher#EEPROM | EEPROM]]
**0-16 kB [[speicher#RAM | RAM]]
**0–16 kB [[speicher#RAM | RAM]]
* Peripherie: [[AD-Wandler]] 10 bit, 8- und 16-Bit-[[Timer]] mit [[PWM]], [[SPI]], [[I²C]] (TWI), [[UART]], Analog-[[Komparator]], [[Watchdog]]
* Peripherie: [[AD-Wandler]] 10 bit, 8- und 16-Bit-[[Timer]] mit [[PWM]], [[SPI]], [[I²C]] (TWI), [[UART]], Analog-[[Komparator]], [[Watchdog]]
* [[Speicher#Mit_XMEM-Interface | 64kB Externer SRAM]] (ATmega128, ATmega64,  ATmega8515/162); (Bei den XMEGAs bis zu 16 MB (128 Mbit) externer SDRAM)
* [[Speicher#Mit_XMEM-Interface | 64kB Externer SRAM]] (ATmega128, ATmega64,  ATmega8515/162); (Bei den XMEGAs bis zu 16 MB (128 Mbit) externer SDRAM)
Zeile 22: Zeile 22:


== Software ==
== Software ==
* [http://www.mikroe.com/mikropascal/avr]: Mikropascal, mit einer eingeschränkten kostenlosen Testversion
* [[AVR-Studio]]: Kostenlose Enwicklungsumgebung mit Simulator
* [[AVR-Studio]]: Kostenlose Enwicklungsumgebung mit Simulator
* [http://www.atmel.com/tools/atmelstudio.aspx Atmel Studio 6]: Kostenlose Enwicklungsumgebung mit Simulator
* [http://www.atmel.com/tools/atmelstudio.aspx Atmel Studio 6]: Kostenlose Enwicklungsumgebung mit Simulator
Zeile 31: Zeile 30:
* [[AVR Eclipse]]: Plugin-basierte kostenlose Entwicklungsumgebung (Win, Linux, Mac)
* [[AVR Eclipse]]: Plugin-basierte kostenlose Entwicklungsumgebung (Win, Linux, Mac)
* [[Code::Blocks]]: Freie Entwicklungsumgebung (Win, Linux, Mac), die auch für AVR-Projekte Unterstützung anbietet
* [[Code::Blocks]]: Freie Entwicklungsumgebung (Win, Linux, Mac), die auch für AVR-Projekte Unterstützung anbietet
* [[AVR-GCC]]: Kostenloser C-Compiler
* [[AVR-GCC]]: freier und kostenloser C-Compiler
* [http://www.mikroe.com/mikropascal/avr]: Mikropascal, mit einer eingeschränkten kostenlosen Testversion
* [[LunaAVR]]: Kostenlose, objektbasierte Basic/Pascal-ähnliche Programmiersprache und Entwicklungsumgebung mit Compiler/Assembler und Disassembler (Win, Linux, Mac). http://avr.myluna.de
* [[LunaAVR]]: Kostenlose, objektbasierte Basic/Pascal-ähnliche Programmiersprache und Entwicklungsumgebung mit Compiler/Assembler und Disassembler (Win, Linux, Mac). http://avr.myluna.de
* [http://sourceforge.net/projects/avra/ AVRA]: freier AVR-Assembler
* [http://sourceforge.net/projects/avra/ AVRA]: freier und kostenloser AVR-Assembler
* [http://www.mcselec.com/bascom-avr.htm Bascom AVR] beliebter Basic-Compiler
* [http://www.mcselec.com/bascom-avr.htm Bascom AVR] beliebter Basic-Compiler
* [http://www.e-lab.de AVRCo Pascal Compiler]
* [http://www.e-lab.de AVRCo Pascal Compiler]
Zeile 39: Zeile 39:
* [[SJC]]: Experimenteller Java-Compiler unter GPL mit AVR-Unterstützung
* [[SJC]]: Experimenteller Java-Compiler unter GPL mit AVR-Unterstützung
* [http://www.atnel.pl/mkAVRCalculator_build_57en.rar mkAvrCalculator]: User friendly fuse bits calculator and GUI for avrdude
* [http://www.atnel.pl/mkAVRCalculator_build_57en.rar mkAvrCalculator]: User friendly fuse bits calculator and GUI for avrdude
== Programmiergeräte ==
Siehe Hauptartikel [[AVR In System Programmer]].


== Boards & Starterkits ==
== Boards & Starterkits ==
Zeile 47: Zeile 51:
* [[STK500]]
* [[STK500]]
* [[STK600]]
* [[STK600]]
* [[AVR Dragon]]
* [[AVR Butterfly]]
* [[AVR Butterfly]]
* [[AVR Raven]]
* [[AVR Raven]]
* AVR-ISP / AVR-ISP mkII
* [http://www.ehajo.de/Bausaetze/AVR-ISP-Stick AVR-ISP-Stick]
* [http://www.ehajo.de/Bausaetze/µISP-Stick µISP-Stick]
* [http://www.ehajo.de/Bausaetze/USP-Stick USP-Stick]
* AVR JTAG-ICE
* AVR JTAG-ICE
* [http://www.robotikhardware.de RN-Control]
* [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=64&products_id=126 RN-Control]
* [http://www.conrad.de C-Control PRO]
* [http://www.conrad.de/ce/de/product/791564/Set-C-Control-PRO-AVR32-Bit-Unit-Applicationboard?ref=list C-Control PRO]
* [http://www.myavr.de myAVR Board]
* [http://shop.myavr.de/Systemboards%20und%20Programmer/myAVR%20Board%20MK3%2064K.htm?sp=article.sp.php&artID=100064 myAVR Board]
* [http://www.rowalt.de AVR Lehrbuch und -bausatz]
* [http://www.pollin.de/shop/dt/NTE5OTExOTk-/Bausaetze_Module/Lernpakete_Elektronik/Lernpaket_AVR_Mikrocontroller_in_C_programmieren.html Pollin-Starterkit]
* [http://www.pollin.de Pollin] - preiswerte Starterkits sowie Lösungen für RFID-125kHz und EtherNet
* [http://www.ehajo.de/Bausaetze/aTeVaL aTeVaL-Board] – Nachfolger des bekannten Pollin Evalboards. ISP-mkii-Klon & Seriell/USB-Wandler via USB. Testhardware auf der Platine: Taster, LED, Summer, Potis, ...
* [http://www.lochraster.org/rumpus Rumpus von lochraster.org] ist ein günstiges und gut dokumentiertes Starterkit mit Atmega 168
* [http://www.lochraster.org/rumpus Rumpus von lochraster.org] ist ein günstiges und gut dokumentiertes Starterkit mit Atmega 168
* [http://www.das-labor.org/wiki/Laborboard  Laborboard von das-labor.org] - Bauplan Lochrasterplatine mit Atmega32
* [http://www.das-labor.org/wiki/Laborboard  Laborboard von das-labor.org] Bauplan Lochrasterplatine mit Atmega32
* [http://nibo.nicai-systems.de Roboterbausatz NIBO 2] - autonomer Roboter mit einem ATmega128 und einem ATmega88 / [http://nibobee.nicai-systems.de Roboterbausatz NIBObee] - Roboter für Einsteiger mit ATmega16 und integriertem USB-Programmer
* [http://nibo.nicai-systems.de Roboterbausatz NIBO 2] autonomer Roboter mit einem ATmega128 und einem ATmega88 / [http://nibobee.nicai-systems.de Roboterbausatz NIBObee] Roboter für Einsteiger mit ATmega16 und integriertem USB-Programmer
* [http://www.nerdkits.com Nerdkit - Starterkit inkl. Doku] - ideal für Anfänger
* [http://www.nerdkits.com Nerdkit Starterkit inkl. Doku]
* [http://arduino.cc/ Arduino] - Ein modulares System mit verschiedenen Entwicklungsboards (insbesondere auch eins mit ATmega1280, dem mit den vielen dünnen Beinchen), das aufgrund der Nutzung einer JAVA-IDE und "Wiring" besonders einfach zu nutzen ist. Es gibt verschiedene Clones unter Namen wie Freeduino, Seeeduino etc., auch den Lilypad zum Einnähen in Kleidung und Verschaltung mittels leitender Fäden. Die neueren Versionen können über einen standardmäßig mit ausgelieferten Bootloader ohne sonstige Hardware direkt über USB bespielt werden.
* [http://arduino.cc/ Arduino] Ein modulares System mit verschiedenen Entwicklungsboards (insbesondere auch eins mit ATmega1280, dem mit den vielen dünnen Beinchen), das aufgrund der Nutzung einer JAVA-IDE und "Wiring" besonders einfach zu nutzen ist. Es gibt verschiedene Clones unter Namen wie Freeduino, Seeeduino etc., auch den Lilypad zum Einnähen in Kleidung und Verschaltung mittels leitender Fäden. Die neueren Versionen können über einen standardmäßig mit ausgelieferten Bootloader ohne sonstige Hardware direkt über USB bespielt werden.
* [http://www.aevum-mechatronik.de Modularis] - AVR Mikrocontroller-Boards (z.T. mit Zusatz-Speicher und USB) die über Flachbandkabel erweitert werden können. Es gibt bis jetzt Zubehör-Module mit Taster, Motor H-Brücke, XBee und Winkelsensor.
* [http://www.aevum-mechatronik.de/shop/shop/USER_ARTIKEL_HANDLING_AUFRUF.php?von_suchresultat=true&Ziel_ID=805&Kategorie_ID=148 Modularis-Einsteigerset]
* [http://www.b-redemann.de AVR Mikrocontroller Lehrbuch (R. Walter, 3. Auflage 2009) und Bauteilesatz incl. Leiterplatte; www.b-redemann.de]
* [http://weigu.lu/b/mices2 mices2] Entwicklungsboard zum [http://www.weigu.lu/a Gratis Assembler Kurs]. Integriertes Programmiergerät (USB, avrisp mk2 kompatibel). Spannungsvrsorgung über USB. Platine einseitig, leicht zu bestücken. Viele Schnittstellen (1-Wire, I2C, EIA232 ...), D/A-Wandler, Mikrofonschaltung., Audioverstärker ...
* [http://weigu.lu/b/mices2 mices2] - Entwicklungsboard zum [http://www.weigu.lu/a Gratis Assembler Kurs]. Integriertes Programmiergerät (USB, avrisp mk2 kompatibel). Spannungsvrsorgung über USB. Platine einseitig, leicht zu bestücken. Viele Schnittstellen (1-Wire, I2C, EIA232 ...), D/A-Wandler, Mikrofonschaltung., Audioverstärker ...
* [https://guloshop.de/shop/Mikrocontroller-Programmierung/::45.html gulostart] – [[Steckbrett|Steckplatinen]]-basiertes Lernpaket / Einsteiger-Set mit ausführlicher Anleitung. Verwendet ausschließlich [http://de.wikipedia.org/wiki/Open_source Open-Source-Software], kann fast alle DIP-ATtiny/ATmega programmieren. Für USB-Schnittstelle.
* [https://guloshop.de/shop/Mikrocontroller-Programmierung/::45.html gulostart] – [[Steckbrett|Steckplatinen]]-basiertes Lernpaket / Einsteiger-Set mit ausführlicher Anleitung. Verwendet ausschließlich [http://de.wikipedia.org/wiki/Open_source Open-Source-Software], kann fast alle DIP-ATtiny/ATmega programmieren. Für USB-Schnittstelle.
* [http://corpsman.de/index.php?doc=avrnetio/atmegaboard Atmegaboard] Eagle Daten für ein Testboard zur Nutzung 2er Atmegas gleichzeitig. Weitere Adapterplatinen sowie Source Code sind ebenfalls verfügbar.
* [http://corpsman.de/index.php?doc=atmel/atmegaboard Atmegaboard] Eagle Daten für ein Testboard zur Nutzung 2er Atmegas gleichzeitig. Weitere Adapterplatinen sowie Source Code sind ebenfalls verfügbar.
* [http://matrixstorm.com/avr/tinyusbboard/ tinyUSBboard] - Ein sehr sehr preiswertes, Arduino und BASCOM kompatibles Board mit onboard USB Interface und [http://matrixstorm.com/avr/tinyusbboard/#firmwaresotherbootloader auswechelbarem Bootloader].
* [http://matrixstorm.com/avr/tinyusbboard/ tinyUSBboard] Ein sehr sehr preiswertes, Arduino und BASCOM kompatibles Board mit onboard USB Interface und [http://matrixstorm.com/avr/tinyusbboard/#firmwaresotherbootloader auswechelbarem Bootloader].
* [http://www.ehajo.de/Bausaetze/aTeVaL aTeVaL-Board] - Nachfolger des bekannten Pollin Evalboards. ISP-mkii-Klon & Seriell/USB-Wandler via USB. Testhardware auf der Platine: Taster, LED, Summer, Potis, ...
* [https://www.olimex.com/Products/AVR/ verschiedene Boards von Olimex]
* [https://www.olimex.com/Products/AVR/ verschiedene Boards von Olimex]


Zeile 77: Zeile 74:
Siehe dazu auch die Artikel in der [[:Kategorie:AVR-Projekte|Kategorie AVR-Projekte]].
Siehe dazu auch die Artikel in der [[:Kategorie:AVR-Projekte|Kategorie AVR-Projekte]].


* [[PWM_foxlight]] - LED Lampe mit PWM
* [[PWM_foxlight]] LED Lampe mit PWM
* [[Digitaler Funktionsgenerator]]
* [[Digitaler Funktionsgenerator]]
* [[Midi Rekorder mit MMC/SD-Karte]]
* [[Midi Rekorder mit MMC/SD-Karte]]
Zeile 88: Zeile 85:
* [[RF SOAP]] USB / AtMega88 / RFM12, optional LiPo Akku mit Lader
* [[RF SOAP]] USB / AtMega88 / RFM12, optional LiPo Akku mit Lader
* [http://www.andreadrian.de/schach/#Selbstbau_Schachcomputer_SHAH Selbstbau Schachcomputer SHAH mit ATMega88V]
* [http://www.andreadrian.de/schach/#Selbstbau_Schachcomputer_SHAH Selbstbau Schachcomputer SHAH mit ATMega88V]
* [[Giess-o-mat]] - vollautomatische Blumengießanlage
* [[Giess-o-mat]] vollautomatische Blumengießanlage
* [http://www.zipfelmaus.com/led-flitzer/ POV-LED mit ATmega8, USB und Beschleunigungssensor]
* [http://www.zipfelmaus.com/led-flitzer/ POV-LED mit ATmega8, USB und Beschleunigungssensor]
* [http://g-heinrichs.de/attiny/ ATtiny-Mikrokontroller für Schulbedarf]
* [http://g-heinrichs.de/attiny/ ATtiny-Mikrokontroller für Schulbedarf]
Zeile 119: Zeile 116:
== Tipps & Hinweise ==
== Tipps & Hinweise ==


* [[AVR Typen]] - Die verschiedenen Typen (AT90S, ATmega, ATtiny)
* [[AVR Typen]] Die verschiedenen Typen (AT90S, ATmega, ATtiny)
* [[AVR Checkliste]] - Liste mit Hinweisen zur Lösung üblicher Probleme
* [[AVR Checkliste]] Liste mit Hinweisen zur Lösung üblicher Probleme
* [http://blog.coldtobi.de/1_coldtobis_blog/archive/87_little_endianess_guide_for_atmel_avr.html (Little) Endianess Guide for Atmel AVR] Übersicht über die Endianess der AVR und AVR32
* [http://blog.coldtobi.de/1_coldtobis_blog/archive/87_little_endianess_guide_for_atmel_avr.html (Little) Endianess Guide for Atmel AVR] Übersicht über die Endianess der AVR und AVR32
* [[AVR Fuses|Fuse-Bits]] - Das Setzen der Fuse-Bits ist ein berüchtigter Fallstrick bei den AVRs; vor dem Rumspielen damit unbedingt diese Hinweise lesen!
* [[AVR Fuses|Fuse-Bits]] Das Setzen der Fuse-Bits ist ein berüchtigter Fallstrick bei den AVRs; vor dem Rumspielen damit unbedingt diese Hinweise lesen!
* [[AVR In System Programmer]] - Programmierhardware
* [[AVR In System Programmer]] Programmierhardware
* [[Pony-Prog Tutorial]] - Hinweise zur Programmiersoftware PonyProg
* [[Pony-Prog Tutorial]] Hinweise zur Programmiersoftware PonyProg
* [[AVRDUDE]] - Programmiersoftware für die Kommandozeile
* [[AVRDUDE]] Programmiersoftware für die Kommandozeile
* [[AVR-GCC-Codeoptimierung]] - Wie man mehr aus dem Controller herausholen kann, ohne ein Assembler-Guru sein zu muessen.
* [[AVR-GCC-Codeoptimierung]] Wie man mehr aus dem Controller herausholen kann, ohne ein Assembler-Guru sein zu muessen.
* [[AVR Softwarepool]] - Verschiedene Softwaremodule und Codeschnippsel aus der Codesammlung
* [[AVR Softwarepool]] Verschiedene Softwaremodule und Codeschnippsel aus der Codesammlung




== Weblinks ==
== Weblinks ==


* [http://revision3.com/systm/avr101 AVR101] - systm Videocast von Revision3 Internet Television (engl.).
* [http://revision3.com/systm/avr101 AVR101] systm Videocast von Revision3 Internet Television (engl.).


Weitere Verweise (Links) auf externe Informationen und Projekte finden sich in der '''[[Linksammlung#AVR|Linksammlung]]'''.
Weitere Verweise (Links) auf externe Informationen und Projekte finden sich in der '''[[Linksammlung#AVR|Linksammlung]]'''.
Zeile 141: Zeile 138:
Es gibt nur wenige Typen mit D/A-Wandler (z.B. AT90PWM2); hierfür benutze man PWM oder externe Bausteine.
Es gibt nur wenige Typen mit D/A-Wandler (z.B. AT90PWM2); hierfür benutze man PWM oder externe Bausteine.


Die Takterzeugung ist bei AVRs recht einfach gehalten. So gibt es bei den meisten Modellen keine internen PLLs um „krumme“ Prozessor- oder Peripherietaktfrequenzen zu erzeugen, noch ist der Peripherie-Takt vom Prozessortakt abkoppelbar. Einige AVR verfügen über eine PLL, um damit z.B. einen Timer mit Frequenzen über der Systemfrequenz zu takten oder höhere Systemfrequenz aus niederfrequenteren Taktquellen zu erzeugen (vgl. u.a. Datenblatt ATtiny861). Die Baudrate serieller Schnittstellen lässt sich nicht gebrochen einstellen, so dass gegebenenfalls ein zur Baudrate passender Quarz oder Resonator zu verwenden ist.
Die Takterzeugung ist bei AVRs recht einfach gehalten. So gibt es bei den meisten Modellen keine internen PLLs um „krumme“ Prozessor- oder Peripherietaktfrequenzen zu erzeugen, noch ist der Peripherie-Takt vom Prozessortakt abkoppelbar. Einige AVR verfügen über eine PLL, um damit z.B. einen Timer mit Frequenzen über der Systemfrequenz zu takten oder höhere Systemfrequenz aus niederfrequenteren Taktquellen zu erzeugen (vgl. u.a. Datenblätter ATtiny85 und ATtiny861). Die Baudrate serieller Schnittstellen lässt sich nicht gebrochen einstellen, so dass gegebenenfalls ein zur Baudrate passender Quarz oder Resonator zu verwenden ist.


Für die serielle Programmierung des Flash-Speichers sind 4 Datenleitungen erforderlich und die Taktversorgung muss sicher gestellt sein. Es ist darauf zu achten, dass bei Einstellung der Taktquelle (Fuses) auch die vorhandene Taktquelle ausgewählt wird. Für die Hochvolt-Programmierung (so genannt wegen 12 V am RESET-Anschluss) werden je nach Chip sehr viele Leitungen benötigt. Einige Modelle verfügen über eine Debugwire-Schnittstelle, für die im Betrieb zwei Leitungen ausreichen.
Für die serielle Programmierung des Flash-Speichers sind 4 Datenleitungen erforderlich und die Taktversorgung muss sicher gestellt sein. Es ist darauf zu achten, dass bei Einstellung der Taktquelle (Fuses) auch die vorhandene Taktquelle ausgewählt wird. Für die Hochvolt-Programmierung (so genannt wegen 12 V am RESET-Anschluss) werden je nach Chip nur 3 Signalleitungen (kleinere ATtinys) oder sehr viele Leitungen benötigt (ATmegas und große ATtinys). Einige Modelle verfügen über eine Debugwire-Schnittstelle, für die im Betrieb zwei Leitungen ausreichen.


Nicht zu verwechseln ist die 8-bit-AVR-Serie mit AVR32. Letztere ist eine 32-bit-Architektur mit recht viel Ähnlichkeit zu Controllern auf Basis eines ARM-Cores. Controller der ATxmega-Serie verfügen über mehr Funktionen als die "traditionellen" AVR (z.B. DMA- und Eventsystem, 12Bit A-D-Wandler). ATxmega sind jedoch für 3,3V-Betrieb ausgelegt und ausschließlich in SMD-Bauform erhältlich.
Nicht zu verwechseln ist die 8-bit-AVR-Serie mit AVR32. Letztere ist eine 32-bit-Architektur mit recht viel Ähnlichkeit zu Controllern auf Basis eines ARM-Cores. Controller der ATxmega-Serie verfügen über mehr Funktionen als die "traditionellen" AVR (z.B. DMA- und Eventsystem, 12Bit A-D-Wandler). ATxmega sind jedoch für 3,3V-Betrieb ausgelegt und ausschließlich in SMD-Bauform erhältlich.

Version vom 4. Dezember 2014, 16:25 Uhr

Die AVR-Mikrocontroller von Atmel sind wegen ihrer übersichtlichen internen Struktur, der In-System-Programmierbarkeit, und der Vielzahl von kostenlosen Programmen zur Softwareentwicklung (Assembler, Compiler) beliebt. Diese Eigenschaften und der Umstand, dass viele Typen in einfach handhabbaren DIL-Gehäusen (DIP) verfügbar sind, machen den AVR zum idealen Mikrocontroller für Anfänger.

Über die Bedeutung des Namens "AVR" gibt es verschiedene Ansichten; manche meinen er sei eine Abkürzung für Advanced Virtual RISC, andere vermuten dass der Name aus den Anfangsbuchstaben der Namen der Entwickler (Alf Egin Bogen und Vegard Wollan RISC) zusammengesetzt wurde. Laut Atmel ist der Name bedeutungslos.

Architektur

Die Architektur ist eine 8-Bit-Harvard-Architektur, das heißt, es gibt getrennte Busse zum Programmspeicher (Flash-ROM, dieser ist 16 bit breit) und Schreib-Lese-Speicher (RAM). Programmcode kann ausschließlich aus dem Programmspeicher ausgeführt werden. Weiterhin sind die Adressräume unabhängig (d.h. beide Speicher besitzen eigene Adressbereiche, die sich wertemäßig überschneiden können). Bei der Programmierung in Assembler und einigen C-Compilern bedeutet dies, dass sich Konstanten aus dem ROM nicht mit dem gleichen Code laden lassen wie Daten aus dem RAM. Abgesehen davon ist der Aufbau des Controllers recht übersichtlich und birgt wenige Fallstricke.

  • 32 größtenteils gleichwertige Register
  • davon 1–3 16-bit-Zeigerregister (paarweise)
  • ca. 110 Befehle, die meist 1–2 Taktzyklen dauern
  • Taktfrequenz bis 32 MHz
  • Betriebsspannung von 1,8 – 5,5 V
  • Speicher
  • Peripherie: AD-Wandler 10 bit, 8- und 16-Bit-Timer mit PWM, SPI, I²C (TWI), UART, Analog-Komparator, Watchdog
  • 64kB Externer SRAM (ATmega128, ATmega64, ATmega8515/162); (Bei den XMEGAs bis zu 16 MB (128 Mbit) externer SDRAM)
  • JTAG bei den größeren ATmegas
  • debugWire bei den neueren AVRs

Software

  • AVR-Studio: Kostenlose Enwicklungsumgebung mit Simulator
  • Atmel Studio 6: Kostenlose Enwicklungsumgebung mit Simulator
  • KontrollerLab: Kostenlose Entwicklungsumgebung für KDE
  • Klab: Kostenlose Entwicklungsumgebung für KDE/GTK2/Win32 (als FPC/Lazarus Quellcode verfügbar, Nachbau von KontrollerLab)
  • Microsoft Visual C++ Express: Kostenlose Enwicklungsumgebung (Win),über makefile
  • Netbeans: Plugin-basierte, kostenlose Entwicklungsumgebung (Windows, Mac, Linux, und Solaris). Hier findet sich ein Howto für das Setup von AVR (z.B. für Arduino)
  • AVR Eclipse: Plugin-basierte kostenlose Entwicklungsumgebung (Win, Linux, Mac)
  • Code::Blocks: Freie Entwicklungsumgebung (Win, Linux, Mac), die auch für AVR-Projekte Unterstützung anbietet
  • AVR-GCC: freier und kostenloser C-Compiler
  • [1]: Mikropascal, mit einer eingeschränkten kostenlosen Testversion
  • LunaAVR: Kostenlose, objektbasierte Basic/Pascal-ähnliche Programmiersprache und Entwicklungsumgebung mit Compiler/Assembler und Disassembler (Win, Linux, Mac). http://avr.myluna.de
  • AVRA: freier und kostenloser AVR-Assembler
  • Bascom AVR beliebter Basic-Compiler
  • AVRCo Pascal Compiler
  • amforth: interaktiver und erweiterbarer Kommandointerpreter für AVR unter GNU Lizenz (Open Source)
  • SJC: Experimenteller Java-Compiler unter GPL mit AVR-Unterstützung
  • mkAvrCalculator: User friendly fuse bits calculator and GUI for avrdude

Programmiergeräte

Siehe Hauptartikel AVR In System Programmer.

Boards & Starterkits

Siehe dazu auch die Artikel in der Kategorie AVR-Boards und den Artikel zur AVR Programmierung.

  • STK200
  • STK500
  • STK600
  • AVR Butterfly
  • AVR Raven
  • AVR JTAG-ICE
  • RN-Control
  • C-Control PRO
  • myAVR Board
  • Pollin-Starterkit
  • aTeVaL-Board – Nachfolger des bekannten Pollin Evalboards. ISP-mkii-Klon & Seriell/USB-Wandler via USB. Testhardware auf der Platine: Taster, LED, Summer, Potis, ...
  • Rumpus von lochraster.org ist ein günstiges und gut dokumentiertes Starterkit mit Atmega 168
  • Laborboard von das-labor.org – Bauplan Lochrasterplatine mit Atmega32
  • Roboterbausatz NIBO 2 – autonomer Roboter mit einem ATmega128 und einem ATmega88 / Roboterbausatz NIBObee – Roboter für Einsteiger mit ATmega16 und integriertem USB-Programmer
  • Nerdkit – Starterkit inkl. Doku
  • Arduino – Ein modulares System mit verschiedenen Entwicklungsboards (insbesondere auch eins mit ATmega1280, dem mit den vielen dünnen Beinchen), das aufgrund der Nutzung einer JAVA-IDE und "Wiring" besonders einfach zu nutzen ist. Es gibt verschiedene Clones unter Namen wie Freeduino, Seeeduino etc., auch den Lilypad zum Einnähen in Kleidung und Verschaltung mittels leitender Fäden. Die neueren Versionen können über einen standardmäßig mit ausgelieferten Bootloader ohne sonstige Hardware direkt über USB bespielt werden.
  • Modularis-Einsteigerset
  • mices2 – Entwicklungsboard zum Gratis Assembler Kurs. Integriertes Programmiergerät (USB, avrisp mk2 kompatibel). Spannungsvrsorgung über USB. Platine einseitig, leicht zu bestücken. Viele Schnittstellen (1-Wire, I2C, EIA232 ...), D/A-Wandler, Mikrofonschaltung., Audioverstärker ...
  • gulostartSteckplatinen-basiertes Lernpaket / Einsteiger-Set mit ausführlicher Anleitung. Verwendet ausschließlich Open-Source-Software, kann fast alle DIP-ATtiny/ATmega programmieren. Für USB-Schnittstelle.
  • Atmegaboard Eagle Daten für ein Testboard zur Nutzung 2er Atmegas gleichzeitig. Weitere Adapterplatinen sowie Source Code sind ebenfalls verfügbar.
  • tinyUSBboard – Ein sehr sehr preiswertes, Arduino und BASCOM kompatibles Board mit onboard USB Interface und auswechelbarem Bootloader.
  • verschiedene Boards von Olimex

Projekte

Siehe dazu auch die Artikel in der Kategorie AVR-Projekte.

Tutorials

Literatur

  • C.Kühnel Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR ISBN 3898119378 (2000) ISBN 3907857046 (2.Aufl.2004) ISBN 978-3-907857-14-4 (3. überarbeitete und erweiterte Auflage 2010)
  • R.Mittermayr AVR-RISC: Embedded Software selbst entwickeln Franzis 2008 ISBN 3772341071
  • F.Schäffer AVR: Hardware und C-Programmierung in der Praxis Elektor 2008 ISBN 3895762008 Webseite des Autors, Codebeispiele und Leseprobe
  • G.Schmitt Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie...Oldenbourg 4.Aufl.2008 ISBN 3486587900 ISBN 3486580167 (2006) ISBN 3486577174 (2005) Verlags-Webseite mit Buchauszügen
  • M.Schwabl-Schmidt Programmiertechniken für AVR-Mikrocontroller Elektor 2008 ISBN 3895761761 Webseite des Autors
  • M.Schwabl-Schmidt Systemprogrammierung für AVR-Mikrocontroller Elektor 2009 ISBN 3895762180
  • W.Trampert Messen,Steuern und Regeln mit AVR Mikrocontrollern Franzis 2004 ISBN 3772342981
  • W.Trampert AVR-RISC Mikrocontroller Franzis ISBN 3772354769 (2003) ISBN 3772354742 (2002) ISBN 3772354750 (2000)
  • P.Urbanek Embedded Systems: Ein umfassendes Grundlagenwerk ... (2007) ISBN 3981123018 Inhaltsverzeichnis
  • S./F.Volpe AVR-Mikrocontroller-Praxis Elektor 2001 ISBN 3895760633
  • R.Walter AVR-Mikrocontroller-Lehrbuch 3. Auflage Denkholz 2009 ISBN 9783981189445 Webseite des Autors, Buch-Download in geringer Auflösung


Tipps & Hinweise


Weblinks

  • AVR101 – systm Videocast von Revision3 Internet Television (engl.).

Weitere Verweise (Links) auf externe Informationen und Projekte finden sich in der Linksammlung.


Anmerkungen

Es gibt nur wenige Typen mit D/A-Wandler (z.B. AT90PWM2); hierfür benutze man PWM oder externe Bausteine.

Die Takterzeugung ist bei AVRs recht einfach gehalten. So gibt es bei den meisten Modellen keine internen PLLs um „krumme“ Prozessor- oder Peripherietaktfrequenzen zu erzeugen, noch ist der Peripherie-Takt vom Prozessortakt abkoppelbar. Einige AVR verfügen über eine PLL, um damit z.B. einen Timer mit Frequenzen über der Systemfrequenz zu takten oder höhere Systemfrequenz aus niederfrequenteren Taktquellen zu erzeugen (vgl. u.a. Datenblätter ATtiny85 und ATtiny861). Die Baudrate serieller Schnittstellen lässt sich nicht gebrochen einstellen, so dass gegebenenfalls ein zur Baudrate passender Quarz oder Resonator zu verwenden ist.

Für die serielle Programmierung des Flash-Speichers sind 4 Datenleitungen erforderlich und die Taktversorgung muss sicher gestellt sein. Es ist darauf zu achten, dass bei Einstellung der Taktquelle (Fuses) auch die vorhandene Taktquelle ausgewählt wird. Für die Hochvolt-Programmierung (so genannt wegen 12 V am RESET-Anschluss) werden je nach Chip nur 3 Signalleitungen (kleinere ATtinys) oder sehr viele Leitungen benötigt (ATmegas und große ATtinys). Einige Modelle verfügen über eine Debugwire-Schnittstelle, für die im Betrieb zwei Leitungen ausreichen.

Nicht zu verwechseln ist die 8-bit-AVR-Serie mit AVR32. Letztere ist eine 32-bit-Architektur mit recht viel Ähnlichkeit zu Controllern auf Basis eines ARM-Cores. Controller der ATxmega-Serie verfügen über mehr Funktionen als die "traditionellen" AVR (z.B. DMA- und Eventsystem, 12Bit A-D-Wandler). ATxmega sind jedoch für 3,3V-Betrieb ausgelegt und ausschließlich in SMD-Bauform erhältlich.