Microchip AVR

Familie von Mikrocontrollern
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 1. Januar 2007 um 11:23 Uhr durch Pelo-d (Diskussion | Beiträge) (Weblinks). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Atmel AVR ist eine 8 bis 32 Bit RISC-Prozessor-Familie der Firma Atmel. Ähnlich wie der PICmicro von Microchip hat auch die AVR-Familie eine „bekennende“ Anhängerschaft. Die Typen unterteilen sich in die Gruppen

  • AT90Sxxxx: die „Klassischen“ AVRs, für neue Designs nicht mehr empfohlen
  • ATtiny: wenige Ein/Ausgänge, geringer Speicher und damit Preis, auf geringen Stromverbrauch optimiert
  • ATmega: gleicher Core, jedoch größerer Speicher und IOs, daher bis zu 100-polige Gehäuse
  • Sondertypen: einige Spezialmodelle, z. B. für Ansteuerung von LCDs, Akku-Ladegeräten oder Lichtsteuerungen
  • AVR32-Architektur: 32-bit RISC CPU mit MMU, sowie u. a. DSP-Funktionalität, …

Programmierung

 
AT90S2333

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

Hardware

Fast alle Typen können über eine ISP-Schnittstelle (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.

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 untersuchen und von Fehlern befreien (debuggen) kann.

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 Microcontroller eher unüblich – gibt es 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/C++ GNU GPL Win32, Linux, Mac OS kostenlos, quelloffen
AVR Studio Assembler Atmel proprietär Win32 kostenlos
KontrollerLab Assembler/C/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 Patrick Borek Freeware Win32 mit Simulator, kostenlos
NanoVM Java Till Harbaum GPL Win32, Linux kostenlos, quelloffen
Embedded Pascal for the AVR Pascal ? Shareware Win32
IAR Embedded Workbench for AVR C/C++ IAR proprietär Win32
KEIL C compiler for AVR C KEIL proprietär Win32 Keine Classic AVR
myAVR Workpad Assembler C myAVR proprietär Win32 Demo-Version verfügbar
SiSy AVR Assembler C/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 Platformunabhängig kostenlos, quelloffen
CodeVisionAVR C HP InfoTech proprietär Win32 Demo-Version verfügbar

RISC-Architektur

Ein Vorteil gegenüber anderen Mikroprozessor-Familien ist, dass sich dank der RISC-Architektur die meisten Befehle auf Register 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 mehr unbedingt auf Assembler-Ebene begeben.

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 62
ATmega 64–77

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.

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 (Computer) (oder "w"(work)-Register bei PIC), um dann mit ihnen Operationen durchführen zu können, entfällt hiermit.

AVR32 Architektur

Die Atmel 32-bit MCU/DSP RISC Architektur zeichnet sich insbesondere durch hohen Durchsatz bei niedriger Leistungsaufnahme aus, was bei tragbaren, batteriebetriebenen Systemen zwingende Voraussetzung für Entwickler und Anwender ist. Verfügbar ist bereits der erste Mikrocontroller AT32AP7000 sowie weitere AP700x Derivate dieser neuen AVR32 Familie AP7000.

Die Entwickler des AVR32 RISC Prozessors achteten darauf, mehr Daten mit weniger Taktzyklen zu verarbeiten und somit die gesamte Stromaufnahme zu optimieren und zu reduzieren. JTAG Debug Schnittstelle und OCD-System (On-Chip Debug System) bilden ein effizientes System zur Programmierung und Fehlersuche. Daten- und Befehlscache beschleunigen zusätzlich das System. Die MMU gestattet die Portierung eines Betriebssystems, wie z. B. Linux / Embedded Linux / Embedded Real-Time Linux. Ein „Tightly coupled Bus“ bildet eine schnelle Anbindung an den Pixel-Coprozessor. Der Kern des AVR32 erreicht einen höheren Datendurchsatz, indem er nicht-produktive Prozessortakte möglichst vermeidet.

Der AVR32 erzielt eine höhere Rechenleistung pro MHz als viele andere auf dem Markt erhältlichen 32-bit CPUs auf Grund der w.o. erwähnten Besonderheiten seiner Architektur.

Mit der Verfügbarkeit des AT32AP7000, welcher als „Vollausbau“ bezeichnet werden kann, ist es möglich, sämtliche Ausbaustufen dieser Familie zu entwickeln und zu evaluieren. Alle weiteren Derivate werden bis Ende 2006 zur Verfügung stehen und somit zur Optimierung der Ressourcen ihren Beitrag leisten.

Die AP700x Derivate stellen nur einen kleinen Teil der zukünftigen, geplanten AVR32 Mitglieder dar. Künftig wird es Lösungen mit zusätzlicher hoch integrierter Hardware geben, welche spezifische Anwendungen optimal unterstützen werden.

Atmel hat die GNU Compiler Collection gcc 4.x als primäre Werkzeugkette (Entwicklungsumgebung) an die AVR32 Architektur angepasst.

Ab Kernelversion 2.6.19 unterstützt der Linux (Kernel) erstmals Atmels AVR32-Architektur direkt.