IO mittels AVR Portpins

URL: ../..dic/hardwarenahe_programmierung/avr_port_io.html

IO mittels AVR Portpins

Allgemeines link symbol

Die interne Beschaltung jedes IO Port Pins beinhaltet folgende Komponenten:

  • Schutzdioden gegenüber Masse und Versorgungsspannung (Überspannung bzw. ESD)
  • Aktivierbarer Pull-Up Widerstand
  • Aktivierbare Ausgangsstufe
  • Eingänge besitzen Schmitt-Trigger und Synchronisierung
AVR IO Pin
AVR IO Pin (Quelle: Datenblatt ATMega16, Lizenz © Atmel Corporation)

Um von der Firmware aus auf einen IO Port Pin zuzugreifen, werden drei Register benötigt. Diese drei Register fassen jeweils 8 IO Pins zusammen. Die Gruppierung von 8 IO Pins wird auch Port genannt. Der ATMega16 hat 4 solcher Ports: Port A, B, C und D. Im folgenden wird statt des Portnamens ein x verwendet.

PINx - das Eingangsregister link symbol

Das Eingangsregister zeigt den aktuellen Zustand der Pins an. Der aktuelle Zustand wird auch eingelesen, wenn der Pin als Ausgang beschalten ist. Die notwendigen Pegel zur Detektion einer 0 oder 1 ist abhängig von Versorgungsspannung und Temperatur.

DDRx - das Richtungsregister link symbol

Das Data Direction Register legt fest, ob die jeweiligen Ausgangstreiber aktiv sind oder nicht. Bei aktivem Ausgangstreiber (DDR-Bit auf 1) wird der Pegel des entsprechenden PORTx Registerbits auf den Ausgang gelegt.

PORTx - das Ausgangsregister link symbol

Bei aktivem Ausgangstreiber wird der Ausgang entsprechend diesem Bit gesteuert. Ist der Ausgangstreiber nicht aktiv, so wird mit diesem Register der Pull-Up aktiviert.

Pin Konfiguration link symbol

Mittels der Register DDRx und PORTx können folgende Konfigurationen eingestellt werden:

DDRxn PORTxn I/O Pull-Up Kommentar
0 0 Eingang Nein Hochohmiger Eingang (Tri-State)
0 1 Eingang Ja Eingang mit Pull Up
1 0 Ausgang Nein Ausgang Low
1 1 Ausgang Nein Ausgang High