Forum: Mikrocontroller und Digitale Elektronik Entprellung bei Tastermatrix über AD-Wandler


von Max (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

da ich an meinem Atmega48 für ein zukünftiges Projekt nicht mehr genug 
freie Pins für eine Tastermatrix habe, verwende ich dazu einen 
AD_Wandler. Dort werden die Taster über eine Wiederstandsmatrix 
eingelesen. Anhand der Spannung kann ich erkennen, welche Taste gedrückt 
wurde. Das mit dem einlesen der Spannungen klappt auch ohne Probleme.

Nun kam mir die Frage, wie kann ich diese Taster entprellen? Im Prinzip 
doch wie andetre Taster auch. Nach dem drücken muss gewartet werden, bis 
der Taster wieder losgelassen wird. Also in meinem Fall, bis am 
AD-Wandler keine Spannung mehr anliegt. Danach muss eine gewisse Zeit 
vergehen, bis ein erneutes einlesen des Tasters erlaubt wird.

Das habe ich nun so verwirklicht:

1. Taste wird gedrückt
2. Aktion ausgeführt
3. Erneutes Tasten einlesen verweigert (In der Software taste = 1)
4. Warten bis Taste losgelassen wurde (AD_Wert == 0)
5. Prellzeit einfügen (Variable t4 wird unter den Bedingungen 3 und 4 in
   der Hauptschleife hochgezählt)
6. Erreicht t4 den Wert 5 wird das Tasten einlesen wieder freigegeben

Nun hab ich aber irgendwie das Problem, dass anscheinend nicht jeder 
Tastendruck erkannt wird. Manchmal funktioniert es 10mal hintereinander, 
dann aber einmal nicht. Hab ich was Grundlegendes falsch gemacht? Anbei 
mal  ein Auszug aus dem Code.

Gruß

von Stephan H. (stephan-)


Lesenswert?

der Peter hatte hier sowas mal in der Codesammlung.
Schau mal da nach.

Gruß

von Peter D. (peda)


Lesenswert?

Ja, ich hab dann einfach meine bewährte Entprellroutine auf 16 Bit (da 
12 Tasten) aufgepeppt:

Beitrag "Tastenmatrix auslesen über nur 2 Leitungen"


Peter

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.