Atmel AVR
aus Wikipedia, der freien Enzyklopädie
Atmel AVR ist eine 8 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
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
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 ü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.
[Bearbeiten] Software
Weiterhin existiert eine Vielzahl freier Entwicklungswerkzeuge, wie z. B. die für AVR-Cross-Compiling portierten GNU-Tools WinAVR bzw. gcc-avr, avr-libc.
Des Weiteren – für Mikrocontroller eher unüblich – gibt es u.a. den (proprietären) BASIC-Compiler BASCOM.
Compiler | Sprache(n) | Hersteller | Lizenz | Plattform | Besonderheiten |
---|---|---|---|---|---|
avr-as | Assembler | GNU | GPL | Win32, Linux, Mac OS | kostenlos, quelloffen |
gcc-avr | C/C++ | GNU | GPL | Win32, Linux, Mac OS | kostenlos, quelloffen |
AVR-ADA | ADA | GNU | GPL | Win32, Linux | kostenlos, quelloffen |
AVR Studio | Assembler und C/C++ | 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 | |
PyMite | Python | Dean W. Hall et al. | GPL | Win32, Linux, Mac OS | kostenlos, quelloffen |
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 | Plattformunabhängig | kostenlos, quelloffen |
CodeVisionAVR | C | HP InfoTech | proprietär | Win32 | Demo-Version verfügbar |
AVR-Chipbasic | erweitertes Tiny-Basic | Jörg Wolfram | GPL | On Chip | kostenlos, quelloffen |
[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. Auch 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.
Modell | Anzahl der Befehle |
---|---|
AT90S1200 | 52 |
AT90xxxx („Classic“) | 62 |
ATtiny | 62 |
ATmega | 64–131 |
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] Weblinks
[Bearbeiten] Herstellerseiten
[Bearbeiten] Entwicklungsumgebungen
- WinAVR (GNU C/C++-Cross-Compiler, Windowsversion)
- CDK4AVR (GNU C/C++-Cross-Compiler, Linuxversion)
- avr-libc AVR-Port der C-Standardbibliothek
- AVRco Embedded Pascal Compiler (Windows)
- Shareware Embedded Pascal Compiler (Windows)
- Plattformunabhängiger Makroassembler
- hpinfotech.ro CodeVisionAVR C-Compiler, IDE, ISProgrammer, Programmgenerator (Windows)
[Bearbeiten] Foren, Communities (teilweise Anmeldung erforderlich)
- Mikrocontroller.net Mikrocontroller-Portal: ausführliches Tutorial, deutschsprachiges Forum und Wiki
- AVR-Freaks Eine Internetcommunity für AVR-Nutzer (en)
- Mikrocontroller.com Eine Sammlung diverser Projekte und Informationen zum AVR-Controller
- Roboternetz.de AVR-Portal mit Spezialisierung auf Roboterbau
- avr-asm-tutorial.net AVR Assembler Tutorial
- scienceprog.com AVR projects and information