Übersicht
- RISC-Architektur Layout ->
- Programm- und Datenspeicher
- Timer/Counter
- serielle Interfaces: USART, SPI, Two-Wire
- ADC / Analog Comparator
- Power Management
Übersicht Pins
- Port A 8 bit I/O port, A/D Converter
- Port B 8 bit I/O port, SPI, Analog Comparator, usw.
- Port C 8 bit I/O port, JTAG, Two-wire Serial Bus, usw.
- Port D 8 bit I/O port, Timer/Counter, USART, usw.
- VCC Versorgungsspannung
- AVCC Versorgungsspannung Port A und A/D Converter
- XTAL1/2 Anschluss externen Oszillators
RISC-Architektur
- Harvard-Architektur : getrennter Programm- und Arbeitsspeicher
- single-level pipelining : Befehle werden bei jedem Taktzyklus ausgeführt
- Register-Datei mit 32 8-bit Registern
- ALU kann in einem Taktzyklus 2 Operanden aus der Register-Datei holen, den Befehl ausführen und das Ergebnis in die Register-Datei schreiben
- Status-Register : Enthält Informationen über den zuletzt ausgeführten Befehl (Carry Bit, Sign Bit, Negative Flag usw.)
- Stack befindet sich im SRAM (Arbeitsspeicher) und ist somit nur von dessen Größe begrenzt
Programm und Datenspeicher, Adressierung
- Register-Datei
- 32 Register, direkt durch Nummer (z.B. r13) und über Datenspeicheradressen (0x00 0x1f) adressierbar
- die 6 letzten Register dienen als 16-Bit Zeigerregister der Adressierung des Datenspeichers
- I/O Register
- 64 Register, direkt durch Nummer (0x00 0x3f, z.B. mit IN und OUT Befehlen) und über Datenspeicheradressen (0x20 0x5f, z.B mit LD und ST Befehlen) addressierbar
- Datenspeicher (SRAM)
- über 16-Bit Datenspeicheradressen (0x60-0x85f) adressierbar, verschiedene Adressierungsmodi (Direkt,Indirekt, Indirekt mit Verschiebung, Indirekt mit Prä-Dekrement, Indirekt mit Post-Inkrement)
- EEPROM
- adressierbar über EEPROM Access Register (EEAR(10-Bit), EEDR, EECR)
- Flash Programmspeicher
- Befehle sind 16 oder 32 Bit breit, daher reicht ein 14-bit breiter Programm-Counter um die 16000 Programmplätze zu addressieren
- in Boot Flash Sektion und Application Flash Sektion einteilbar; der gesamte Programmspeicher kann
- von der Boot Flash Sektion aus überschrieben werden (SPM Befehl) konstante Tabellen können aus dem Programspeicher geladen werden (LPM Befehl)
- Stack
- Stack wächst im Datenspeicher von oben nach unten
- Stack Pointer Register (16 Bit; SPH,SPL) muss im Programm initialisiert werden
Digitale I/O Ports
- Über 3 Register steuerbar: PORTx : Port Data, DDRx : Data Direction, PINx : Input pin, nur lesbar
- Jeder Pin kann unabhängig von den anderen gesteuert werden
- PINxn enthält unabhängig von der Konfiguration des Pins den Wert des Pins, dieser Wert ist erst nach einiger Verzögerung lesbar
Timer/Counter
- Zählvariable, die unabhängig vom Programmfluß aufgrund der Taktfrequenz erhöht wird (8-Bit und 16-Bit Breite).
- Mehrere Ereignisse können erfasst werden:
- Overflow : Die Zählvariable erreicht ihren maximalen Wert.
- Compare Match : Die Zählvariable erreicht einen vorher eingestellten Vergleichswert. Ist geeignet um z.B. einen Digital-Analog Konverter zu implementieren.
- Input Capture : Bei einem externen Ereignis wird der Wert der Zählvariable gespeichert (nur Timer 1). Z.B kann damit ein Analog-Digital Konverter implementiert werden
- Die Taktfrequenz kann die CPU-Frequenz. aber auch eine externe Uhr sein. Sie kann über den Prescaler geteilt werden (Faktor 8...1024)
- Zählmodi des Timers:
- Normal : Counter zählt hoch und läuft über
- CTC (Clear Timer on Compare Match) : Counter zählt bis Vergleichswert und wird dann auf 0 gesetzt. Der OCR Ausgang kann hierbei getoggelt werden.
- FAST PWM : Counter zählt hoch und läuft über, OCR Ausgang wird beim Erreichen des Vergleichswertes auf 0 und beim Überlauf auf 1 gesetzt.
- Phase Correct PWM : Counter zählt hoch und bei Überlauf wieder herunter, OCR Ausgang wird beim Hochzählen, sobald der Vergleichswert erreicht ist, auf 0 und beim Herunterzählen auf 1 gesetzt.
Serielle Schnittstellen
- Serial Peripheral Interface SPI
- erlaubt high-speed Datentransfer zwischen Atmega32 und Peripheriegeräten
- benutzt 4 Leiter, full-duplex
- USART
- Universal Synchronous und Asynchronous serial Receiver and Transmitter
- voll duplex, synchron oder asynchrone Operationen, Parity Generierund und Check,
- Datenüberlauf Kontrolle, Frame Error Check, Noise Filtering
- Two-wire Serial Interface TWI (I2C)
- bis zu 128 Geräte an einen bi-direktionalen Bus anschliesbar (2 Kabelbus)
- 7-bit Adressen für alle Geräte, Mechanismus zum Auflösen von Bus-Konflikten im TWI-Protokoll
- bis zu 400 kHz Datentransfer Geschwindigkeit
Analog Digital Converter
- 10-bit Auflösung, +/-2 LSB Genauigkeit, 65 260 µs Konvertierungzeit, 8 Eingangskanäle zum Multiplexer, verschiedene Startmöglichkeiten
- Operation: konvertiert analoge Eingangsspannung zu 10 bit Digitalwert durch sukzessives Annähern
- im Sleep Modus betreibbar, um Rauschen der CPU zu reduzieren
Analog Comparator
- Funktion : vergleicht Spannungen am Pin AIN0 und Pin AIN1, ist U an AIN0 größer als U an AIN1, dann wird ACO gesetzt
- kann die Input Capture Funktion von Timer/Counter1 schalten