Forum: Mikrocontroller und Digitale Elektronik Tastaturschnittstelle


von Daniel M. (Gast)


Lesenswert?

Hallo,
Ziel meines Projektes ist es eine Tastatur in ein System über RS232 zu
integrieren.

Ich benutze einen Tiny2313 um das Protokoll einer PS2/AT-Tastatur über
eine serielle Schnittstelle(RS232) an einen µPC weiterzugeben und
umgekehr. PS2/AT-Tastatur arbeitet mit SCANCODE-SET2. Ich gebe die
HEX-Zahlen einfach nur weiter und das funktioniert von Tastatur zu PC
einwandfrei.
Sende ich nun Befehle von PC zu Tastatur, so erkennt er oft nach dem
dritten Befehl nicht mehr den Syntax. Nach einem Neustart(kurzes
unterbrechen der Betriebsspannung von der Tastatur) kann ich den Befehl
Restart(0xFF), so oft ich will, hintereinander ausführen. Wenn ich zum
Beispiel die Kontroll-LED anschalten möchte, schaltet er sie an, führt
aber danach keinen Befehl mehr aus. Aber wenn eine Taste gedrückt wird,
erhält der PC den richtigen SCANCODE. Es können nur keine Befehle mehr
von der Tastatur entgegegen genommen werden.
Ich arbeitete nach der Vorlage von http://www.marjorie.de/ps2/start.htm

von Kri (Gast)


Lesenswert?

Möglich, dass das nach dem Stopbit die Datenleitung nicht mehr
ordnungsgemäß frei gegeben wir.

Probier mal: (Auszug von der Vorlage)

Nachdem das Stopbit empfangen wurde, bestätigt das Eingabegerät, indem
Data Low gesetzt wird (Acknowledge) und ein letzter Clockimpuls
ausgegeben wird. Sollte der Host die Datenleitung nach dem 11.
Clockimpuls nicht freigeben, gibt das Eingabegerät solange Clockimpulse
aus, bis die Datenleitung freigegeben wird (das Eingabegerät erzeugt
dabei einen Fehler).

Der Host kann die Übertragung jederzeit vor dem 11. Clockimpuls
abbrechen, indem er Clock für mindestens 100 µs Low hält.

von Daniel M. (Gast)


Angehängte Dateien:

Lesenswert?

Danke erstmal, aber das habe ich beachtet.
Im Anhang habe ich eine Aufzeichnung aus meinem Terminalprogramm
zusammengefasst.

von Kri (Gast)


Lesenswert?

Hmmm ... vielleicht irgendwas mit dem Tastaturbuffer.

Was passiert, wenn du zwischen den LED-Befehlen von der Tastatur ein
paar Tasten geschickt bekommst?

Bzw. wenn du zwischen den LED-Infos andere Befehle an die Tastatur
schickst ?

Oder gibts die Möglichkeit, dass du die Signale mal mit dem Oszilloskop
anschaust ?

von Daniel M. (Gast)


Lesenswert?

Sobald ein Byte fertig zum Lesen im UART-Register(UDR) steht, sperre ich
die Interruptroutine die ich nutze, um Signale von der Tastatur zu
empfangen. Ich lese das Byte aus und steuere die Tastatur schon an um
den Befehl entgegen zunehmen(Sprich CLOCK 100µs nach LOW ziehen).
Danach setze ich über den µC DATA auf LOW. CLOCK wieder von Tastatur
steuern lassen und warten bis CLOCK wieder LOW.
###DATA entsprechend BIT<0> setzen, warten bis CLOCK=H und warten bis
CLOCK=L.###-> Dann den Satz wiederholen bis zu STOP-BIT. Abwarten bis
Acknowlegde von der Tastatur kommt und vor der Endlosschleife wieder
Interrupts aktivieren.
So gehe ich vor um Signale an die Tastatur zu senden.

von Daniel M. (Gast)


Lesenswert?

Was passiert, wenn du zwischen den LED-Befehlen von der Tastatur ein
paar Tasten geschickt bekommst?
-wegen der gesperrten Interruptquelle sind in der Zeit kein
Informationen von der Tastatur möglich. Da durch die Ansteuerung mit
CLOCK auf LOW(100µs)der Tastaturcontroller weiß, das er einen Befehl
bekommt

Bzw. wenn du zwischen den LED-Infos andere Befehle an die Tastatur
schickst ?
-Ist möglich.

Oder gibts die Möglichkeit, dass du die Signale mal mit dem
Oszilloskop
anschaust ?
-Bekomme morgen ein Fluke zum analysieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.