PC/AT Keyboard verhält sich nicht wie erwartet

Gast #979346
Lesenswert?

Hallo zusammen,

versuche gerade ein altes PC/AT Keyboard mit dem Atmel anzusteuern. 
Leider verhält sich das Keyboard nicht wie erwartet.

Ich habe das Clock Signal an INT0 und die Datenleitung an einem weiteren 
Portpin. Ich kann das Signal auch dekodieren. Einige Scancodes 
funktionieren (z.B. 0x29 für Space, 0x1c für A, etc.). Aber manche 
Sachen verhalten sich anders, als ich es gelesen habe.

Z.B. die Pfeiltasten oder die Home/Ende Tasten, etc. senden alle den 
Code 0xE0, aber danach kein weiteres Byte, was nachdem was ich gelesen 
habe aber bei Tasten mit "extended code" so sein müsste. Ausserdem wird 
beim loslassen einer Taste lediglich 0xF0 gesendet, aber nicht 
nocheinmal der Code der Taste die losgelassen wurde.

Ich habe das ganze mit zwei verschiedenen Tastaturen ausprobiert, daher 
denke ich, dass es an meiner Software liegen könnte.

Ausserdem habe ich gelesen, dass es verschiedene "Betriebsmodi" für 
solche älteren Tastaturen gibt. Bin ich eventuell im falschen? Wie änder 
ich den?

Danke schonmal!

Gruss
Florian
Gast #979566
Lesenswert?

Hmm. Aber irgendwas stimmt doch hier nicht. Die Pfeil Hoch und Pfeil 
Runter Taster erzeugen exakt die gleichen gesendeten Bytes. Wie soll der 
PC denn da unterscheiden welche Taster gedrückt wurde?
Gast #979626
Lesenswert?

Ich habe die Clock an einem Interrupt Pin. Ich lese die 11 Bits (Start, 
8 mal Payload, Parity, Stop) bei jedem Interrupt ein und schreib den 
Payload in eine Variable. Den Payload dekodieren mache ich garnicht, ich 
schicke einfach die empfangenen Bytes per UART an den PC um sie 
anzuzeigen. Und wenn ich Pfeil hoch oder Pfeil runter drücke auf der 
Tastatur, kommt das gleiche am PC an, etc..

Werd es nachher mal mit einer PS2 Tastatur testen. Im moment habe ich 
hier zwei alte Tastaturen mit dem größeren Stecker..
Gast #1002314
Lesenswert?

Hallo zusammen,

habe es jetzt nochmal probiert. Sieht schon etwas besser aus (z.B. wird 
bei den Pfeiltasten jetzt der korrekte Scancode gesendet). Aber 
irgendwas funktioniert hier immernoch nicht so wie es soll, habe ich das 
Gefühl.

Könnte jemand bitte mal meinen Code ansehen? (Anhang)

Danke!

Gruss
Flo
Angehängte Dateien:
Gast #1002372
Lesenswert?

Ich habe das Gefühl, dass ich jedes zweite Byte verliere.

Z.B. sollte die "Pause" Taste ja den Scancode "E1 14 77 E1 F0 14 F0 77" 
generieren. Bei mir kommt aber nur "E1 77 F0 F0" an.

An der Tastatur liegt es definitiv nicht. Habe schon 4 verschiedene 
Tastaturen getestet.

Wäre schön, wenn jemand eine Idee hat, woran das liegen könnte!

Danke!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren