Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Microchip AVR

Microchip AVR (vormals Atmel AVR) ist eine 8-Bit-Mikrocontroller-Familie des US-amerikanischen Herstellers Microchip. Die Controller dieser Familie sind …

Inhalt5 Abschnitte
  1. 1. Überblick und Baureihen
  2. 2. Architektur, Speicher und Befehlssatz
  3. 3. Programmierung und Peripherie
  4. 4. Modellbezeichnungen und Speichergrößen
  5. 5. Erweiterte Familien, Werkzeuge und Entwicklung

Überblick und Baureihen

Microchip AVR, früher Atmel AVR, ist eine 8-Bit-Mikrocontroller-Familie des US-amerikanischen Herstellers Microchip. Mikrocontroller sind integrierte Rechner für Steuerungsaufgaben. Die AVR-Familie ist wegen ihres einfachen Aufbaus, der leichten Programmierbarkeit, kostenloser Entwicklungswerkzeuge und der Verfügbarkeit von DIP-Gehäusen auch bei Hobby-Anwendern weit verbreitet. Die Familie wurde vom ehemaligen Unternehmen Atmel entwickelt; nach dessen Aussage ist der Name AVR bedeutungslos.

Die wichtigsten Gruppen sind:

  • ATmega: größere AVR-Controller mit bis zu 256 KiB Flash-Speicher, 28- bis 100-poligen Gehäusen und integriertem Hardware-Multiplizierer.
  • ATtiny: kleinere Controller mit bis zu 16 KiB Flash-Speicher und 6- bis 32-poligen Gehäusen.
  • ATxmega: leistungsfähige 8-Bit-Controller mit erweiterten Peripheriefunktionen und DMA.
  • AT90USB: ATmega-Varianten mit USB-Controller.
  • AT90CAN: ATmega-Varianten mit CAN-Controller.
  • Sondertypen: Spezialmodelle etwa für Akku-Ladegeräte, LC-Displays sowie Motoren- und Lichtsteuerungen.
  • AT90S: veraltete „klassische“ AVR-Typen.

Die ebenfalls von Atmel entwickelte 32-Bit-Architektur AVR32 besitzt trotz Namensähnlichkeit und ähnlichem Logo kaum Gemeinsamkeiten mit der hier behandelten 8-Bit-Architektur. AVR UC3 bezeichnet Derivate dieser AVR32-Architektur und ist daher ebenfalls nicht mit den 8-Bit-AVR gleichzusetzen.

Architektur, Speicher und Befehlssatz

AVR-Mikrocontroller verwenden eine RISC-Architektur (Reduced Instruction Set Computer). Die meisten Registerbefehle lassen sich innerhalb eines Systemtakts ausführen; Ausnahmen sind unter anderem Sprung- und Multiplikationsbefehle sowie Zugriffe auf RAM und I/O-Ports. Dadurch ist die Architektur vergleichsweise schnell. Das Hardware-Design ist auf Hochsprachen wie C ausgerichtet, sodass Compiler effizienten Code erzeugen können.

Der Programmcode wird direkt aus dem integrierten Flash-Speicher ausgeführt. Besonders bei Versionen für Versorgungsspannungen unter 3,3 V begrenzt dies die maximale Taktrate des Prozessorkerns meist auf unter 10 MHz. Da die Frequenz nahezu 1:1 der Zahl der Instruktionen pro Sekunde entspricht, sind maximal etwa 10 MIPS möglich. Eine PLL zur Übertaktung des internen Prozessorkerns gegenüber dem externen Takt ist nicht vorgesehen.

Das Speicher-Management folgt der Harvard-Architektur: Flash-Speicher, RAM und EEPROM besitzen getrennte Adressräume. Die AVRs verfügen grundsätzlich über 32 Register, die direkt für Operationen verwendet werden können, wobei nicht alle denselben Leistungsumfang besitzen. Die sehr kleinen ATtiny4, ATtiny5, ATtiny9 und ATtiny10 im SOT23-6-Gehäuse haben nur 16 Register.

Der Befehlssatz ist über die Modellreihen weitgehend kompatibel. Ausnahmen sind der AT90S1200 mit eingeschränktem und der ATmega mit leicht erweitertem Befehlssatz. Je nach Flashgröße, Bootloader-Unterstützung, Multiplikationsbefehlen und Hardwareausstattung gibt es kleinere Unterschiede. Die Anzahl der Opcodes reicht von 52 beim AT90S1200 und 62 bei klassischen AT90xxxx-Typen über bis zu 123 bei ATtiny und 130–135 bei ATmega bis zu mindestens 142 bei ATXmega.

Der Befehlssatz wurde gezielt für kompilierten C-Code gestaltet. Dazu wurden unter anderem drei Adressregister vorgesehen, ein Vergleich mit Carry-Flag für effiziente 16- und 32-Bit-Vergleiche eingeführt und auf ein für Compiler ungünstiges segmentiertes Speicher-Layout verzichtet. Eine direkte Addition mit Parameter wurde entfernt, weil sich diese durch Subtraktion des Komplements ersetzen lässt; der frei gewordene Chipbereich wurde für eine direkte Addition mit 16-Bit-Parameter genutzt.

Programmierung und Peripherie

Fast alle AVR-Typen können über SPI mit einem ISP (AVR ISP, In-System Programmer) programmiert werden. Ein einfacher Adapter verbindet den Controller mit der seriellen, parallelen oder USB-Schnittstelle eines PCs. Der entscheidende Vorteil von ISP ist, dass der Mikrocontroller zum Programmieren in der Zielschaltung bleiben kann.

Alternativ ist ein HV-Programmer (High-Voltage-Programmer) mit 12 V einsetzbar. Er wird insbesondere benötigt, wenn der für ISP erforderliche Reset-Pin über Fuse-Bits deaktiviert wurde, etwa um ihn als zusätzlichen I/O-Pin zu verwenden. Fuse-Bits sind separat gesetzte Konfigurationsbits und legen unter anderem Funktionen wie externen Takt, Bootloader, Watchdog-Timer oder eine Auslesesperre des Programmspeichers fest.

Neuere kleinere Controller, darunter die ATtiny-Serie und die 32-Pin-ATmega-Familie, besitzen teilweise die Debug-Schnittstelle debugWIRE. Sie benötigt neben den Versorgungsleitungen nur die Reset-Leitung. Größere ATmega-Controller verwenden häufig JTAG mit sechs Leitungen. Damit kann ein geladenes Programm nach IEEE 1149.1 in der konkreten Hardwareumgebung untersucht und auf Programmierfehler geprüft werden.

Die Versorgungsspannungen liegen je nach Typ zwischen 1,6 V und 5,5 V. Mit externen Quarzen sind je nach Modell Taktraten bis 32 MHz möglich. Zur Peripherie gehören unter anderem ADC, Timer, Watchdog, UART, Two Wire Interface (I2C), SPI, CAN, USB, Displayinterface, Touch Controller, Analog-Komparatoren und externe Interrupts.

Modellbezeichnungen und Speichergrößen

Die Bezeichnung echter AVR-Mikrocontroller von Microchip – außer AVR32 – enthält Angaben zu Baureihe, Speicher, Ausstattung, Revision und Bauform. Das Beispiel ATmega48PA-AU lässt sich so zerlegen: „ATmega“ bezeichnet die Baureihe, „4“ steht für 4 KiB Flash, „8“ beschreibt Zusatzfunktionen und die Zahl der I/O-Ports, „PA“ bezeichnet Revision beziehungsweise stromsparende Architektur und „AU“ die Bauform.

Bei ATmega-Modellen kennzeichnet die erste Ziffer die Flashgröße in Kibibyte (KiB). RAM- und EEPROM-Größe sind nicht direkt angegeben, nehmen aber typischerweise mit der Flashgröße zu. Beispiele aus der Zuordnung sind 2 KiB Flash mit 128 Byte EEPROM bei ATtiny, 4 KiB Flash mit 256 Byte EEPROM beziehungsweise 512 Byte RAM bei ATmega, 8 KiB Flash mit 512 Byte EEPROM und 1024 Byte RAM sowie 128–256 KiB Flash mit 4096 Byte EEPROM und 4 Ki–16 KiB RAM.

Die folgenden Ziffern beschreiben bei ATmega die Ausstattung: Die Reihen 4 und 8 sind moderne pico-power-Familien mit 16–128 beziehungsweise 4–32 KiB Flash; die Reihe 0 umfasst 32–256 KiB in größeren Gehäusen, die Reihe 5 16–64 KiB und die Reihe 9 16–64 KiB mit LC-Display-Controller. Die Reihe 1 bezeichnet eine verbesserte, ältere Version des ATmega128/256. Eine fehlende Ziffer steht für Bausteine der ersten Generation, meist mit niedrigeren Taktraten, höherer Minimalspannung, weniger Interruptquellen und weniger PWM-Kanälen. Sonderfälle sind ATmega8515/8535 zum Betreiben eines SRAM sowie der ATmega640 mit mehr Hardware-Ressourcen als ein ATmega64, darunter 4 UARTs und 16 ADC-Kanäle.

Buchstaben vor dem Bindestrich geben unter anderem Revision und Spannungsbereich an: A und B bezeichnen zweite beziehungsweise dritte Revision, L/V steht für Low-Voltage, P/PA für Pico-Power mit besonders geringer Stromaufnahme in tiefen Sleep-Modi (< 1 µA), HV/HVA für Hochspannungsmodelle bis 18 V und RF für Modelle mit integriertem Transceiver im 2,4-GHz-ISM-Band. Buchstaben nach dem Bindestrich kennzeichnen die Bauform, etwa A für TQFP, C für BGA, J für PLCC, S für SOIC, M für VQFN/MLF und P für DIP. Der zweite Buchstabe unterscheidet bleihaltige, nicht mehr erhältliche Ausführungen (I) von bleifreien, RoHS-kompatiblen Ausführungen (U).

Bei ATtiny ist die Nummerierung weniger einheitlich. Die erste Ziffer bezeichnet grundsätzlich die Flashgröße, aber ATtiny5 besitzt 0,5 KiB und ATtiny4 beziehungsweise ATtiny9 besitzen 0,5 beziehungsweise 1 KiB Flash. Zusatzfunktionen und Baugröße gehen aus der Bezeichnung nicht hervor. AT90-Baureihen folgen im Wesentlichen der ATmega-Nomenklatur und ersetzen die Baureihenbezeichnung durch AT90 plus eine Sonderfunktion wie PWM, CAN, SC oder USB.

Erweiterte Familien, Werkzeuge und Entwicklung

AVR XMEGA basieren weiterhin auf der 8-Bit-AVR-Architektur, erweitern sie aber um leistungsfähige Peripherie. Je nach Baureihe A1–3, B1–3, C1–3 oder D1–3 gehören dazu mehrere DMA-Kanäle, Hardware-Kryptografie mit AES und DES, Taktraten bis 32 MHz, bis zu 384 KiB Programmspeicher, 12-Bit-ADCs, DACs und die Möglichkeit, jedem I/O-Pin einen externen Interrupt zuzuweisen. SPI, TWI und USART sind meist mehrfach vorhanden. Das Event-System kann Interrupts ohne zusätzliche Prozessorrechenzeit direkt an Peripherieeinheiten weiterleiten. XMEGA sind hinsichtlich des Befehlssatzes zu bisherigen AVR kompatibel; innerhalb der Serie bestehen je nach Gehäuseform Pin-, Quelltext- und Binärcodekompatibilität. Die Versorgung wurde jedoch auf 3,3 V abgesenkt, maximal 3,6 V, weshalb ein Austausch nur bei passender Versorgung und kompatiblen 3,3-V-Komponenten möglich ist.

Neben den Originalen existieren AVR-kompatible Nachbauten der Classic-AVR-Reihe von Integral beziehungsweise der Belmicrosystems-Gruppe aus Belarus. Genannt werden IN90S2313DW, IN90LS2323N, IN90S2323N, IN90S2333DW und IN90LS2333DW; sie werden als pinkompatibel zu entsprechenden Atmel-Typen beworben.

Für die Softwareentwicklung stehen freie Werkzeuge wie avr-as, avr-gcc, AVR-LibC, WinAVR und AVRA zur Verfügung. Weitere Entwicklungsumgebungen und Compiler unterstützen unter anderem C, C++, Assembler, Ada, Pascal, BASIC, Forth, Java oder Python. Beispiele sind Atmel Studio, Arduino, Free Pascal, GNAT Pro, KontrollerLab, BASCOM, LunaAVR, NanoVM und IAR Embedded Workbench for AVR. Daneben gibt es grafische Werkzeuge wie Flowcode for AVR und AVR IO Designer. Proprietäre Produkte sind teilweise als Demo- oder kostenlos begrenzte Versionen erhältlich.

Entwicklungs- oder Evaluation-Boards enthalten neben dem AVR typischerweise LEDs, Schalter und weitere Peripherie und erleichtern besonders Anfängern die Entwicklung und Programmierung. Offizielle universelle Boards sind STK200, STK500 und STK600; hinzu kommen spezielle Boards wie Butterfly und XPlained sowie günstige Alternativen anderer Anbieter. Die quelloffene Arduino-Plattform, die auf AVR aufbaut, erleichtert auch Personen ohne tiefgreifende technische Kenntnisse den Einstieg in Mikrocontroller.

Lernvideos zu Microchip AVR

Weiterlesen

Mikrocontroller Ein Mikrocontroller ist damit ein „Ein-Chip-Computersystem“ und bringt alle notwendigen Bausteine für einen kleinen Computer mit sich. Eine MCU unterscheidet … Flash-Speicher Flash-Speicher sind digitale Speicherbausteine für eine nichtflüchtige Speicherung ohne Erhaltungs-Energieverbrauch. Die genaue Bezeichnung dieses … Prozessorarchitektur Die Prozessorarchitektur bezieht sich auf die spezifische Struktur und Organisation eines Prozessors, der ein wesentlicher Bestandteil von Computern und … Debugger Funktionen eines Debuggers · die Steuerung des Programmablaufs, insbesondere durch Haltepunkte und die Einzelschritt-Verarbeitung von Befehlen · das Inspizieren … Mikroprozessor Ein Mikroprozessor (µP oder uP) ist ein als integrierter Schaltkreis (IC) ausgeführter Computerprozessor. Typische Beispiele von Mikroprozessoren sind die … Random-Access Memory Die gängigsten Formen gehören zu den Halbleiterspeichern. RAM wird als integrierter Schaltkreis hauptsächlich in Silizium-Technologie realisiert und in allen … Eingabe und Ausgabe Mit Ein-/Ausgabe (abgekürzt E/A; englisch input/output, kurz I/O) bezeichnet man – als Begriff aus der EDV bzw. der Informatik – die Kommunikation / Interaktion … C (Programmiersprache) C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte. Assemblersprache Eine Assemblersprache, kurz auch Assembler genannt (von englisch to assemble ‚zusammenfügen'), ist eine Programmiersprache, die auf den Befehlsvorrat eines … Instruktionen pro Sekunde Die Einheit gibt an, wie viele Maschinenbefehle (Instruktionen) ein Mikroprozessor pro Sekunde ausführen kann. 1 MIPS bedeutet, er kann eine Million … Halbleiterspeicher Ein Halbleiterspeicher (englisch semiconductor memory) ist ein auf Grundlage von Halbleitertechnik realisierter Datenspeicher. Halbleiterspeicher werden … PICmicro Bei PICmicro handelt es sich um eine Mikrocontrollerfamilie, die von der Firma Microchip Technology Inc. hergestellt wird. Ein 16-bit-Mikrocontroller …