GPIO Pins: Projekt-1
Idee
[Bearbeiten]In diesem Projekt soll es darum gehen, eine PS/2 Tastatur mit dem Microcontroller zu verbinden.
PS/2 Schnittstelle
[Bearbeiten]Die PS/2 Schnittstelle verwendet einen 6-poligen Stecker. Es werden aber nur 4 der 6 verfügbaren Stecker verwendet.
Der PS/2 Bus ist ein serieller Bus. Daten, die über den PS/2 Bus übertragen werden, werden in Paketen transportiert, deren Bits sequentiell eines nach dem anderen übertragen werden. Die Nutzdaten, die in einem Paket transportiert werden können, haben immer eine Länge von 8-Bit.
Leitungen
[Bearbeiten]Für die Übertragung werden nur zwei Leitungen benötigt. Eine der beiden Leitungen dient der Übertragung der einzelnen Datenbits. Im Folgenden wird sie daher auch als Datenleitung oder kurz DATA bezeichnet werden. Die zweite Leitung dient der Synchronisation. Über sie wird geregelt, zu welchem Zeitpunkt Daten auf die Datenleitung gelegt, bzw. von dort entnommen werden. Die Synchronisation erfolgt mit einem Taktsignal. Im Folgenden wird die zweite Leitung daher auch als Taktleitung oder kurz CLK bezeichnet werden.
Anschluss
[Bearbeiten]1 | DATA | |
3 | GND | |
4 | Vcc = 5V | |
5 | CLK |
PS/2 Tastatur
[Bearbeiten]Üblicherweise fließen die Daten hierbei von einem Eingabegerät, wie in unserem Beispiel der Tastatur, zu einem Gerät, dass die Daten verarbeitet. Es können aber auch Daten in die umgekehrte Richtung, also zum Eingabegerät hin transportiert werden. In unserem Fall können auf diese Weise z.B. die mit "Num Lock", "Caps Lock" und "Scroll Lock" beschrifteten Leuchtdioden der Tastatur angesteuert werden.
Tastatur -> Host
[Bearbeiten]Eine PS/2 Tastatur versendet eigenständig Daten, die über den Zustand der Tastatur Auskunft geben.
Wenn eine Taste gedrückt wird versendet die Tastatur eine Serie von Bytes, die darüber Auskunft geben, welche Taste gedrückt wurde. Eine solche Serie von Bytes wird auch als Make Code der jeweiligen Taste bezeichnet.
Wird eine Taste wieder losgelassen, so versendet die Tastatur erneut eine Serie von Bytes, die Auskunft darüber geben, welche Taste losgelassen wurde. Eine solche Serie von Bytes wird auch als Break Code der Taste bezeichnet.
Die Zuordnung der Make Codes und Break Codes zu den einzelnen Tasten der Tastatur wird als als Scancode Set bezeichnet. Für eine PS/2 Tastatur gibt es 3 Scancode Sets, die von 1 bis 3 nummeriert sind. Nach einem Reset verwendet die Tastatur immer das Scancode Set 2.
Eine Übersicht über die Make- und Break Codes der einzelnen Tasten in den drei Scancode Sets findest Du in den Abbildungen rechts. Die erste Zeile gibt Auskunft über den jeweiligen Make Code der zugehörigen Taste. Die zweite Zeile gibt den zugehörigen Break Code an.
Wird eine Taste für eine gewisse Zeit festgehalten, so wird der Make Code der Taste in einem vorgegebenen Intervall so lange wiederholt, bis sie wieder losgelassen, oder eine andere Taste gedrückt wird. Dieses Verhalten der Tastatur wird auch Typematic genannt.
Die Verzögerung, nach der die Typematic startet, wird auch als Typematic Delay bezeichnet. Die Wiederholrate, mit der die Zeichen erneut ausgegeben werden, wird auch als Typematic Rate bezeichnet.
Host -> Tastatur
[Bearbeiten]Um Befehle zu versenden und das Verhalten der Tastatur zu konfigurieren können Daten an die Tastatur gesendet werden.
Genaue Einzelheiten zu den einzelnen Befehlen und den Parametern werden wir uns zu einem späteren Zeitpunkt ansehen, wenn es um die Implementierung geht.
elektrische Eigenschaften
[Bearbeiten]Im Ruhezustand liegen beide Leitungen CLK und DATA auf high.
Datentransport
[Bearbeiten]Daten werden mit einem Taktsignal auf der CLK Leitung transportiert. Der Takt wird immer vom Eingabegerät, in unserem Fall also der Tastatur, erzeugt.