Wie man sieht hat praktisch jeder Pin neben seiner normalen
Bezeichnung wie z.B. PB0 noch mindestens eine weitere Funktion, viele Pins sogar
noch mehr. Hier soll jetzt aber nicht jede einzelne Funktion im
Detail beschreiben werden, sondern nur die Abkürzungen aufgeschlüsselt werden. Funktionsgleiche
Pins werden zusammengefasst.
Beginnen wir einfach mal bei Pin 1.
Reset
Mit dem Reset Pin kann man den Controller zurücksetzen. Dieser Pin ist Low aktiv, d.h. der Reset wird ausgelöst wenn man den Pin mit Masse verbindet. Damit nicht zufällig ein Reset ausgelöst wird sollte man ihn mit einem Widerstand von etwa 10k Ohm mit VCC (+) verbinden.
PD0 - PD6
Port D
Port D ist ein 8 Bit breiter, bi-direktionaler I/O- (Ein-/Ausgabe-) Port. Der Output-Buffer von Port D ist im "Sink"-Betrieb in der Lage, Ströme bis zu 20 mA aufzunehmen und dadurch z.B. LEDs direkt zu treiben. Jeder Pin des Ports kann individuell als Eingang oder als Ausgang konfiguriert und in der Funktion als Eingang kann ihm wahlweise ein Pull-Up-Wiederstand zugeschaltet werden.
Alternativ können über Port D auch diverse Sonderfunktionen (z.B. Interrupt-Eingänge, Timerausgang, UART-Interface) ausgeführt werden.
RXD/TXD
Receive Data/Transmit Data
Die meisten AVR haben einen UART oder USART. In diesem Fall heißen die Pins einfach RXD/TXD. Hat der AVR zwei U(S)ART's gibt es jeden Anschluß zwei mal, diese heißen dann RXD0/TXD0 und RXD1/TXD1. RXD empfängt die Daten aus einer asynchronen seriellen Schnittstelle, TXD sendet die Daten aus dem AVR zu einer Schnittstelle. Eine asynchrone serielle Schnittstelle ist jede normale serielle Schnittstelle am PC. Um den AVR mit der seriellen Schnittstelle des PC zu verbinden benötigt man einen Pegelwandler. Die Verdrahtung kann man dem Artikel MAX232 für Mikrocontroller entnehmen.
XTAL
Anschlüsse für den externen Takt mit dem der Controller laufen soll. Hier kann man entweder einen Quarz, einen Oszillator oder ein RC Glied anschließen. Der Oszillator und das RC Glied werden nur an XTAL1 angeschlossen, ein Quarz kommt immer an beide Pins.
INTx
External Interrupt
Mit Hilfe eines externen Interrupts kann man das laufende Programm unterbrechen und in eine Unterroutine springen die das entsprechende Ereignis verarbeitet. Für jeden Interrupteingang kann ein eigenes Unterprogramm aufgerufen werden.
Tx
Timer Clock Input
Bei manchen AVR kann der Timer/Counter mit einem externen Takt versorgt werden. Das ist immer dann nötig wenn mit dem Vorteiler (Prescaler) nicht der nötige Takt aus der CPU Frequenz gewonnen werden kann. Für jeden Timer/Counter gibt es einen eigenen Eingang.
GND
Masseanschluß
Die ist die Masse der Spannungsversorgung (-). Beim Verdrahten von GND ist besonders bei handgelöteten Platinen darauf zu achten das die Lötstellen sauber gelötet sind und man sollte nicht zu dünne Drähte verwenden. Eine gute Masseführung ist wichtig für den stabilen Betrieb.
ICx
Input Capture
Mit Hilfe von Input Capture kann man Zeiten messen. Ein Signal an diesem Pin stoppt einen laufenden Timer. Verwenden kann man das zb bei den SRF04 Ultraschall Sensoren. Man startet den Timer und triggert gleichzeitig den Sensor, was einen Impuls sendet. Registriert der Sensor ein reflektiertes Signal setzt er den Input Capture Eingang und der Timer stoppt. Aus dem Wert kann man dann die Entfernung berechnen.
PB0 - PB7
Port B
Port B ist ein 8 Bit breiter, bi-direktionaler I/O- (Ein-/Ausgabe-) Port. Der Output-Buffer von Port B ist im "Sink"-Betrieb in der Lage, Ströme bis zu 20 mA aufzunehmen und dadurch z.B. LEDs direkt zu treiben. Jeder Pin des Ports kann individuell als Eingang oder als Ausgang konfiguriert und in der Funktion als Eingang kann ihm wahlweise ein Pull-Up-Wiederstand zugeschaltet werden.
Alternativ können über Port B auch diverse Sonderfunktionen (Timer, Analogkomparator-Eingänge, SPI-Interface) ausgeführt werden.
AIN0/AIN1
Analog Comparator
Den Analog Comparator kann man mit einem Operationsverstärker vergleichen. Mit seiner Hilfe kann man zwei Spannungen miteinander vergleichen. Der Controller kann dann feststellen welche der Spannungen höher ist. AIN0 ist der positive Eingang des Comparators, AIN1 der invertierte Eingang. Ist die Spannung an AIN0 höher als die an AIN1 gibt der Comparator ein "High" Signal aus, ist die Spannung niedriger gibt er ein "Low" Signal aus.
OCxx
Output Compare
Für jeden Timer gibt es eine oder mehrere Output Compare Pins. Dem OC folgt eine Zahl die angibt mit welchem Timer der Pin verbunden ist, als letztes kommt optional noch ein Buchstabe wenn an einem Timer mehrere Pins hängen, zb. OC0 = Timer0. OC1A, OC1B, OC1C = Timer1. Für jeden Pin gibt es ein Output Compare Register. Dessen Inhalt wird permanent mit dem Zählerstand des jeweiligen Timers verglichen. Stimmt Zählerstand und Output Compare Register überein kann eine vordefinierte Funktion ausgelöst werden, zb den entsprechenden OCxx Pin aktivieren/deaktivieren. Befindet sich der Timer im PWM Modus können die OCxx Pins entsprechend auch PWM Signale liefern
MOSI
Master Out, Slave In
Bei der SPI Schnittstelle gibt es getrennte Leitungen für Daten senden und empfangen. Der Master sendet seine Daten über die MOSI Leitung, der Slave empfängt sie.
MISO
Master In, Slave Out
Das Gegenstück zu MOSI ist MISO. Über diese Leitung empfängt der Master die Daten, der Slave sendet hierüber seine Daten.
SCK
Serial Clock
Takteingang oder -ausgang für die SPI Schnittstelle. Die SPI Schnittstelle ist eine synchrone Schnittstelle, dh neben den Datenleitungen wird der Takt für die Übertragungsgeschwindigkeit über eine zusätzliche Leitung an den Empfänger übermittelt. Der Master gibt hierbei immer den Takt vor, der Slave nimmt ihn an.
Atmel empfiehlt diesen Pin mit einem Widerstand auf ein definiertes Potential zu ziehen (PullUp oder PullDown). Es soll Fälle gegeben haben bei denen ein zufälliges Rauschen an den ISP Pins das Muster für eine Programmierung angelegt haben soll und dadurch der Chip in den Programmiermodus ging.
VCC
Betriebspannungsanschluß
Hier kommt die Spannungsversorgung für den Controller dran. An VCC kommt +. Im Normalfall sind das +5V, bei Batteriebetrieb können es aber auch 3V oder 3,3V sein. Man muß beachten das die Spannung nie über 5,5V steigt und das man den Controller bei 3,3V nicht mit 16MHz takten kann (L-Typ).