AVR Allgemein

Bei den AVR-Mikrocontrollern von fr├╝her Atmel / heute Microchip handelt es sich 8-Bit RISC-Prozessoren, deren Kern speziell f├╝r die Programmierung mit Hochsprachen wie C optimiert wurde. Innerhalb der AVR-Familie gibt es drei Serien: die klassischen AVRs (AT90Sxxxx), die ATMega und ATtiny. Die Serien unterscheiden sich untereinander im Befehlsumfang und durch die Peripherieeinheiten.

Bei den “klassischen AVRs” handelt es sich um den urspr├╝nglichen AVR-Kern. Die Controller dieser Gruppe sind inzwischen veraltet und werden nicht weiterentwickelt. F├╝r die meisten Controller gibt es aber Ersatztypen aus den anderen Serien.

Die aktuellen Controllerkerne werden in der ATtiny, ATMega- und ATxmega- Familie verwendet. In der ATtiny-Familie sind Controller mit wenigen IO-Pins und kleinem Speicher zusammengefasst. Die AT(x)Mega-Familie enth├Ąlt entsprechend die “gro├čen” Controllertypen.

Die folgenden Eigenschaften zeichnen die AVR-Controller aus:

  • 8-Bit Risc-Controllerkern
  • maximaler Takt 16 MHz bzw. 20 MHz, ATxmega bis 32Mhz
  • integrierter Flashspeicher: ATtiny 1kB … 8kB, ATMega 4kB … 256kB, ATxmega … 384
  • integriertes RAM: ATtiny 32Byte … 512Byte, ATMega 512Byte … 8kB, ATxmega … 32kByte
  • Varianten der ATMega-Serie mit externen Bus erh├Ąltlich
  • verschiedene Peripherieeinheiten integriert, wie
    USART
    10-Bit AD-Wandler,
    Timereinheiten,
    interner EEPROM,
    CAN-Interface usw.
  • interner Oszillator oder externer Taktgenerator (RC oder Quarz) w├Ąhlbar
  • weiter Betriebsspannungsbereich von 1.8V/2.6V … 5.5V
  • geringe Stromaufnahme
  • neuere ATMega-Typen ├╝ber JTAG-Interface programmierbar

Die AVR-Controller sind sehr gute Universalcontroller, die sehr viel leistungsf├Ąhiger sind als die meisten Controller der PIC und 8051-Familie. Durch die moderne Architektur der AVRs ist die Arbeit mit diesem Controllern auch sehr viel angenehmer als bei den vorher erw├Ąhnten Controller-Famillien, da es keine Segmentierung/Banking des Speichers gibt, au├čer der bei Harvard-Architekturen ├╝blichen Trennung von Daten- und Programmspeicher.

Ein weiterer Vorteil ist, dass f├╝r diese Controller auch eine Version des GCC-Compilers (WinAVR) erh├Ąltlich ist. Inzwischen wird der Compiler sogar automatisch in die kostenlose Entwicklungsumgebung “Microchip Studio” (ehemals AVR-Studio) von Microchip eingebunden.

Eine weitere kosteng├╝nstige Entwicklungsumgebung ist “BasCOM-AVR”. Bei BasCom handelt es sich um einen sehr leistungsf├Ąhigen Basic-Compiler, der sich sehr gut f├╝r Anf├Ąnger im Bereich Mikrocontrollerprogrammierung eignet, weil f├╝r die Peripherie bereits Funktionen f├╝r Initialisierung und Zugriff vorhanden sind. Neben der Vollversion, die 79- Euro kostet, gibt es auch eine Demo-Version, die voll Funktionsf├Ąhig aber auf 2kB Programmcode beschr├Ąnkt ist.

Die Programmierung des internen Flashspeichers erfolgt durch ein einfaches drei Draht Interface oder die JTAG-Schnittstelle. F├╝r beide Programmierschnittstellen sind sehr einfache Adapter f├╝r die parallele Schnittstelle erh├Ąltlich, die auch sehr einfach selbst nachgebaut werden k├Ânnen. Weitere Infos zu den Programmiertools und Inferfaces gibt es im AVR-Tips-Bereich.

Vorteilhaft f├╝r den Hobbybereich ist au├čerdem, dass es fast alle AVR-Controllertypen auch noch im DIL-Geh├Ąuse gibt. Dadurch sind diese Controller nat├╝rlich sehr gut f├╝r Schaltungen auf Lochrasterplatinen geeignet. F├╝r kommerzielle Anwendungen sind aber auch SMD-Varianten, wie TQFP und CSP, lieferbar.

F├╝r den Hobbybereich sind diese Mikrocontroller ideal. Neben den oben aufgef├╝hrten Punkten tr├Ągt dabei auch die sehr aktive Internet Community aus Hobbybastlern bei, die jede Menge Projekte, Tutorials, Foren usw. zur Verf├╝gung stellt (Siehe auch AVR-Tips). Dadurch ist der Einstieg in diese Controllerfamilie f├╝r Anf├Ąnger relativ leicht.

F├╝r Einsteiger in den Bereich der Microkontroller und Elektronik ist besonders das Arduino-Projekt interessant, dass eine g├╝nstige Entwicklungsplattform zur Verf├╝gung stellt. Die Hardware-Seite besteht aus verschiedenen einfachen Controllermodulen, die ├╝ber USB vom PC aus programmiert und angesprochen werden k├Ânnen. Die Softwareentwicklung erfolgt in einer integrierten Open Source Entwicklungumgebung, die bereits viele Bibliotheken f├╝r die Ansteuerung der Hardware mitbringt. Au├čerdem gibt es eine gro├če Community, die dieses System einsetzt und unterst├╝tzt.

Nachteilig an der AVR-Familie sind einzig die Peripherieeinheiten, die im Vergleich mit den Peripherieeinheiten des MSP430 oder der Fujitsu-Controller, recht einfach gehalten sind. Einerseits ist das sehr sch├Ân, weil die Programmierung dadurch erleichtert wird, andererseits sind die Peripherieeinheiten dadurch bei weitem nicht so flexibel einsetzbar. Dies ist aber nur bei speziellen Aufgabenstellungen ein Nachteil.

Ein weiterer Punkt, der zumindest gew├Âhnungsbed├╝rftig ist, ist das die Einstellungen z.B. welcher Taktgenerator benutzt werden soll ├╝ber so genannte Fuses festgelegt wird. Diese Fuses k├Ânnen zwar theoretisch beliebig oft neu programmiert werden, allerdings kommt es in der Praxis leicht mal vor, dass man die Fuses falsch setzt. In diesem Fall l├Ąuft der Controller dann nicht mehr an und kann dann auch nicht mehr direkt in der Schaltung neuprogrammiert werden. Ein Beispiel f├╝r einen solchen Fall ist z.B. wenn der Controller ├╝ber die Fuses auf einen externen Quarz eingestellt wird und an den entsprechenden Pins kein Quarz angeschlossen ist.

Als “kleines” Beispielprojekt mit einem AVR-Controller befindet sich hinter dem “[AVR-DCF-CLOCK](/de/electronic/avr/avr-dcf-clock “AVR-DCF-Clock”"-Link die Beschreibung f├╝r eine (naja, nenne ich es mal) “Designer”-Funkuhr mit LED-Anzeige auf ATMega-Basis.