PS/2 Keyboard am PSoC 3/4/5

OP Persönliche Seite #4056434
Lesenswert?

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

http://www.ebay.de/itm/161307210116?_trksid=p2059210.m2749.l2648&ssPageName=STRK%3AMEBIDX%3AIT

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!!
OP Persönliche Seite #4056618
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
Angehängte Dateien:
OP Persönliche Seite #4056814
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.
Angehängte Dateien:
#4056848
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?
OP Persönliche Seite #4057176
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.
OP Persönliche Seite #4071022
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.
Angehängte Dateien:

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