-
-
Erfahrener Benutzer
Robotik Einstein
Ich hab das bei einer 4x4 Matrixtastatur so gemacht, das ich auf jeweils einer Spalte über einen Controllerport ein "low" ausgegeben habe.
In den Zeileh hab ich dann die Ports abgefragt, welche Spalte - oder auch keine - Ein "low" anliegen hat.
Danach wurde die aktuelle Spalte wieder auf "high" gelegt und an die nächste wieder ein "low" angeschaltet.
An die Spalten Eingänge sollten Pullups angeschaltet werden, wenn die Verbindungen zum Controller kurz sind, kann man auch die internen des Controllers verwenden.
Durch die Abfrage wird dann eine Variable beschrieben, die sinnvollerweise dem Wert der gedrückten Taste entspricht.
Danach wird eine kurze Zeit gewartet delay_ms(10); und das gleiche Spielchen mit einer anderen Variable wiederholt.
Danach vergleicht man beide Variablen.
Sind sie gleich kann man davon ausgehen, das auch wirklich die entsprechende Taste gedrückt wurde. Somit wäre auch die Entprellung erledigt.
Eventuell muß man nach dem Umschalten der Zeilen- Leitung ein wenig warten, bis sich die parasitären Kapazitäten umgeladen haben um korrekte Ergebnisse zu erhalten.
Das kann man mit #asm("NOP"); oder dely_us(x); machen.
Ich bin der Meinung, das für eine Tastaturabfrage das Polling schnell genug ist, wenn es im Hauptprogramm oft genug ausgeführt wird.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen