Startseite


Communities: 
  • Hardware-FAQ
  • Diskussionsforen
  • RC5-72 Projekt
  • RC5-Proxy
  • Forenarchiv

  • Tastaturschnittstelle

    Obwohl die Tastaturen sich äußerlich ziemlich ähneln, so gibt es doch gravierende Unterschiede. Hauptsächlich unterscheidet man XT und AT Tastaturen. Diese kann man an dem zusätzlichen Nummernblock der AT-Tastatur unterscheiden. Die weiterentwicklung der AT ist die sog. MF-II Tastatur, bei dieser liegen die Funktionstasten nicht neben sondern über den Buchstabentasten. Auch hat diese Tastatur drei LED´s, die den Zustand der Feststelltaste u.a. anzeigen.

    Aufbau und Funktion:

    Bei der Tastaturschnittstelle handelt es sich um eine bidirektionale, serielle Verbindung, die durch einen Mikrocontroller in der Tastatur gesteuert wird. Alle Tastaturen sind über 5-polige Rundkabel mit dem PC verbunden. In diesem Kabel sind Versorgungs-, Daten- und Steuerleitungen untergebracht. Die Datenübertragung wird hier im Unterschied z.B. zur RS 232 über Taktleitungen gesteuert.



    Bild 1: Keyboardstecker

    Pinbelegung

    Pin Nummer
    Beschreibung
    1
    CLK
    2
    Data
    3
    Reset (meist nicht belegt)
    4
    GND
    5
    + 5 Volt

    Die Leitung +5Volt und GND sind notwendig, da die Tastatur, wie bereits erwähnt, einen Mikrocontroller besitzt. Dieser überprüft periodisch alle Zustand der Tasten. Wenn nun eine Taste betätigt wird, so erzeugt der µC einen entsprechenden Code, auch Scancode geanannt. Dieser Code wird über die Data Leitung an den Computer gesendet. Die einzelnen Bits werden mit einer positiven Flanke an CLOCK übernommen. Doch AT und XT Tastaturen unterscheiden sich nicht nur in ihrem äußeren, sondern auch bei der Datenübertragung. Das Protokoll bei einer AT-Tastatur ist ähnlich dem einer RS 232 SChnittstelle. Hier besteht ein Datenpacket aus 11 Bits. Zuerst wird ein Startbit gesendet, anschließend 8 Datenbits, dann folgen ein Paritäts- und ein Stoppbit. Das Paritätsbit ergänzt die Datenbits zur ungeraden Parität. Ein Startbit entspricht immer einer logischen '1' und das Stoppbit einer '0'. Im nicht-aktiven Zustand hat die Schnittstellenleitung high-Pegel. Ein selten genutztes Signal ist Reset. Dieses war ursprünglich dazu gedacht, um den µC der Tastatur zurückzustetzen.

    Ausgewertet werden die empfangenen Daten im PC ebenfalls von einem µC, der die ankommenden Scancodes in den ASCII-Code umwandelt. Im Gegensatz dazu verwendet die XT Tastatur nur ein 9-bit Datenpaket. Hier werden die Daten auch von einem µC erzeugt, jedoch erfolgt die Auswertung im PC durch ein Schieberegister. Sobald hier 8 Bits empfangen wurden, wird ein Interrupt ausgelöst, und der Scancode wird eingelesen. Diese Tastatur hat aber heute weitgehend ausgedient. Normalerweise wird die Tastatur nur als Eingabegerät genutzt, d.h. Daten zum PC. Der Controller in der Tastatur kann aber auch vom PC aus angesprochen werden. In der folgenden Tabelle sind die möglichen Befehle dargestellt:


    Befehl
    Beschreibung
    EDh
    Ein- bzw. Ausschalten der LED´s einer MF-II Tastatur
    EEh
    Rückgabe des Bytes EEh
    F0h
    Identifikation des aktuellen Scancode-Satzes
    F2h
    Tastatur wird identifiziert
    F3h
    Einstellung für Wiederholung und Verzögerung der Tastatur
    F4h
    Aktivierung der Tastatur
    F5h
    Deaktivierung der Tastatur
    F6h
    Aktivierung der Ttastatur und Einstellung der Standartwerte
    FEh
    Nochmaliges Senden des letzten Zeichens an den Tastaturcontroller
    FFh
    Tastatur-Reset

    Tabelle 1: Befehle zum Controller der Tastatur

    Diese können direkt in das Ausgaberegister geschrieben werden (bei mir Port 0x060). So kann man z.B. mit einer kleinen Spielerei die LED´s an der Tastatur zum Blinken bringen.

    Programmbeispiel:

    void main()
    {
    for(i=0;i<30;i++)
    {
    outp(PORT,237); // Befehl EDh
    warte(10000); //wartet 10ms
    outp(PORT,7); // schaltet alle 3 LED´s an
    warte(100000);

    outp(PORT,237);
    warte(10000);
    outp(PORT,0); // und wieder aus
    warte(100000);
    }
    }

    Zur Ansteuerung der LED´s muß also zuerst der Befehl EDh gesendet werden, und danach noch ein Byte mit den zu schaltenden LED´s.

    Bit 0: Scroll Lock LED
    Bit 1: Caps Lock LED
    Bit 2: Num Lock LED

    Das Setzen eines Bits schaltet die LED ein.

    Mit dem Befehl EEh kann überprüft werden, ob eine funktionsfähige Tastatur angeschlossen ist. Dazu wird von diesem Befehl ein Echo erzeugt, d.h. ein Byte gleichen Wertes. Dieses kann dann dem Eingangsregister entnommen werden. Mit F0h kann der Scancode eingestellt werden. Es kann zwischen 3 Code umgeschaltet werden. Dazu wird nach dem Befehl der Gewünschte Code gesendet. Bei einer gesendeten '0' wird der aktuelle Wert ins Eingangsregister geschrieben. Der Standartscancode ist 2. Durch F2h kann die angeschlossenen Tastatur ermittelt werden. Als Antwort auf diesen Befehl wird bei einer AT-Tastatur FAh und bei einer XT die Bytes Fah, 41h und ABh ins Eingangsregister geschrieben. Wird eine Taste dauerhaft betätigt, so werden nach einer kurzen Verzögerung kontinuierlich Zeichen an den PC gesendet. Die zugehörige Verzögerungszeit ist vom PC aus einstellbar. Dazu wird nach dem Befehl F3h ein Byte für die gewünschte Zeitangabe übermittelt: (die Bits 5 und 6 enthalten die Angabe)

    00: 250 ms
    01: 500 ms
    10: 750 ms
    11: 1000 ms

    Durch die Bits 0 bis 4 wird die Wiederholungsgeschwindigkeit festgelegt. Diese kann von 30 Zeichen/s beim Wert 00000b bis zu 2 Zeichen/s bei 11111b variiert werden. Diese Werte steigen jedoch nicht linear sondern hyperbolisch an. Ist während der Übertragung ein Fehler aufgetreten, so kann die Tastatur durch den Befehl FEh aufgefordert werden, das Byte noch einmal zu senden. Die Tastatur kann durch einen Reset ( FFh ) in ihren Anfangszustand gesetzt werden. Die Tastatur liefert als Antowrt den Wert FAh. Danach passiert 0.5s bis 1s gar nichts. Anschließend wird das Ergebnis in eine Funktionskotrolle übergeben. Bei positivem ergebnis wird der Wert AAh übergeben, sonst FCh. Von außen bemerkt man so einen Reset beim Hochfahren des PC´s: Der PC piepst und alle 3 LED´s leuchten kurz auf.





    Alle Angaben wie immer ohne Gewährleistung !
    © 2001-2016 Alle Rechte vorbehalten. Mit Urteil vom 12. Mai 1998 - 312 O 85/98 - "Haftung für Links" hat das Landgericht (LG) in Hamburg entschieden, dass man durch die Anbringung eines Links, die Inhalte der gelinkten Seite ggf. mit zu verantworten hat. Dies kann - so das LG - nur dadurch verhindert werden, indem man sich ausdrücklich von diesen Inhalten distanziert. Hiermit distanzieren wir uns ausdrücklich von allen Inhalten aller gelinkten Seiten auf unseren Foren.