Hallo Maik,
Nun, sehr gute Taster prellen so 2-3ms, praktisch muss man mit 5-10ms rechnen und manche Schaltertypen, wie z.B. Schiebeschalter, prellen so lange sie bewegt werden.
Hinzu kommt, dass die Prellzeit mit dem Alter zu nimmt.
Die Prellzeit hat man vor allem beim Schliessen des Kontakts, beim Öffnen ist sie meistens sehr kurz.
Du musst das Ganze mikroskopisch betrachten:
Die Oberfläche eines Kontakts sieht dann aus wie eine Alpenlandschaft.
Bei einem Schiebekontakt werden die Kontaktflächen gegeneinander verschoben, das hüpft dann durch die sich verhakenden Alpen, also dauernde Erdbeben. Entsprechend hast du mal kontakt und mal nicht.
Bei den meisten anderen Kontakten werden diese über ein Feder aufeinander gedrückt, unter diese Kontakte fallen auch die meisten Relais. Der Kontakt hüpft dann wie ein Ball auf dem Anderen.
Die Elektronik ist nun halt so schnell, dass sie jeden Hüpfer als einzelne Betätigung erkennt.
Also zuerst solltest du wissen, was für Kontakte dein Taster hat. Normalerweise ist die Prellzeit im Datenblatt angegeben.
damit die Abfrage funktioniert, braucht man zwei Trick:
1. Du brauchst eine Hilfsvariable, welche den Zustand der Taste zwischenspeichert.
Nach dem Einlesen der Taste vergleichst du den Wert mit der Hilfsvariablen. Ist der Wert identisch hat sich nichts an der Taste geändert.
Sind die Werte ungleich, wurde die Taste verändert. Am aktuellen Wert kannst du erkennen ob sie gedrückt oder losgelassen wurde.
Dann speicherst du den aktuellen Zustand in der Hilfsvariablen,
2. Wenn sich die Taste verändert hat, wartest du 10-20ms bevor du die nächste Abfrage machst. Länger als 50-100ms solltest du die Zeit nicht machen, da gehen schon einzelne Tastendrücke verloren, wenn jemand nur kurz die Taste drückt. Wer fflink ist, bekommt schon 20 Betätigungen pro Sekunde hin.
Anstatt zu warten, kann man die Taste auch in einem Interrupt z.B. alle 20ms abfragen.
MfG Peter(TOO)
Lesezeichen