14.   I/O-Ports

14.1   Übersicht

Alle AVR-Ports bieten eine echte lesen–verändern–schreiben-Funktion, wenn sie als allgemeine digitale I/O-Ports verwendet werden. Das bedeutet, dass die Richtung eines einzelnen Port-Pins verändert werden kann, ohne dass die Richtung der anderen Pins beeinflusst wird, wenn man die SBI- und CBI-Befehle verwendet. Das gleiche gilt für das Ändern der Ausgangszustände einzelner Pins (wenn diese als Ausgang konfiguriert sind) oder für das Ein- und Ausschalten der Pullup-Widerstände, wenn die Pins als Eingänge fungieren. Jeder Pin hat einen symmetrischen Treiber, der sowohl positive als auch negative Ströme liefert, so dass an jeden Pin eine LED direkt angeschlossen werden kann. Alle Pins haben einen einzeln an- und abschaltbaren Pullup-Widerstand dessen Größe unabhängig von der Versorgungsspannung ist. Ferner haben alle Portpins zwei Schutzdioden die gegen UCC und Masse geschaltet sind. Siehe Elektrische Eigenschaften.
Bild 14-1: I/O-Pin-Beschaltung
Alle Ports und deren Pins werden nachfolgend allgemein beschrieben. Der Index „x“ steht für die Bezeichnung des Ports, der Index „n“ für die Nummer des Pins. In einem Programm müssen die Port- und Pin-Angaben in präziser Form angegeben werden. PORTB3 steht also für das Bit 5 von Port B. Die entsprechenden Register sind unter Registerbeschreibung gelistet.

Für jeden Port stehen drei Register im I/O-Speicher zur Verfügung. Ein Daten-Register (PORTx), ein Richtungs-Register (DDRx) und eins für die Port Eingang-Pins (PINx). Die Port Eingang-Pin Register können nur gelesen werden, während die Daten- und die Richtungs-Register gelesen und beschrieben werden können. Zusätzlich können mit dem Pullup-Disable-Bit (PUD) im SFIOR-Register alle Pullup-Widerstände ausgeschaltet werden.

Die Verwendung der Portpins als digitale Ein- und Ausgänge wird nachfolgend beschrieben. Darüber hinaus haben viele Pins noch alternative Funktionen, die die periphere Funktionen des Bausteins unterstützen. Wie die alternativen Funktionen mit den Portpins zusammenhängen, wird im folgenden beschrieben, die detaillierten Funktionen sind dann in den Kapiteln zu den peripheren Modulen beschrieben. Das Verwenden eines Portpins mit seiner alternativen Funktion hat keinen Einfluss auf die anderen Pins eines Ports, die als digitale Ein- Ausgänge verwendet werden.

14.2   Ports als digitale Ein- und Ausgänge

Die Ports sind bidirektionale I/O-Ports mit optional zuschaltbaren internen Pullup-Widerständen. Nachfolgende Abbildung zeigt die interne Schaltung eines Portpins.
Bild 14-2: Digitale Port-Pins
Hinweis:
  1. WPx, WDx, RRx, RPx und RDx sind mit allen Pins eines Ports verbunden, clkI/O, SLEEP und PUD sind mit allen Ports verbunden.

14.2.1   Konfiguration der Pins

Jeder Port Pin korrespondiert mit drei Bits in den drei Registern DDRx, PORTx und PINx.

Das DDxn-Bit im DDRx-Register legt die Richtung des Pins fest. Wenn das DDxn-Bit mit einer logischen 1 beschrieben wird, dann ist der Pin als Ausgang konfiguriert. Ist das DDxn-Bit gelöscht, so arbeitet das Pin als Eingang.

Wenn das PORTxn-Bit mit einer logischen 1 beschrieben wird und das Pin als Eingang konfiguriert ist, dann sind die internen Pullup-Widerstände eingeschaltet. Um die Pullup-Widerstände auszuschalten, muss das PORTxn-Bit mit einer Null beschrieben werden oder das Pin als Ausgang konfiguriert werden. Die Portpins gehen in Tristate, wenn ein Reset auftritt, auch wenn keiner der Takte läuft.

Wenn das PORTxn-Bit mit einer logischen 1 beschrieben wird und der Pin als Ausgang konfiguriert ist, so wird der Port Pin auf High gesetzt. Umgekehrt wird der Port Pin auf Low gesetzt, wenn das PORTxn-Bit mit einer Null beschrieben wird während der Pin als Ausgang konfiguriert ist.

14.2.2   Pin kippen

Das Schreiben einer logischen Eins auf PINxn kippt den Wert von PORTxn, unabhängig vom Wert in DDRxn. Ein SBI-Befehl kann verwendet werden, um ein einzelnes Bit an einem Port zu kippen.
Der AVR muss dazu eine spezielle Befehls­abarbeitungs­logik für SBI auf PINx-Register haben. Normaler­weise würde man erwarten, dass SBI auf PINx zusätzlich alle PORTxn-Bits kippt, wo PINxn Eins ist.

14.2.3   Wechseln zwischen Ein- und Ausgang

Wenn ein Port Pin zwischen Tristate (DDxn, PORTxn = 00) und Ausgang mit High (DDxn, PORTxn = 11) umgeschaltet werden soll, so muss ein Zwischen­schritt eingeführt werden, in dem entweder die Pullup-Widerstände eingeschaltet werden (DDxn, PORTxn = 01) oder der Ausgang zunächst auf Low geschaltet wird (DDxn, PORTxn = 10). Normalerweise ist das Einschalten der Pullup-Widerstände ausreichend, wenn die angeschlossene Schaltung so hochohmig ist, dass ein echtes High am Port Pin keinen Unterschied zu einem High über einen Pullup-Widerstand darstellt. Wenn dies nicht der Fall ist, können die Pullup-Widerstände mit dem PUD-Bit im SFIOR-Register für alle Ports ausgeschaltet werden.

Ein Umschalten zwischen Eingang mit Pullup-Widerstand und Ausgang mit Low-Pegel stellt das gleiche Problem dar. Hier muss der Anwender einen Zwischenschritt über Tristate (DDxn, PORTxn = 00) oder Ausgang mit High-Pegel (DDxn, PORTxn = 11) durchführen.

Tabelle 14-1: Konfiguration eines Portpins
DDxnPORTxnPUD(im MCUCR)I/OPullupKommentar
00XEingangNeinhochohmig (Tristate, Hi-Z)
010EingangJaPxn liefert Strom wenn von außen nach Low gezogen
011EingangNeinhochohmig (Tristate, Hi-Z)
10XAusgangNeinAusgang Low (Stromsenke)
11XAusgangNeinAusgang High (Stromquelle)

14.2.4   Pinzustand lesen

Unabhängig davon, ob ein Pin als Ausgang oder als Eingang konfiguriert ist, kann der Portpin über das PINxn Register Bit eingelesen werden. Wie aus der internen Schaltung eines Port Pins ersichtlich wird, bilden das PINxn Register Bit und das vorgeschaltete Latch einen Synchronisierer. Dieser ist erforderlich um unstabile Zustände zu vermeiden, wenn der physikalische Port seinen Wert in der Nähe einer Flanke des internen Taktes ändert. Allerdings wird dadurch auch eine Verzögerung verursacht. Das nachfolgende Bild zeigt das Zeitdiagramm beim Lesen eines extern angelegten Pinzustandes. Die maximal und minimal auftretende Verzögerung werden als tpdmax und tpdmin bezeichnet.
Bild 14-3: Synchronisation beim Lesen des Pinzustands
Man beachte, dass die Taktperiode unmittelbar nach der fallenden Flanke des Systemtaktes beginnt. Das Latch ist geschlossen, solange der Takt auf Low ist, und wird transparent, wenn der Takt auf High ist, was durch die schraffiert Fläche angedeutet ist. Der Eingangszustand des Pins wird dann mit der fallenden Flanke des Systemtaktes in das Latch gespeichert und mit der darauffolgenden positiven Flanke in das PINxn Register übernommen. Dadurch wird die Übernahme eines neuen Zustandes an einem Portpin mit einer Verzögerung zwischen ½ und 1½ Takten durchgeführt.

Wenn der durch die Software eingestellte Wert des Pins ausgelesen werden soll, muss ein NOP-Befehl wie nachfolgend dargestellt eingefügt werden, bevor der Wert wieder ausgelesen werden kann. Der OUT-Befehl setzt das SYNC LATCH Signal mit der positiven Flanke des Taktes, erst bei der darauf folgenden positiven Flanke wird der Wert dann in das PINxn Register übernommen und kann wieder ausgelesen werden. In diesem Fall beträgt die Verzögerung tpd durch den Synchronisierer 1 Taktzyklus.

Bild 14-4: Synchronisation beim Rücklesen eines Ausgabeports
Das nachfolgende Beispiel zeigt, wie die Pins 0 und 1 von Port B auf High sowie die Pins 2 und 3 auf Low gesetzt werden. Gleichzeitig werden die Pins 4 bis 7 als Eingänge konfiguriert und die Pins 6 und 7 mit den internen Pullup-Widerständen versehen. Die Werte der Pins werden zurückgelesen, nachdem wie zuvor besprochen ein NOP-Befehl ausgeführt wurde.
Beispiel in Assembler
	...
	; Define pull-ups and set outputs high
	; Define directions for port pins
	ldi  r16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0)
	ldi  r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)
	out  PORTB,r16
	out  DDRB,r17
	; Insert nop for synchronization
	nop
	; Read port pins
	in   r16,PINB
	...
Beispiel in C
unsigned char i;
  ...
  /* Define pull-ups and set outputs high */
  /* Define directions for port pins */
  PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
  DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
  /* Insert nop for synchronization */
  __no_operation();
  /* Read port pins */
  i = PINB;
  ...
Hinweis:
  1. Die temporären Register R16 und R17 werden verwendet, um die Zeit zu minimieren, in der die Pullup-Widerstände an den Pins 0, 1, 6 und 7 gesetzt werden und während die Richtungsbits korrekt eingestellt sind und die Bits 2 und 2 als Low und die Bits 0 und 1 als High getriebene Ausgänge eingestellt werden.

14.2.5   Freigabe Digitale Eingang und Sleep Modi

Wie in der internen Schaltung des Pins zu sehen ist, kann das digitale Eingangssignal am Eingang des Schmitt-Triggers an Masse geschaltet werden. Dieses Signal ist in der Schaltung mit SLEEP bezeichnet und wird durch den Controller im Power-down, ower-save und Standby-Modus erzeugt, um in diesen Modi einen hohen Stromverbrauch zu verhindern, der durch schwankende Eingangssignale oder analoge Eingangssignale über UCC/2 entstehen kann.

SLEEP wird bei Port Pins, die als externer Interrupt freigegeben sind, außer Kraft gesetzt. Wenn der externe Interrupt nicht freigegeben ist, beeinflusst das SLEEP Signal auch diese Pins. Das SLEEP Signal wird ebenfalls nicht wirksam, wenn die alternativen Funktionen des Port Pins verwendet werden.

Wenn ein logischer High-Pegel bei einem als asynchroner externer Interrupt konfigurierten Pin, mit Interrupt bei steigender oder fallender Flanke oder bei Wechsel der logischen Zustandes am Pin, während der externe Interrupt nicht freigegeben ist anliegt, wird das dazugehörige Interrupt Flag gesetzt, wenn aus den o.g. Sleep Modi zurückgekehrt wird und diese das Festhalten von Pegeländerungen beinhalten.

14.2.6.   Unbenutzte Pins

Wenn Pins nicht verwendet werden, so sollten diese auf einen definierten Pegel gelegt werden. Selbst wenn die meisten digitalen Eingänge in den unteren Sleep-Modi wie oben beschrieben abgeschaltet sind, sollten offene Eingänge vermieden werden, um den Stromverbrauch in den anderen Modi, in denen die Eingänge eingeschaltet sind, zu reduzieren.

Die einfachste Möglichkeit, einen definierten Pegel an einem unbeschalteten Eingang zu erreichen, ist das Einschalten der internen Pullup-Widerstände. In diesem Fall werden die internen Pullup-Widerstände aber während eines Resets abgeschaltet. Wenn ein geringer Stromverbrauch während eines Resets notwendig ist, dann sollten also besser externe Pullup- oder Pulldown-Widerstände verwendet werden. Die ungenutzten Pins direkt mit UCC oder GND zu verbinden ist nicht empfehlenswert, da in den Fällen, in denen sie versehentlich als Ausgänge konfiguriert werden, sehr hohe Ströme fließen können.

14.3   Alternative Port-Funktionen

Die meisten Portpins haben zusätzlich zu ihren digitalen Funktionen noch weitere alternative Funktionen. Die nachfolgende Abbildung zeigt die Kontrollsignale für die Portpins, die die alternativen Funktionen bedienen. Die die digitalen Funktionen überlagernden Signale sind nicht an allen Portpins präsent, die Abbildung zeigt daher lediglich die allgemeine Schaltung zur Steuerung der alternativen Funktionen der AVR Controller.
Bild 14-5: Alternative Port-Funktionen(1)
Hinweis:
  1. WPx, WDx, RRx, RPx und RDx sind mit allen Pins eines Ports verbunden, clkI/O, SLEEP und PUD sind mit allen Ports verbunden.
Die nachfolgende Tabelle fasst die Funktionen der überschreibenden Signale zusammen. Die Pin- und Port-Indizes vom Bild oben sind nicht dargestellt. Die überschreibenden Signale werden intern durch die Module mit den alternativen Funktionen erzeugt.

Tabelle 14-2: Allgemeine Beschreibung der überschreibenden Signalee für alternative Port-Funktionen
SignalnameBedeutungBeschreibung
PUOE Pullup Override Freigabe Wenn dieses Signal gesetzt ist, wird die Freigabe der Pull-up-Widerstände durch das Signal PUOV kontrolliert. Wenn dieses Signal gelöscht ist, sind die Pull-up Widerstände freigegeben, wenn DDxn, PORTxn, PUD = 010 sind.
PUOV Pullup Override Wert Wenn PUOE gesetzt ist, werden die Pull-up Widerstände freigegeben/gesperrt, wenn PUOV gesetzt/gelöscht ist, unabhängig vom Zustand der DDxn, PORTxn und PUD Register Bits.
DDOE Datenrichtungs-Überschreib-Freigabe Wenn dieses Signal gesetzt ist, wird die Freigabe des Ausgangstreibers mit dem DDOV-Signal kontrolliert. Wenn das DDOE Signal gelöscht ist, wird der Ausgangstreiber durch das DDxn Bit freigegeben.
DDOV Datenrichtungs-Überschreib-Wert Wenn DDOE gesetzt ist, werden die Ausgangstreiber freigegeben/gesperrt, wenn das DDOV-Signal gesetzt/gelöscht ist, unabhängig vom Zustand der DDxn Register Bits.
PVOE Port-Ausgabe-Überschreib-Freigabe Wenn dieses Signal gesetzt ist und der Ausgangstreiber freigegeben ist, wird der Zustand des Ports durch das PVOV Signal kontrolliert. Ist das PVOE Signal gelöscht und der Ausgangstreiber freigegeben, so wird der Zustand des Ports über die PORTxn Register Bits kontrolliert.
PVOV Port-Ausgabe-Überschreib-Wert Wenn PVOE gesetzt ist, dann wird der Zustand des Ports durch das PVOV Signal bestiummt, unabhängig von den Einstellungen des PORTxn Register Bits.
DIEOV Digitale Eingangsfreigabe-Überschreib-Freigabe Wenn dieses Bit gesetzt ist, wird die Freigabe der digitalen Eingänge durch das DIEOV Signal gesteuert. Wenn das Signal gelöscht ist, wird die Freigabe der digitalen Eingänge dadurch bestimmt, ob sich der Controller im normalen Modus befindet oder in einem Sleep Modus.
DIEOV Digitale Eingangsfreigabe-Überschreib-Wert Wenn das DIEOE Signal gesetzt ist, werden die digitalen Eingänge freigegeben/gesperrt, wenn das DIEOV Signal gesetzt/gelöscht ist, unabhängig davon, ob sich der Controller im normalen Modus befindet oder in einem Sleep Modus.
DI Digitaler Eingang Dies ist der digitale Eingang für die alternativen Funktionen. Die Schaltung zeigt, dass dieses Signal am Ausgang des Schmitt-Triggers aber vor dem Synchronisierer abgegriffen wird. Außer wenn der digitale Eingang als Taktquelle verwendet wird, benutzen die alternativen Funktionen einen eigenen Synchronisierer.
AIO Analoger Ein-/Ausgang Dies ist der analoge Eingang/Ausgang zu/von den alternativen Funktionen. Das Signal ist direkt mit dem Pin verbunden und kann bidirektional verwendet werden.
Nachfolgend wird ein kurzer Überblick über die alternativen Funktionen der einzelnen Port Pins und den dazugehörigen übergeordneten Signalen gegeben. Eine ausführlichere Beschreibung der alternativen Funktionen geben die einzelnen Kapitel.

14.3.1   Alternative Funktionen von Port B

Port B bietet folgende alternative Funktionen:
Tabelle 14-3: Port B Alternative Funktionen
PortpinAlternative Funktionen
PB7 XTAL2 (Chip Clock Oszillator-Ausgang)
TOSC2 (Zähler/Zeitgeber2 Oszillator-Ausgang)
PCINT7 (Pegelwechselinterrupt 7)
PB6 XTAL1 (Chip Clock Oszillator-Eingang oder externer Takteingang)
TOSC1 (Zähler/Zeitgeber2 Oszillator-Eingang)
PCINT6 (Pegelwechselinterrupt 6)
PB5 SCK (SPI Bus Master Takteingang)
PCINT5 (Pegelwechselinterrupt 5)
PB4 MISO (SPI Bus Master Eingang / Slave Ausgang)
PCINT4 (Pegelwechselinterrupt 4)
PB3 MOSI (SPI Bus Master Ausgang / Slave Eingang)
OC2A (Zähler/Zeitgeber2 Ausgang Compare Match A)
PCINT3 (Pegelwechselinterrupt 3)
PB2 SS (SPI Bus Master Slave select)
OC1B (Zähler/Zeitgeber1 Ausgang Compare Match B)
PCINT2 (Pegelwechselinterrupt 2)
PB1 OC1A (Zähler/Zeitgeber1 Ausgang Compare Match A)
PCINT1 (Pegelwechselinterrupt 1)
PB0 ICP1 (Zähler/Zeitgeber1 Capture-Eingang)
CLKO (Geteilter Systemtakt-Ausgang)
PCINT0 (Pegelwechselinterrupt 0)
Die alternativen Funktionen sind wie folgt: XTAL2: Wird als Pin für externe Quarzoszillatoren verwendet. Wenn dieser Pin als Takt Pin verwendet wird, kann er nicht als digitaler I/O-Pin verwendet werden.

TOSC2: Wird nur verwendet, wenn der interne RC-Oszillator als Taktquelle für den Baustein ausgewählt wurde und der asynchrone Zeitgeber durch die richtigen Einstellungen im ASSR Register freigegeben wurde. Wenn das AS2 Bit im ASSR Register gesetzt ist um die asynchrone Taktung von Zähler/Zeitgeber2 freizugeben, wird PB7 von dem Port getrennt und wird zum invertierenden Ausgang des Oszillatorverstärkers. In diesem Modus wird ein Quarzoszillator an den Pin angeschlossen, der Pin kann dann nicht als digitaler I/O verwendet werden.

Wenn PB7 als Taktpin verwendet wird, werden DDB7, PORTB7 und PINB7 immer als 0 gelesen.

PCINT7: Pegelwechsel-Interruptquelle Nummer 7. Das Pin kann als externe Interruptquelle dienen.

XTAL1: Wird als Pin für alle Taktquellen des Bausteins, außer den internen RC-Oszillator verwendet. Wenn dieser Pin als Takt Pin verwendet wird, kann er nicht als digitaler I/O-Pin verwendet werden.

TOSC1: Wird nur verwendet, wenn der interne RC-Oszillator als Taktquelle für den Baustein ausgewählt wurde und der asynchrone Zeitgeber durch die richtigen Einstellungen im ASSR Register freigegeben wurde. Wenn das AS2 Bit im ASSR Register gesetzt ist um die asynchrone Taktung von Zähler/Zeitgeber2 freizugeben, wird PB6 von dem Port getrennt und wird zum Eingang des invertierenden Oszillatorverstärkers. In diesem Modus wird ein Quarzoszillator an den Pin angeschlossen, der Pin kann dann nicht als digitaler I/O verwendet werden.

Wenn PB6 als Takt Pin verwendet wird, werden DDB6, PORTB6 und PINB6 immer als 0 gelesen.

PCINT6: Pegelwechsel-Interruptquelle Nummer 6. Das Pin kann als externe Interruptquelle dienen.

SCK: Master Clock Ausgang, Slave Clock Eingang für den SPI Kanal. Wenn die SPI als Slave freigegeben ist, ist dieser Pin als Eingang konfiguriert, unabhängig von den Einstellungen des DDB5 Bits. Wenn die SPI als Master freigegeben ist, wird die Datenrichtung dieses Pins mit dem DDB5 Bit kontrolliert. Wenn dieser Pin durch die SPI als Eingang verwendet wird, kann der pull-up Widerstand weiterhin mit dem PORTB5 Bit ein- und ausgeschaltet werden.

PCINT5: Pegelwechsel-Interruptquelle Nummer 5. Das Pin kann als externe Interruptquelle dienen.

MISO: Master Data Eingang, Slave Data Ausgang für den SPI Kanal. Wenn die SPI als Master freigegeben ist, ist dieser Pin als Eingang konfiguriert, unabhängig von den Einstellungen des DDB4 Bits. Wenn die SPI als Slave freigegeben ist, wird die Datenrichtung dieses Pins mit dem DDB4 Bit kontrolliert. Wenn dieser Pin durch die SPI als Eingang verwendet wird, kann der pull-up Widerstand weiterhin mit dem PORTB4 Bit ein und ausgeschaltet werden.

PCINT4: Pegelwechsel-Interruptquelle Nummer 4. Das Pin kann als externe Interruptquelle dienen.

MOSI: Master Data Ausgang, Slave Data Eingang für den SPI Kanal. Wenn die SPI als Slave freigegeben ist, ist dieser Pin als Eingang konfiguriert, unabhängig von den Einstellungen des DDB3 Bits. Wenn die SPI als Master freigegeben ist, wird die Datenrichtung dieses Pins mit dem DDB3 Bit kontrolliert. Wenn dieser Pin durch die SPI als Eingang verwendet wird, kann der pull-up Widerstand weiterhin mit dem PORTB3 Bit ein und ausgeschaltet werden.

OC2: (Output Compare 2) Das Pin kann als Ausgang für den Zähler/Zeitgeber2 Compare Match dienen. Damit kann dieses PWM-Signale ausgeben. Das Pin muss hierfür als Ausgang konfiguriert werden (DDB3 auf 1 setzen).

PCINT3: Pegelwechsel-Interruptquelle Nummer 3. Das Pin kann als externe Interruptquelle dienen.

SS: (Slave Select) Wenn das SPI als Slave freigegeben ist, ist dieser Pin als Eingang konfiguriert, unabhängig von den Einstellungen des DDB2 Bits. Als Slave wird die SPI aktiviert, wenn dieser Pin auf Low gesetzt wird. Wenn die SPI als Master freigegeben ist, wird die Datenrichtung dieses Pins durch das DDB2-Bit kontrolliert. Wenn dieser Pin durch die SPI als Eingang verwendet wird, kann der Pullup-Widerstand weiterhin mit dem PORTB2-Bit ein und ausgeschaltet werden.

OC1B: (Output Compare 1 B) Das Pin kann als Ausgang für den Zähler/Zeitgeber1 Compare Match B dienen. Damit kann dieses PWM-Signale ausgeben. Das Pin muss hierfür als Ausgang konfiguriert werden (DDB2 auf 1 setzen).

PCINT2: Pegelwechsel-Interruptquelle Nummer 2. Das Pin kann als externe Interruptquelle dienen.

OC1A: (Output Compare 1 A) Das Pin kann als Ausgang für den Zähler/Zeitgeber1 Compare Match A dienen. Damit kann dieses PWM-Signale ausgeben. Das Pin muss hierfür als Ausgang konfiguriert werden (DDB1 auf 1 setzen).

PCINT1: Pegelwechsel-Interruptquelle Nummer 1. Das Pin kann als externe Interruptquelle dienen.

ICP1: (Input Capture 1) Capture-Eingang. Der PB0 Pin kann als Eingangspin für die Capture-Funktion des Zähler/Zeitgeber1 verwendet werden.

Die nachfolgenden Tabellen zeigen die alternativen Funktionen von Port B und deren übergeordneten Signale. SPI MSTR INPUT und SPI SLAVE OUTPUT bilden das MISO Signal, während das MOSI Signal in SPI-Master-Ausgang und SPI-Slave-Eingang aufgeteilt wird.

PCINT0: Pegelwechsel-Interruptquelle Nummer 0. Das Pin kann als externe Interruptquelle dienen.

Tabelle 14-4 und Tabelle 14-5 setzen die alternativen Functionen von Port B in Verhältnis zu den überschreibenden Signalen im Bild 14-5. SPI-Master-Eingang und SPI-Slave-Ausgang bilden das MISO-Signal, während MOSI entweder SPI-Master-Ausgang und SPI-Slave-Eingang ist.

Tabelle 14-4: Überschreibende Signale für alternative Funktionen für PB7..PB4
Signal­namePB7/XTAL2/ TOSC2/PCINT7(1) PB6/XTAL1/ TOSC1/PCINT6(1) PB5/SCK/ PCINT5PB4/MISO/ PCINT4
PUOEINTRCEXTCK + AS2 INTRC + AS2SPE • MSTRSPE • MSTR
PUOV00PORTB5 • PUDPORTB4 • PUD
DDOEINTRCEXTCK + AS2 INTRC + AS2SPE • MSTRSPE • MSTR
DDOV0000
PVOE00SPE • MSTRSPE • MSTR
PVOV00SCK-AusgangSPI-Slave-Ausgang
DIEOEINTRCEXTCK + AS2 + PCINT7 • PCIE0 INTRC + AS2 + PCINT6 • PCIE0PCINT5 • PCIE0PCINT4 • PCIE0
DIEOV(INTRC + EXTCK) • AS2 INTRC • AS211
DIPCINT7-EingangPCINT6-EingangPCINT5-Eingang
SCK-Eingang
PCINT4-Eingang
SPI-Master-Eingang
AIOOszillator-AusgangOszillator/Takt-Eingang
Hinweis:
  1. INTRC bedeutet dass einer der internen RC-Oszillatoren ausgewählt wurde (durch CKSEL-Fuses), EXTCK bedeutet dass externe Taktversorgung ausgewählt wurde (durch CKSEL-Fuses).
Tabelle 14-5: Überschreibende Signale für alternative Funktionen für PB3..PB0
Signal­namePB3/MOSI/ OC2/PCINT3PB2/SS/ OC1B/PCINT2PB1/OC1A/ PCINT1PB0/ICP1/ PCINT0
PUOESPE • MSTRSPE • MSTR00
PUOVPORTB3 • PUDPORTB2 • PUD00
DDOESPE • MSTRSPE • MSTR00
DDOV0000
PVOESPE • MSTR + OC2A-FreigabeOC1B-FreigabeOC1A-Freigabe0
PVOVSPI-Master-Ausgang + OC2AOC1BOC1A0
DIEOEPCINT3 • PCIE0PCINT2 • PCIE0PCINT1 • PCIE0PCINT0 • PCIE0
DIEOV1111
DIPCINT3-Eingang
SPI-Slave-Eingang
PCINT2-Eingang
SPI SS
PCINT1-EingangPCINT0-Eingang
ICP1-Eingang
AIO

14.3.2   Alternative Funktionen von Port C

Port C bietet folgende alternative Funktionen:
Tabelle 14-6: Port C Alternative Funktionen
PortpinAlternative Funktionen
PC6 RESET (Reset-Pin)
PCINT14 (Pegelwechselinterrupt 14)
PC5 ADC5 (ADU-Eingang Kanal 5)
SCL (Zweidraht-Bus-Taktleitung)
PCINT13 (Pegelwechselinterrupt 13)
PC4 ADC4 (ADU-Eingang Kanal 4)
SDA (Zweidraht-Bus-Datenleitung)
PCINT12 (Pegelwechselinterrupt 12)
PC3 ADC3 (ADU-Eingang Kanal 3)
PCINT11 (Pegelwechselinterrupt 11)
PC2 ADC2 (ADU-Eingang Kanal 2)
PCINT10 (Pegelwechselinterrupt 10)
PC1 ADC1 (ADU-Eingang Kanal 1)
PCINT9 (Pegelwechselinterrupt 9)
PC0 ADC0 (ADU-Eingang Kanal 0)
PCINT8 (Pegelwechselinterrupt 8)
Die alternativen Funktionen sind wie folgt: RESET: Reset-Anschluss. Wenn die RSTDISBL-Fuse programmiert ist, hat dieser Pin die Funktion eines normalen I/O-Pins. In diesem Fall sind der Power-on-Reset und der Brown-out-Reset die Resetquellen des Bausteins. Wenn die RSTDISBL Fuse nicht programmiert ist, ist die Resetschaltung mit dem Pin verbunden und er kann nicht als I/O-Pin verwendet werden.

Wenn PC6 als Reseteingang verwendet wird, werden die Bits DDC6, PORTC6 und PINC6 immer als 0 gelesen.

PCINT14: Pegelwechsel-Interruptquelle Nummer 14. Das Pin kann als externe Interruptquelle dienen.

SCL: Two-wire Serial Interface Clock: Wenn das TWEN Bit im TWCR Register gesetzt ist und somit das TWI freigegeben ist, wird der PC5 Pin von dem Port getrennt und wird zum Takteingang bzw. -ausgang für das TWI. In diesem Modus ist ein Spitzenfilter mit dem Pin verbunden, der Spitzen die kürzer als 50 ns lang sind aus dem Eingangssignal ausfiltert. Der Pin wird durch einen Open-Drain-Treiber mit einer begrenzten Anstiegsgeschwindigkeit getrieben. ADC5: ADU-Eingangskanal 5: Alternativ kann der Pin PC5 auch als Eingangskanal Nummer 5 für den Analog-Digitalwandler verwendet werden. Der Kanal 5 des ADU verwendet die digitale Versorgungsspannung.

PCINT13: Pegelwechsel-Interruptquelle Nummer 13. Das Pin kann als externe Interruptquelle dienen.

SDA: Two-wire Serial Interface Data: Wenn das TWEN Bit im TWCR Register gesetzt ist und somit das TWI freigegeben ist, wird der PC4 Pin von dem Port getrennt und wird zum Dateneingang bzw. -ausgang für das TWI. In diesem Modus ist ein Spitzenfilter mit dem Pin verbunden, der Spitzen die kürzer als 50 ns lang sind aus dem Eingangssignal ausfiltert. Der Pin wird durch einen Open-Drain-Treiber mit einer begrenzten Anstiegsgeschwindigkeit getrieben. ADC4: ADU-Eingangskanal 4: Alternativ kann der Pin PC4 auch als Eingangskanal Nummer 4 für den Analog-Digitalwandler verwendet werden. Der Kanal 4 des ADU verwendet die digitale Versorgungsspannung.

PCINT12: Pegelwechsel-Interruptquelle Nummer 12. Das Pin kann als externe Interruptquelle dienen.

ADC3: ADU-Eingangskanal 3: Der Pin PC3 kann auch als Eingangskanal Nummer 3 für den Analog-Digitalwandler verwendet werden. Der Kanal 3 des ADU verwendet die analoge Versorgungsspannung.

PCINT11: Pegelwechsel-Interruptquelle Nummer 11. Das Pin kann als externe Interruptquelle dienen.

ADC2: ADU-Eingangskanal 2: Der Pin PC2 kann auch als Eingangskanal Nummer 2 für den Analog-Digitalwandler verwendet werden. Der Kanal 2 des ADU verwendet die analoge Versorgungsspannung.

PCINT10: Pegelwechsel-Interruptquelle Nummer 10. Das Pin kann als externe Interruptquelle dienen.

ADC1: ADU-Eingangskanal 1: Der Pin PC1 kann auch als Eingangskanal Nummer 1 für den Analog-Digitalwandler verwendet werden. Der Kanal 1 des ADU verwendet die analoge Versorgungsspannung.

PCINT9: Pegelwechsel-Interruptquelle Nummer 9. Das Pin kann als externe Interruptquelle dienen.

ADC0: ADU-Eingangskanal 0: Der Pin PC0 kann auch als Eingangskanal Nummer 0 für den Analog-Digitalwandler verwendet werden. Der Kanal 0 des ADU verwendet die analoge Versorgungsspannung.

PCINT8: Pegelwechsel-Interruptquelle Nummer 8. Das Pin kann als externe Interruptquelle dienen.

Die nachfolgenden Tabellen zeigen die alternativen Funktionen von Port C und deren überschreibenden Signale.

Tabelle 14-7: Überschreibende Signale für alternative Funktionen für PC7..PC4(1)
Signal­namePC6/RESET/ PCINT14PC5/SCL/ADC5/ PCINT13PC4/SDA/ADC4/PCINT12
PUOERSTDISBLTWENTWEN
PUOV1PORTC5 • PUDPORTC4 • PUD
DDOERSTDISBLTWENTWEN
DDOV0SCL_OUTSDA_OUT
PVOE0TWENTWEN
PVOV000
DIEOERSTDISBL + PCINT14 • PCIE1PCINT13 • PCIE1 + ADC5DPCINT12 • PCIE1 + ADC4D
DIEOVRSTDISBLPCINT13 • PCIE1PCINT12 • PCIE1
DIPCINT14-EingangPCINT13-EingangPCINT12-Eingang
AIORESET-EingangADC5-Eingang / SCL-EingangADC4-Eingang / SDA-Eingang
Hinweis:
  1. When eingeschaltet, aktiviert die Zweidraht-Schnittstelle die Anstiegs­zeit­kontrolle an den Ausgängen PC4 und PC5. Dies ist im Bild nicht eingezeichnet. Außerdem sind Störimpulsunterdrückungen zwischen den AIO-Ausgängen und der digitalen Logik des TWI-Moduls eingebaut.
Tabelle 14-8: Überschreibende Signale für alternative Funktionen für PC3..PC0
Signal­namePC3/ADC3/ PCINT11PC2/ADC2/ PCINT10PC1/ADC1/ PCINT9PC0/ADC0/ PCINT8
PUOE0000
PUOV0000
DDOE0000
DDOV0000
PVOE0000
PVOV0000
DIEOEPCINT11 • PCIE1 + ADC3DPCINT10 • PCIE1 + ADC2DPCINT9 • PCIE1 + ADC1DPCINT8 • PCIE1 + ADC0D
DIEOVPCINT11 • PCIE1PCINT10 • PCIE1PCINT9 • PCIE1PCINT8 • PCIE1
DIPCINT11-EingangPCINT10-EingangPCINT9-EingangPCINT8-Eingang
AIOADC3-EingangADC2-EingangADC1-EingangADC0-Eingang

14.3.3   Alternative Funktionen von Port D

Port D bietet folgende alternative Funktionen:
Tabelle 14-9: Port D Alternative Funktionen
PortpinAlternative Funktionen
PD7 AIN1 (Analogvergleicher, negativer Eingang)
PCINT23 (Pegelwechselinterrupt 23)
PD6 AIN0 (Analogvergleicher, positiver Eingang)
OC0A (Zähler/Zeitgeber0: Ausgang für Compare Match A)
PCINT22 (Pegelwechselinterrupt 22)
PD5 T1 (Zähler/Zeitgeber1 Zähleingang)
OC0B (Zähler/Zeitgeber0: Ausgang für Compare Match B)
PCINT21 (Pegelwechselinterrupt 21)
PD4 XCK (USART Taktein-/-ausgang)
T0 (Zähler/Zeitgeber0 Zähleingang)
PCINT20 (Pegelwechselinterrupt 20)
PD3 INT1 (Eingang Interrupt 1)
OC2B (Zähler/Zeitgeber2: Ausgang für Compare Match B)
PCINT19 (Pegelwechselinterrupt 19)
PD2 INT0 (Eingang Interrupt 0)
PCINT18 (Pegelwechselinterrupt 18)
PD1 TXD (USART Datenausgang)
PCINT17 (Pegelwechselinterrupt 17)
PD0 RXD (USART Dateneingang)
PCINT16 (Pegelwechselinterrupt 16)
Die alternativen Funktionen sind wie folgt: AIN1: Analogvergleicher, Negativer Eingang: Negativer Eingang für den Analogvergleicher. Dafür muss der Pin als Eingang konfiguriert werden. Die internen Pullup-Widerstände müssen ausgeschaltet sein, damit die digitale Funktion des Pins die analoge nicht beeinflusst.

PCINT23: Pegelwechsel-Interruptquelle Nummer 23. Das Pin kann als externe Interruptquelle dienen.

AIN0: Analogvergleicher, Positiver Eingang: Positiver Eingang für den Analogvergleicher. Dafür muss der Pin als Eingang konfiguriert werden. Die internen Pullup-Widerstände müssen ausgeschaltet sein, damit die digitale Funktion des Pins die analoge nicht beeinflusst.

PCINT22: Pegelwechsel-Interruptquelle Nummer 22. Das Pin kann als externe Interruptquelle dienen.

T1: Externe Quelle für den Zähler 1

OC0B: (Output Compare 0 B) Das Pin kann als Ausgang für den Zähler/Zeitgeber0 Compare Match B dienen. Damit kann dieses PWM-Signale ausgeben. Das Pin muss hierfür als Ausgang konfiguriert werden (DDD5 auf 1 setzen).

PCINT21: Pegelwechsel-Interruptquelle Nummer 21. Das Pin kann als externe Interruptquelle dienen.

XCK: Externer Takteingang für USART

T0: Externe Quelle für den Zähler 0

PCINT20: Pegelwechsel-Interruptquelle Nummer 20. Das Pin kann als externe Interruptquelle dienen.

INT1: External Interrupt Source 1: Das Pin kann als Eingang für einen externen Interrupt 1 dienen.

OC2B: (Output Compare 2 B) Das Pin kann als Ausgang für den Zähler/Zeitgeber2 Compare Match B dienen. Damit kann dieses PWM-Signale ausgeben. Das Pin muss hierfür als Ausgang konfiguriert werden (DDD3 auf 1 setzen).

PCINT19: Pegelwechsel-Interruptquelle Nummer 19. Das Pin kann als externe Interruptquelle dienen.

INT0: External Interrupt Source 0: Das Pin kann als Eingang für einen externen Interrupt 0 dienen.

PCINT18: Pegelwechsel-Interruptquelle Nummer 18. Das Pin kann als externe Interruptquelle dienen.

TXD: Transmit Data (Datenausgang für den USART). Wenn der USART-Sender freigegeben ist, ist dieser Pin als Ausgang konfiguriert, unabhängig von den Werten des DDD1-Bits.

PCINT17: Pegelwechsel-Interruptquelle Nummer 17. Das Pin kann als externe Interruptquelle dienen.

RXD: Receive Data (Data Eingang Pin für die USART). Wenn der USART Empfänger freigegeben ist, ist dieser Pin als Eingang konfiguriert, unabhängig von den Werten des DDD0 Bits. Wenn die USART den Pin als Eingang verwendet, kann der pull-up Widerstand weiterhin durch das PORTD0 Bit ein- und ausgeschaltet werden.

PCINT16: Pegelwechsel-Interruptquelle Nummer 16. Das Pin kann als externe Interruptquelle dienen.

Die nachfolgenden Tabellen zeigen die alternativen Funktionen von Port D und deren überschreibenden Signale.

Tabelle 14-10: Überschreibende Signale für alternative Funktionen für PD7..PD4
Signal­namePD7/AIN1/ PCINT23PD6/AIN0/OC0A/ PCINT22PD5/T1/OC0B/ PCINT21PD4/XCK/T0/ PCINT20
PUOE0000
PUO0000
DDOE0000
DDOV0000
PVOE0OC0A-FreigabeOC0B-FreigabeUMSEL
PVOV0OC0AOC0BXCK-Ausgang
DIEOEPCINT23 • PCIE2PCINT22 • PCIE2PCINT21 • PCIE2PCINT20 • PCIE2
DIEOV1111
DIPCINT23-EingangPCINT22-EingangPCINT21-Eingang
T1-Eingang
PCINT20-Eingang
XCK-Eingang
T0-Eingang
AIOAIN1-EingangAIN0-Eingang
Tabelle 14-11: Überschreibende Signale für alternative Funktionen für PD3..PD0
Signal­namePD3/OC2B/INT1/ PCINT19PD2/INT0/ PCINT18PD1/TXD/ PCINT17PD0/RXD/ PCINT16
PUOE00TXENRXEN
PUO000PORTD0 • PUD
DDOE00TXENRXEN
DDOV0010
PVOEOC2B-Freigabe0TXEN0
PVOVOC2B0TXD0
DIEOEINT1-Freigabe + PCINT19 • PCIE2INT0-Freigabe + PCINT18 • PCIE1PCINT17 • PCIE2PCINT16 • PCIE2
DIEOV1111
DIPCINT19-Eingang
INT1-Eingang
PCINT18-Eingang
INT0-Eingang
PCINT17-EingangPCINT16-Eingang
RXD
AIO

14.4   Registerbeschreibung

14.4.1   MCUCR — Mikrocontroller-Steuerregister

Bit76543210
(0x55)-BODSBODSEPUD--IVSELIVCEMCUCR
ZugriffRR/WR/WR/WRRR/WR/W
Startwert00000000
Wenn dieses Bit mit einer Eins beschrieben wird, sind die internen Pullup-Widerstände für die I/O-Ports gesperrt, auch dann, wenn die DDRx- und PORTx-Register so konfiguriert sind, dass die Pullups freigegeben sind. Siehe Pin-Konfiguration oben für Erläuterungen.

14.4.2   PORTB — Treiberausgang Port B

Bit76543210
(0x25)PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0PORTB
ZugriffR/WR/WR/WR/WR/WR/WR/WR/W
Startwert00000000

14.4.3   DDRB — Datenrichtung Port B

Bit76543210
(0x24)DDB7DDB6DDB5DDB4DDB3DDB2DDB1DDB0DDRB
ZugriffR/WR/WR/WR/WR/WR/WR/WR/W
Startwert00000000

14.4.4   PINB — Eingangspins Port B

Bit76543210
(0x23)PINB7PINB6PINB5PINB4PINB3PINB2PINB1PINB0PINB
ZugriffRRRRRRRR
Startwert--------

14.4.5   PORTC — Treiberausgang Port C

Bit76543210
(0x28)-PORTC6PORTC5PORTC4PORTC3PORTC2PORTC1PORTC0PORTC
ZugriffRR/WR/WR/WR/WR/WR/WR/W
Startwert00000000

14.4.6   DDRC — Datenrichtung Port C

Bit76543210
(0x27)-DDC6DDC5DDC4DDC3DDC2DDC1DDC0DDRC
ZugriffRR/WR/WR/WR/WR/WR/WR/W
Startwert00000000

14.4.7   PINC — Eingangspins Port C

Bit76543210
(0x26)-PINC6PINC5PINC4PINC3PINC2PINC1PINC0PINC
ZugriffRRRRRRRR
Startwert0-------

14.4.8   PORTD — Treiberausgang Port D

Bit76543210
(0x2B)PORTD7PORTD6PORTD5PORTD4PORTD3PORTD2PORTD1PORTD0PORTD
ZugriffR/WR/WR/WR/WR/WR/WR/WR/W
Startwert00000000

14.4.9   DDRD — Datenrichtung Port D

Bit76543210
(0x2A)DDD7DDD6DDD5DDD4DDD3DDD2DDD1DDD0DDRD
ZugriffR/WR/WR/WR/WR/WR/WR/WR/W
Startwert00000000

14.4.10   PIND — Eingangspins Port D

Bit76543210
(0x29)PIND7PIND6PIND5PIND4PIND3PIND2PIND1PIND0PIND
ZugriffRRRRRRRR
Startwert--------