Einführung

Ü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