2.   Übersicht

Der ATmega48/88/168/328 ist ein Energie sparender 8-Bit-Mikrocontroller in CMOS-Technik, der auf der AVR-RISC-Architektur basiert. Dadurch, dass die Befehle in einem einzigen Taktzyklus abgearbeitet werden, erreicht der ATmega einen Durchsatz von 1 MIPS pro MHz Taktfrequenz. Dies erlaubt es dem Systementwickler, das Verhältnis zwischen Stromverbrauch und Verarbeitungsgeschwindigkeit zu optimieren.

2.1   Blockschaltbild

Bild 2-1: Blockschaltbild
Der AVR-Kern kombiniert einen großen Befehlsvorrat mit 32 Registern, die für die allgemeine Verwendung zur Verfügung stehen. Alle 32 Register sind direkt mit der Arithmetik-Logik-Einheit (ALU) verbunden. Dadurch können zwei unabhängige Register in einem einzigen Befehl miteinander verknüpft werden, die Abarbeitung des Befehls geschieht in einem Takt-Zyklus. Die sich ergebende Architektur ist wesentlich effizienter als die in einem konventionellen CISC-Mikrocontroller.

Der ATmega bietet die folgenden Features: 4/8/16/32 KByte Flash-Speicher, 256/512/512/1024 Byte EEPROM, 0,5/1/1/2 KByte SRAM, 23 allgemeine Ein-/Ausgabepins, 32 allgemeine Arbeitsregister, drei flexible Zähler/Zeitgeber mit Compare-Modi, interne und externe Interrupts, eine serielle Schnittstelle (USART), eine byte-orientierte Zweidraht-Schnittstelle, einen seriellen SPI-Anschluss, einen 6- oder 8-Kanal-A/D-Wandler mit 10 Bit Auflösung, einen programmieren Watchdog mit gesondertem, eingebauten Oszillator und fünf auswählbaren Stromspar-Betriebsarten. Der Leerlauf-Modus hält nur die CPU an. Der Leistung-weg-Modus schaltet alle (synchronen) Takte ab, sodass der Chip bis zum nächsten Interrupt oder Reset abgeschaltet bleibt. Der Leistung-spar-Modus ermöglicht den asynchonen Zeitgeberbetrieb des Zählers 2 für eine Echtzeituhr. Der ADU-Störunterdrückungs-Modus hält alles an, außer dem Zähler/Zeitgeber 2, die Takterzeugung sowie den A/D-Wandler, um möglicht wenig interne Störeinflüsse auf das A/D-Wandlungsergebnis zu haben. Die beiden Bereitschafts-Modi unterscheiden sich von den vorangegangenen durch einen durchlaufenden Quarzoszillator. Damit kann eine kurze Hochlaufzeit realisiert werden.

Atmel® bietet die QTouch®-Bibliothek für die Implementierung von kapazitiven Berührtasten, Schiebern und Drehrädern in AVR®-Mikrocontrollern an. Die patentetierte Ladungstransfer-Signalerfassung bietet zuverlässige Berührerkennung an und schließt komplett entprellte Reports von Tastendrücken sowie die Nachbar­tasten­unter­drückung-Technologie (Adjacent Key Suppression® AKS™) für zweifels­freie Erkennung von Eingabe­ereignissen ein. Die einfach anwendbare QTouch-Suite erlaubt es, die eigene Touch-Anwendung zu erkunden, zu entwickeln und zu debuggen.

Der Baustein wird mit Atmels nichtflüchtiger Speichertechnologie mit hoher Dichte hergestellt. Der Flash-Programmspeicher kann im System über das serielle Programmier-Interface programmiert werden oder durch einen Urlader, das in dem Mikrocontroller implementiert werden kann. Der Urlader kann jede Schnittstelle nutzen, um die Anwendung in den Flash-Speicher zu laden. Software, die sich im Urlader-Bereich des Flash-Speichers befindet, kann weiterlaufen, während der Anwendungs-Flash-Bereich gerade gelöscht oder programmiert wird, mithin echte Lesen-während-Schreiben-Funktionalität. Die Kombination der 8-Bit-RISC-CPU mit dem Flash-Speicher auf einem Chip ergibt einen leistungs­fähigen Mikro­controller, der höchste Flexibilität bei geringen Kosten für viele eingebettete Steuerungs­anwendungen bietet.

Für den Entwickler stehen eine Vielzahl von Entwicklungstools zur Verfügung, angefangen vom Mako-Assembler über Programm-Debugger und -Simulator, Emulatoren bis hin zu kompletten Entwicklungs-Kits.

2.2.   Vergleich der Controller

Die ATmega48/88/168/328 unterscheiden sich im Speicherausbau, der Urlader-Unterstützung und der Größe der Interruptvektoren. Tabelle 2-1 fasst die Unterschiede zusammen.
Table 2-1. Zusammenfassung der Speichergrößen
BausteinFlashEEPROMRAMGröße des Interruptvektors
ATmega48A
ATmega48PA
4 KByte256 Byte512 Byte1 Befehlswort pro Vektor
ATmega88A
ATmega88PA
8 KByte512 Byte1 KByte
ATmega168A
ATmega168PA
16 KByte2 Befehlsworte pro Vektor
ATmega328
ATmega328P
32 KByte1 KBytes2 KByte
Die Typen ATmega88/168/328 bieten einen echten Lesen-während-Schreiben-Selbstprogrammiermechanismus. Dabei gibt es einen separaten Urlader-Bereich; der SPM-Befehl muss in diesem Fall von dort ausgeführt werden. Der ATmega48 hat keinen derartigen Mechanismus und keinen gesonderten Urlader-Bereich. Der SPM-Befehl kann vom gesamten Flash-Speicher aus ausgeführt werden.