Download - Fakultät 06 - Hochschule München
Download - Fakultät 06 - Hochschule München
Download - Fakultät 06 - Hochschule München
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
30 2 Entwicklung der Software<br />
zur Rückgabe des Pufferinhaltes an die aufrufende Funktion erst ausgeführt<br />
wird, wenn der Empfangspuffer gefüllt ist. Ist der Empfangspuffer<br />
leer, so ist RXC0=0 und es wird das Schleifenkriterium erneut bezüglich<br />
eines weiteren Durchlaufes der Schleife überprüft.<br />
Die ISRs (Interrupt Service Routine)<br />
Zur Ausgabe der Zeichen auf das Display stehen zwei verschiedene Interrupt<br />
Service Routinen zur Verfügung. Wie auf Seite 9 in Abbildung 1.1,<br />
gezeigt, verfügt jeder Eingangspin über eine PCINTXX Quelle, eine Pin<br />
Change Interrupt Quelle.<br />
Dies bedeutet, dass bei Änderungen der an den Eingangspins anliegenden<br />
Spannungen durch den zugehörigen Interrupt Vektor eine Interrupt Service<br />
Routine ausgelöst werden kann. Um nur den Interrupt des für die Ausgabe<br />
des empfangenen Zeichens relevanten Eingangspins zuzulassen, werden,<br />
in der Hauptfunktion main(), in den Registern PCMSKn (Pin Change<br />
Mask Register) die einzelnen I/O Pins für den jeweiligen Interrupt Vektor<br />
und im PCICR Register (Pin Change Interrupt Control Register) der<br />
korrespondierende Vektor selbst, aktiviert beziehungsweise deaktiviert.<br />
In Tabelle 2.6 auf Seite 30 sind die Eingangspins mit den zugehörigen Interrupt<br />
Vektoren und den entsprechenden Werten der Kontrollregister aufgeführt.<br />
Pin Interrupt Quelle Interrupt Vektor PCICR<br />
PCMSKn<br />
n=0 n=2<br />
PB0 PCINT0 PCINT0_vector 0x01 0x01 -<br />
PD7 PCINT23 PCINT2_vector 0x04 - 0x80<br />
PD6 PCINT22 PCINT2_vector 0x04 - 0x40<br />
PD5 PCINT21 PCINT2_vector 0x04 - 0x20<br />
PD4 PCINT20 PCINT2_vector 0x04 - 0x10<br />
PD3 PCINT19 PCINT2_vector 0x04 - 0x08<br />
PD2 PCINT18 PCINT2_vector 0x04 - 0x04<br />
Tabelle 2.6: Die Eingangspins mit zugehörigen Interrupt Vektoren und Kontrollregistern<br />
ISR zu den Eingängen PD2:7:<br />
1 ISR ( PCINT2_vect )<br />
{<br />
3 u i n t 8 _ t puffer =(PIND & PCMSK2) ;<br />
Der Variable puffer wird in Zeile 3 des Quellcodes ein Maß zur Beurteilung<br />
des Pegels am Eingangspin zur Zeit des Interrupt-Ereignisses zugewiesen.