AVR

Wechseln zu: Navigation, Suche

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[Bearbeiten]

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 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.

  • 32 größtenteils gleichwertige Register
  • davon 1-3 16-bit-Zeigerregister (paarweise)
  • ca. 110 Befehle, die meist 1-2 Taktzyklen dauern
  • Taktfrequenz bis 32MHz
  • 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[Bearbeiten]

  • [1]: Mikropascal, mit einer eingeschränkten kostenlosen Testversion
  • 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: Kostenloser C-Compiler
  • LunaAVR: Kostenlose, objektbasierte Basic/Pascal-ähnliche Programmiersprache und Entwicklungsumgebung mit Compiler/Assembler und Disassembler (Win, Linux, Mac). http://avr.myluna.de
  • AVRA: freier 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

Boards & Starterkits[Bearbeiten]

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

Projekte[Bearbeiten]

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

Tutorials[Bearbeiten]

Literatur[Bearbeiten]


Tipps & Hinweise[Bearbeiten]


Weblinks[Bearbeiten]

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

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


Anmerkungen[Bearbeiten]

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.

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.

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.