Mikrocontroller & Prozessorarchitektur

Atmel AVR

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

Atmel AVR ist eine 8 Bit RISC-Prozessor-Familie der Firma Atmel. Die Typen unterteilen sich in die Gruppen

  • ATmega: große AVR-Controller mit bis zu 256 KB[1] Flash-Speicher in 28- bis 100-poligen Gehäusen und mit integriertem Hardware-Multiplizierer.
  • ATtiny: kleinere AVR-Controller mit bis zu 8 KB Flash-Speicher in 8- bis 20-poligen Gehäusen.
  • AT90USB: ATmega mit integriertem USB-Controller
  • AT90CAN: ATmega mit CAN-Controller
  • Sondertypen: einige Spezialmodelle, z. B. zur Ansteuerung von Akku-Ladegeräten, LC-Displays und für Motoren- oder Lichtsteuerungen.
  • AT90S: veraltete Typen, die „klassischen“ AVRs

Unter dem Namen AVR32 hat Atmel eine 32-bit-RISC-Architektur mit DSP- und SIMD-Funktionalität entwickelt. Trotz der Namensähnlichkeit weisen die beiden Architekturen kaum Gemeinsamkeiten auf.

Inhaltsverzeichnis

[Bearbeiten] Programmierung

AT90S2333
AT90S2333
Pin-Belegung eines SPI-Kabels zur ISP, wie es von manchen Herstellern verwendet wird.
Pin-Belegung eines SPI-Kabels zur ISP, wie es von manchen Herstellern verwendet wird.

Die große Beliebtheit der AVRs auch bei Hobby-Anwendern ergibt sich u. a. aus der einfachen Handhabung.

[Bearbeiten] Hardware

Fast alle Typen können per SPI über einen ISP (AVR ISP, In-System Programmer) programmiert werden, die über simple Programmieradapter Anschluss an die serielle, parallele oder USB-Schnittstelle eines PCs findet. Die Besonderheit liegt in der Möglichkeit, den Prozessor nicht aus der Zielschaltung herausnehmen zu müssen, um ihn mit der extern entwickelten Software zu programmieren. Somit lassen sich Anpassungen (z.B. Schaltzyklen oder Auslöseschwellen) vor Ort im "laufenden" Betrieb vornehmen.

Neuere Typen besitzen auch eine JTAG-Schnittstelle, über die man das in den Mikrocontroller heruntergeladene Programm mittels Zusatzhardware/-software nach dem IEEE-Standard 1149.1 in einer konkreten Hardwareumgebung untersuchen und von Fehlern befreien (debuggen) kann.

[Bearbeiten] Software

Weiterhin existiert eine Vielzahl freier Entwicklungswerkzeuge, wie z. B. die für AVR-Cross-Compiling portierten GNU-Tools WinAVR bzw. avr-gcc, avr-libc.

Des Weiteren – für Mikrocontroller eher unüblich – gibt es u.a. den (proprietären) BASIC-Compiler BASCOM.

Übersicht: AVR-Compiler und Hersteller (unvollständig)
Compiler Sprache(n) Hersteller Lizenz Plattform Besonderheiten
avr-as Assembler GNU GPL Win32, Linux, Mac OS kostenlos, quelloffen
avr-gcc C++ GNU GPL Win32, Linux, Mac OS kostenlos, quelloffen
avr-gcc C GNU GPL Win32, Linux, Mac OS kostenlos, quelloffen
AVR-ADA Ada GNU GPL Win32, Linux kostenlos, quelloffen
AVR Studio Assembler, C++ und C Atmel proprietär Win32 kostenlos
KontrollerLab Assembler, C++ und C cadManiac.org GPL Linux Entwicklungsumgebung, kostenlos, quelloffen
AVRco Pascal E-LAB Computers proprietär Win32 Demo-Version verfügbar
BASCOM BASIC-Dialekt MCS Electronics proprietär Win32 Demo-Version verfügbar
mBasic BASIC nettypes.de proprietär Win32 kostenlos zur privaten Verwendung, spez. Hardware erforderlich
NanoVM Java Till Harbaum GPL Win32, Linux kostenlos, quelloffen
amforth Forth Matthias Trute GPL Win32, Linux kostenlos, quelloffen
Embedded Pascal for the AVR Pascal  ? Shareware Win32
PyMite Python Dean W. Hall et al. GPL Win32, Linux, Mac OS kostenlos, quelloffen
IAR Embedded Workbench for AVR C++ und C IAR proprietär Win32 MISRA support, hohe Codequalität, teuer
myAVR Workpad Assembler C myAVR proprietär Win32 Demo-Version verfügbar
SiSy AVR C++ und C Programmablaufplan UML-Klassendiagramm Laser&Co Solutions proprietär Win32
Algorithm Builder Assembler, graphisch Gennady Gromov proprietär Win32 Demo-Version verfügbar
AVRA Assembler, AVR Studio kompatibel, erweiterte Makrosprache Jon A. Haugum, Tobias Weber GPL Plattformunabhängig kostenlos, quelloffen
CodeVisionAVR C HP InfoTech proprietär Win32 Demo-Version verfügbar
AVR-Chipbasic2 erweitertes Tiny-Basic Jörg Wolfram GPL On Chip kostenlos, quelloffen
MikroPascal for AVR Pascal Mikroelektronika proprietär Win32 2K Demo-Version verfügbar

[Bearbeiten] RISC-Architektur

Ein Vorteil gegenüber anderen Mikroprozessor-Familien ist, dass sich dank der RISC-Architektur die meisten Register-Befehle innerhalb eines Systemtakts abarbeiten lassen, ausgenommen Sprung- und Multiplikationsbefehle, sowie Zugriffe auf das Speicherinterface (u.a. RAM und I/O-Ports). Somit ist diese Architektur sehr schnell im Vergleich zu anderen.

Durch das auf Hochsprachen wie C ausgelegte Hardware-Design können auch Compiler sehr effizienten Code erzeugen, und man muss sich nicht zwingend auf Assembler-Ebene begeben.

Allerdings wird der binäre Programmcode, wie bei vielen anderen Mikroprozessoren mit integriertem Programmspeicher auch, direkt aus dem Flash-Speicher heraus ausgeführt. Dadurch kommt es vor allem bei den Chipversionen für geringe Versorgungsspannungen von unter 3,3 V zu vergleichsweise geringen maximalen Taktraten des Prozessorkerns von meist unter 10 MHz. Da die Frequenz fast 1:1 in MIPS verwertet wird, entspricht dies maximal 10 MIPS. Es besteht keine Möglichkeit den internen Prozessorkern mithilfe einer PLL mit einer gegenüber dem externen Takt erhöhten Taktrate zu betreiben. Diese Einschränkung ist durch die Integration der Flash-Speichertechnologie bedingt. Zum Vergleich: Mikroprozessorarchitekturen wie der Blackfin, welche den Programmcode vor der Ausführung von dem nicht flüchtigen Flash-Speicher erst in einen internen SRAM-Speicher kopieren, verfügen über Taktraten des Prozessorkerns von über 500 MHz bei Versorgungspannungen des CPU-Kerns von unter 2 V bei in etwa gleich geringem Stromverbrauch.

[Bearbeiten] Befehlssatz

Im Gegensatz zu den PICmicro-Prozessoren wurde der AVR-Befehlssatz über alle Modelle – abgesehen vom AT90S1200 mit eingeschränktem Befehlssatz und vom ATmega mit leicht erweitertem Befehlssatz – kompatibel gehalten. Kleinere Unterschiede im Befehlsumfang gibt es jedoch aufgrund unterschiedlicher Flashgröße, Bootloader-Support, Multiplikationsbefehle, etc.

Tabelle: Anzahl Opcodes der AVR-Familien
Modell Anzahl der Befehle
AT90S1200 52
AT90xxxx („Classic“) 62
ATtiny bis 123
ATmega 130–135

Die AVR-Prozessoren sind für die effiziente Ausführung von kompiliertem C-Code gestaltet worden. Noch vor Fertigstellung des AVR-Kerns wurde mit der Entwicklung eines C-Compilers begonnen, um dadurch Optimierungspotential zu erkennen, etwa:

  • Die Instruktion „Addition mit direktem Parameter“ (add immediate) wurde entfernt, denn anstatt dieser Instruktion kann ebenso gut der Befehl „Subtrahiere direkt“ (subtract immediate) mit dem Komplement verwendet werden.
  • Der dadurch auf dem Wafer frei werdende Platz wurde dann zum Realisieren einer „Addition mit direktem 16-Bit-Parameter“ (add immediate word) genutzt.
  • Ein Befehl wie „Vergleich mit Carry-Flag“ (compare with carry) wurde eingeführt, um einen effizienten Vergleich von 16- und 32-Bit-Werten – wie er in Hochsprachen an der Tagesordnung ist – zu ermöglichen.
  • Anstatt zwei Adressregistern wurden drei Adressregister vorgesehen.
  • Auf ein anfangs geplantes segmentiertes Speicher-Layout wurde komplett verzichtet, weil dieses nur schwer von Compilern zu handhaben ist.

[Bearbeiten] Speicherarchitektur

Das Speicher-Management folgt den Richtlinien der Harvard-Architektur. Es gibt also getrennte Adressräume für den Flash-Speicher, das RAM und das EEPROM. Im Gegensatz zu einfacheren Mikrocontrollern besitzen die AVRs 32 Register, mit welchen direkt Operationen ausgeführt werden können. Ein umständliches Verschieben von Werten aus dem RAM in einen Akkumulator (oder „w“ (work)-Register bei PIC), um dann mit ihnen Operationen durchführen zu können, entfällt hiermit.


[Bearbeiten] AVR XMEGA

Diese Serie wurde Ende Februar 2008 auf den Herstellerseiten angekündigt[2]. Es handelt sich dabei um Mikrocontroller mit erweiterten Peripherien und Funktionen, die jedoch allesamt auf der 8-Bit-AVR-Architektur basieren.

Im Einzelnen handelt es sich bei den Erweiterungen unter Anderem um:

  • 4 DMA-Kanäle
  • Hardware-Kryptographie (AES und DES)
  • Taktraten bis 32 MHz
  • Programmspeicher von bis zu 384 KB
  • Die ADCs haben nun eine Auflösung von 12 Bit
  • DACs sind hinzugekommen
  • Jedem Pin ist ein Externer Interrupt zuweisbar
  • Eight-channel Event System

Einige der Peripherien wurden verbessert und sind jetzt meist mehrfach vorhanden (zB. SPI, TWI, USART).

Geplant sind noch Varianten mit USB und Ethernet.


Ferner wurde das Interrupt-System überarbeitet; die Bausteine der neuen Serie verfügen über ein sogenanntes Event-System, welches es erlaubt, die eintreffenden Interrupts verschiedener Peripherieeinheiten unmittelbar an ebensolche weiterzuleiten, ohne dass dazu die Rechenzeit des Prozessors in Anspruch genommen werden muss (Hardware-Routing).

Laut Atmel sind die Bausteine der XMEGA-Serie hinsichtlich des Befehlssatzes absolut kompatibel mit den bisher existierenden AVR-Bausteinen. Innerhalb der XMEGA-Serie selbst sind alle zu den jeweiligen Gehäuseformen pin-, quelltext- und binärcodekompatibel. Einige Versionen sind zu bestehenden Prozessoren pinkompatibel. Leider wurde die Versorgunsspannung abgesenkt, so dass ein Austausch in einem bestehenden Design nur möglich ist, wenn diese bereits in dem abgesenkten Spannungsbereich (max. 3,6 V) arbeitet.

[Bearbeiten] Deutschsprachige Literatur

  • Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie. Programmierung in Assembler und C - Schaltungen und Anwendungen von Günter Schmitt: Umfassende Einführung in dritter Auflage in die AVR Architektur (Tiny und MEGA), viele Beispiele in Assembler und C
  • AVR-RISC Mikrocontroller von Wolfgang Trampert: Hardware- und Assembler-orientiert, leider nur Classic-AVRs
  • AVR-Mikrocontroller-Lehrbuch von Roland Walter: Systematisches Lehrbuch, basiert auf ATmega8/BASCOM, (komplett online verfügbar)
  • AVR-Mikrocontroller-Praxis von Safinaz und Francesco Volpe: Hauptsächlich Befehlssatz des AVR-Assemblers in deutsch
  • Programmieren der AVR RISC Microcontroller mit BASCOM von Claus Kühnel: Systematisches Buch, Schwerpunkt auf BASCOM, jedoch auch mit Assembler-Routinen
  • Embedded Systems von Peter Urbanek: Einführung in die AVR-Architektur mit Beispielen in C für viele I/O-Module auf Basis des ATmega16. Anschluss eines externen CAN-Controllers mit Beispielen zum Senden und Empfangen.
  • AVR-RISC: Embedded Software selbst entwickeln von Roman Mittermayr: Einführung in Assembler für die ATmega/ATtiny-Serie anhand verschiedener Projekte; wichtigste Grundlagen der C-Programmierung

[Bearbeiten] Weblinks

[Bearbeiten] Herstellerseite

  • ATMEL - AVR Produktseite (en)

[Bearbeiten] Entwicklungsumgebungen

  • WinAVR - GNU C u. C++-Cross-Compiler, Windowsversion
  • CDK4AVR - GNU C u. C++-Cross-Compiler, Linuxversion
  • KontrollerLab - KDE basierte IDE (verwendet avr-gcc, uisp und avrdude)

[Bearbeiten] Weiterführende Links

[Bearbeiten] Einzelnachweise

  1. Die Präfixe K, M, G stehen hier für Zweierpotenzen (210, 220, 230). Beim Überfahren des Schriftzugs mit der Maus öffnet sich ein Tooltip, das die Umrechnung in die entsprechenden dezimalen Einheiten (103, 106, 109) zeigt. Näheres siehe Byte.
  2. http://www.atmel.com/products/AVR/default_xmega.asp
Copyright © 2005-2010 Hardware-Aktuell. Alle Rechte vorbehalten.