Forum: Mikrocontroller und Digitale Elektronik Matrixtastatur: mehrere Tasten gleichzeitig -> Auswertung


von Ralf (Gast)


Lesenswert?

Hallo,

ich möchte eine Matrixtastatur auswerten. Hardwareseitig sind 
Vorkehrungen gegen PhantomKeys gegeben (Diode vor jedem Taster bzw. eine 
Diode pro Zeile/Spalte diagonal in der Matrix angeordnet).

Allerdings fehlt mir der Ansatz für den Softwaretreiber. Bei der 
einfachen Matrixtastatur habe ich den Scancode ermittelt, entprellt und 
dann den Keycode aus einer Tabelle herausgeholt. Die Funktionen zum 
Auslesen haben haben dann entsprechend den Keycode ausgegeben.

Ich frage mich nun, wie ein Softwaretreiber für die Unterstützung zur 
Erkennung mehrerer Tasten aussieht. Ein einzelnes Byte als Speicher für 
die Taste reicht ja dann nicht mehr. Aber einen Buffer mit n Bytes (n = 
Anzahl der Tasten) kann es ja auch nicht sein, oder? Wie wird das dann 
in der Praxis gehandhabt? Eigentlich würde ja auch ein simpler n-Bit 
Buffer gehen, das spart schon einiges. Zusätzlich nochmal einen 
parallelen n-Bit Speicher für Spezialfunktionen wie Shift/Ctrl etc.
Oder ist das der Holzweg?

Und die Auswerteroutinen an sich können dann auch nicht mehr einen 
Keycode zurückgeben, wie löst man das dann? -> Richtung umkehren, also 
von "gib mir die gedrückte Taste" hin zu "Ist die Taste XYZ gerade 
gedrückt?" ?

Ralf

von Route_66 H. (route_66)


Lesenswert?

Hallo!
Die Methode hängt natürlich von der Art der Matrix ab. Für eine 
Kippschaltermatrix, bei der von 0 bis n Kontakte auch dauerhaft betätigt 
sein können verwende ich einen n-Bit-Speicher mit Entprellung. Für 
Tasten mit Zweit- oder Drittbelegung (Shift, Ctrl, Alt), frage ich bei 
jedem Timertick diese konkreten Umschalttasten immer mit ab, und 
korrigiere den Tastencode entsprechend (also z.B.: aus dem gedrückten 
"a" wird ein "A" oder aus der "1" das Ausrufezeichen). Für ein 
n-Byte-Puffer kann man bei 10 begrenzen: mehr Finger hat niemand.

von MaWin (Gast)


Lesenswert?

Ralf schrieb:
> Ich frage mich nun, wie ein Softwaretreiber für die Unterstützung zur
> Erkennung mehrerer Tasten aussieht.

Wahrscheinlich wie unter Windows: Taste mit Drücken und Loslassen in 
eine Queue einsortieren.

Stichwort n-Key rollover.

Das bitfeld macht, wie Route schrieb, eher Sinn bei Schaltern.

von Peter D. (peda)


Lesenswert?


von Ralf (Gast)


Lesenswert?

@Route 66:
Stimmt, eine Begrenzung ist natürlich auch eine Möglichkeit :) Guter 
Hinweis, danke.

@MaWin:
Hmja, die Make-/Break-Codes oder wie die genannt werden. Beispielsweise 
Bit 7 beim Drücken setzen, und beim Loslassen mit gelöschtem Bit 7 in 
die Queue -> ist notiert.

@PeDa:
Danke, werd ich heut abend durch durchlesen, bin noch auf der Suche nach 
geeigneten Tasten.

Ralf

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.