Forum: Mikrocontroller und Digitale Elektronik PS/2 Keyboard am PSoC 3/4/5


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von DH1AKF W. (wolfgang_kiefer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Damit man den µC mit Texten füttern kann, habe ich mir eine kleine 
Tastatur zugelegt:

Ebay-Artikel Nr. 161307210116

Zu meinem Glück kann sie nicht nur USB, sondern beherrscht dank zweier 
Pullup- Widerstände (je 4,7k Ohm) auch den PS/2- Modus.

Nach langem Suchen im Internet und vielem Herumprobieren habe ich nun 
eine halbwegs taugliche Lösung gefunden. Aber es hapert noch an der 
deutschen Tastenbelegung, speziell bei Alt- Gr.

Frage: Hat jemand dieses Problem gelöst??

MfG!!

von Ralf D. (rad)


Bewertung
0 lesenswert
nicht lesenswert
DH1AKF K. schrieb:
> Frage: Hat jemand dieses Problem gelöst??

Welches Problem?

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
DH1AKF K. schrieb:
> Aber es hapert noch an der
> deutschen Tastenbelegung, speziell bei Alt- Gr

Als erstes musst du dir dazu eine deutsche Tastatur kaufen.

Georg

von DH1AKF W. (wolfgang_kiefer) Benutzerseite


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Als erstes musst du dir dazu eine deutsche Tastatur kaufen.

Hahaha, der war gut...!

Auch bei eBay trügt oft der Schein. Zugegeben, ich war beim Auspacken 
leicht nervös, weil die Verpackung ebenfalls eine QWERTY- Tastatur 
zeigte. Aber wie man sieht, ist das deutsche Layout vorhanden.

Nun mal im Ernst: hat jemand die dazu passende Codetabelle??

MfG Wolfgang

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
DH1AKF K. schrieb:
> Nun mal im Ernst: hat jemand die dazu passende Codetabelle??

Die Scancodes von "PS/2"-Tastaturen werden hier beschrieben:
http://de.wikipedia.org/wiki/Scancode

Das ist unabhängig vom Aufdruck.

von DH1AKF W. (wolfgang_kiefer) Benutzerseite


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für den Tipp!!

Die Routine ist in C geschrieben, benutzt einen 70 kHz- Timer- Interrupt 
und sollte somit auf allen gängigen Controllern funktionieren, wenn man 
die Initialisierung entsprechend anpasst.
Ist noch nicht ganz fertig (3. Tastenebene mit AltGr fehlt noch,) aber 
funktioniert.

von Ralf D. (rad)


Bewertung
0 lesenswert
nicht lesenswert
DH1AKF K. schrieb:
> Nun mal im Ernst: hat jemand die dazu passende Codetabelle??

Welche Codetabelle? Meinst Du den Scan Code Set?

Davon gibts nur drei ... siehe http://www.marjorie.de/ps2/start.htm

Da gibts auch noch viel mehr Infos zm Umgang mit der PS/2 - 
Tastaturschnittstelle.

von Ralf D. (rad)


Bewertung
0 lesenswert
nicht lesenswert
DH1AKF K. schrieb:
> Die Routine ist in C geschrieben, benutzt einen 70 kHz- Timer- Interrupt

Holla die Waldfee ;)

Einen permanent laufenden 70kHz Timer Interrupt zu nutzen um eine 
Tastatur einzulesen erscheint mir reichlich dickes Kaliber für solch 
eine Aufgabe.

Ich weiß nun nicht was "PSoC" für eine Chip ist ... aber ... hat der 
keine einfache synchrone serielle Schnittstelle für einen 9 Bit Empfang?

Oder wenigstens einen interruptfähigen Eingang der nur auf jeder 
fallenden Flanke des Clocksignals einen Interrupt erzeugt?

: Bearbeitet durch User
von DH1AKF W. (wolfgang_kiefer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Ralf D. schrieb:
> der wenigstens einen interruptfähigen Eingang der nur auf jeder
> fallenden Flanke des Clocksignals einen Interrupt erzeugt?

Hallo Ralf, mit Interrupt auf der negativen Taktflanke habe ich lange 
herumprobiert, aber leider ohne Erfolg. Weder mit sofortigem Einlesen 
der Datenbits noch mit Zeitverzögerung lief das wiederholbar stabil. 
Erst das Polling im 70 kHz- Takt hat funktioniert.
Mag sein, dass hier irgendwelche Störimpulse im Spiel waren, die hätte 
man vielleicht abblocken sollen.

von DH1AKF W. (wolfgang_kiefer) Benutzerseite


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ralf D. schrieb:
> Einen permanent laufenden 70kHz Timer Interrupt zu nutzen um eine
> Tastatur einzulesen erscheint mir reichlich dickes Kaliber für solch
> eine Aufgabe.

Hallo Ralf, es geht auch mit Interrupt auf die HL- Flanke des PS/2- 
Taktes!

Das ist natürlich eine starke Entlastung des Prozessors. Problem waren 
vermutlich kleine Bugs in der ISR.

Die Routine ist noch nicht vollständig fertig: Es fehlt noch die Alt-Gr 
Umschaltung.

von ./. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Zu meinem Glück kann sie nicht nur USB, sondern beherrscht dank zweier
> Pullup- Widerstände (je 4,7k Ohm) auch den PS/2- Modus.

Von 5 V plus an die USB-Leitungen?

Oder innendrin?

von DH1AKF W. (wolfgang_kiefer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
./. schrieb:
> Von 5 V plus an die USB-Leitungen

Ja, so klappt das.

von ./. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Ja, so klappt das.

TNX.

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.