Anschlüsse der AVR® Mikrocontroller-FamilieDie Anschlüsse der AVR-Microcontroller werden auch als GPIO-Pins (General-Purpose-Input-Output-Pin). Sie sind auf vielfältige Weise programmierbar und besitzen meist auch Sonderfunktionen. Pins und PortsEin einzelner Anschluss wird als Pin bezeichnet. Bis zu 8 Pins werden zu einem Port zusammengefasst. Dies liegt daran dass die Busbreite eines AVR-Mikrocontrollers 8 Bit beträgt. Die Pins eines Ports können gleichzeitig angesprochen bzw. programmiert werden. Bei zeitkritischen Aufgaben, wie z.B. der Ansteuerung von H-Brücken sollte das berücksichtigt werden. Die Programmierung der Ports erfolgt über I/O-Register, die ebenfalls eine Breite von 8 Bit verfügen.Vorgehensweise bei der Konfiguration von I/O-PinsDie zentrale Aufgabe eines Mikrocontrollers ist normalerweise die Ansteuerung externer Hardware, die an den I/O-Pins angeschlossen ist. Dazu müssen die I/O-Pins entsprechend konfiguriert werden. Die Konfiguration der I/O-Anschlüsse läuft prinzipiell immer nach dem gleichen Schema ab:
I/O-RegisterDie Funktionalität, die Programmierung und der Zugriff auf I/O-Ports erfolgt über die I/O-Register, die den entsprechenden Ports zugeordnet sind. Die Register liegen an einer festgelegten Speicheradresse. Durch Schreiben und Lesen in diesen Registern können die Funktionen einzelnen Pins des Ports programmiert werden oder die Logikpegel, die an den Pins anliegen, eingelesen werden. Folgende Register spielen dabei eine zentrale Rolle: Bit-SchemaEin Register besteht beim AVR Mikrocontroller aus 8 Bits. Die Bits werden von Null beginnend von rechts nach links gezählt.
Das Bit 7 wird auch als höchstwertigstes Bit oder
Das Bit 0 wird auch als niederwertigstes Bit oder Der Inhalt des oben abgebildeten Registers kann in
angegeben werden. Das Data Direction Register (DDRx)Das Data Direction Register des Ports x DDRx definiert, ob der jeweilige Pin als Ein- oder als Ausgang genutzt wird. Die Bits des Registers werden von 0 bis 7 durchnummeriert und den einzelnen Pins zugeordnet. Auf das DDRx-Register kann lesend oder schreibend zugegriffen werden. Aus der Bezeichnung DDRA5 lässt sich herauslesen, dass es sich um den Wert des Data Direction Registers des Ports A für den Pin 5 handelt. Funktionalität des DDRx
Das Daten-Register (PORTx)Die Funktion des PORTx-Registers hängt von den Einstellungen im DDRx-Register ab. Es definiert entweder des Ausgangspegel des entsprechenden Pins oder den internen Pullup-Widerstand. Funktionalität des PORTx
Das Pin-Register (PINx)Das PINx-Register dient eigentlich zum Auslesen des entsprechenden Pins eines Ports, wenn dieser als Input definiert wurde. Allerdings hat auch dieses Register eine Doppelfunktion. Beim Schreiben einer 1 auf PINxn ändert sich der Wert des entsprechenden PORTxn Registers. Damit lässt sich eine Toggle-Funktion realisieren, wenn der Pin als Ausgang definiert wurde. |