www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tastaturschnittstelle


Autor: Daniel M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kri (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel M. (Gast)
Datum:
Angehängte Dateien:

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

Autor: Kri (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Daniel M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.