Dieses Kapitel enthält eine Übersicht über die Register, die zur Dateneingabe oder Datenausgabe des Atmega328P verwendet werden. Es kann hilfreich sein, die Pinmap beim Programmieren in einem Fenster geöffnet zu lassen. Hier ist der Pin Mapping-Plan des vorherigen Kapitels noch einmal dargestellt:



Abb.: Pin Map des Controllers; Quelle: https://www.arduino.cc/en/Hacking/PinMapping168

Aus der Grafik lässt sich zu jedem Pin des Arduinos das jeweilis zugehörige Datenrichtungsregister ermitteln. Beispielsweise gehört der digitale Pin 0 zum Datenrichtungsregister D (PD0). Der digitale Pin 13 gehört zum Datenrichtungsregister B (PB5).


Datenrichtungsregister DDRx

Die folgende Tabelle behandelt die Register des Mikrocontrollers, welche die digitalen Pins konfigurieren. Zum Beispiel wird der digitale Pin 0 über das Datenrichtungsregister DDRD (siehe Pin Mapping Plan | digitaler Pin 0 -> PD0) mit der Bit-Nr. 0 entweder als Eingang oder als Ausgang konfiguriert. Standardmäßig sind alle digitalen Pins als Eingänge initialisiert.

Konfiguration der digitalen Pins als Ein- oder Ausgang

Abb.: Datenrichtungsregister; Quelle: BBS2


Datenausgaberegister PORTx

Die Register PORTD bzw. PORTB dienen der Datenausgabe oder der Aktivierung von Pull-Up-Widerstände. Ersteres erfolgt bei vorheriger Konfiguration als Datenausgang, letzteres bei Dateneingang (siehe vorherige Tabelle). Was Pull-Up-Widerstände sind, wird in einem späteren Kapitel erklärt.

Wird wie im vorherigen Beispiel Bit-Nr. 0 des Registers DDRD auf Eins gesetzt (Ausgabe-Pin), kann der digitale Ausgang 0 des Arduinos bei Setzen von Bit-Nr. 0 auf logisch Eins des PORTD Registers auf High-Pegel gesetzt werden (+5V am digitalen Pin 0). Wird Bit-Nr. 0 des PORTD Registers  auf 0 zurückgesetzt, so wird der digitale Pin 0 auf Low-Pegel gesetzt (0V am digitalen Pin 0).

Datenausgabe auf den Pins / Konfigurtion von Pull-Up-Widerständen

Abb.: Datenausgaberegister; Quelle: BBS2


Dateneingaberegister PINx

Ist ein digitaler Pin als Eingang konfiguriert (siehe erste Tabelle), kann sein Zustand (high oder low) abgefragt werden. Dies geschieht über die Register PIND und PINB.

Beispiel: Bit-Nr. 0 des Datenrichtungsregisters DDRD ist auf 0 gesetzt. Damit ist der digitale Pin 0 als Eingang konfiguriert. Sein Zustand kann über Bit-Nr. 0 des Dateneingangsregister D (PIND) abgefragt werden. Liegt an Pin 0 des D-Ports ein High-Pegel an, so hat das Bit Nr. 0 in PIND den Wert 1, bei Low-Pegel (0V) hat es den Wert 0.

Abfrage von Eingangspins

Abb.: Dateneingangsregister; Quelle: BBS2

Zuletzt geändert: Montag, 28. Februar 2022, 11:17