Hallo liebe Gemeinde, Ich versuche mich gerade mit einem XMega in die Welt der Mikrocontroller einzuarbeiten. Nachdem ich gerade mit dem Qtouch Button rumgespielt habe, stellt sich für mich die Frage ob man Funktionsaufrufe für eine bestimmte Zeitspanne "sperren" kann um eine Mehrfachauslösung zu unterbinden. Bisher ruft bei mir der Timerinterrupt einen Algorithmus auf, in dem dann entschieden wird ob der Button gedrückt ist oder nicht. Ich will aber nicht, dass der Button mehrmals in einer bestimmten Zeitspanne ausgelöst wird. Gibt's da irgendeine pfiffige Lösung oder bleibt mir nur den Timer einfach komplett für eine bestimmte Zeit anzuhalten?
1 | uint8_t callWait = 0; |
2 | |
3 | Timer_interrupt
|
4 | {
|
5 | |
6 | if( callWait == 0 ) |
7 | {
|
8 | if( Button pressed ) |
9 | {
|
10 | callWait = 5; // oder was auch immer angebracht ist |
11 | call(); |
12 | }
|
13 | }
|
14 | else
|
15 | callWait--; |
16 | }
|
:
Bearbeitet durch User
Mit der Abfrage, ob das Ding gedrückt wurde (oder auch mehrfach) ist ja noch nichts passiert. Du musst ja schliesslich das Ergebnis der Abfrage irgendwie weiterverarbeiten - da würde ich ansetzen.
Allerdings hört sich das Ganze danach an, als ob du auf der Suche nach Entprellung bist, bzw. den Unterschied zwischen * Taste wurde niedergedrückt und * Taste ist gedrückt lernen musst. Ersteres ist eine Flankenerkennung. D.h. der Weg führt über die Erkenntnis, das eine niedergedrückte Taste auch wieder losgelassen werden muss - d.h. der Wechsel von nicht gedrückt zu gedrückt ist das entscheidende und nicht das die Taste gedrückt ist.
Danke für Eure Antworten. Entprellung scheint das richtige Stichwort zu sein, das werde ich mir erstmal zu Gemüte führen. Bisher löse ich es halt über ein Flag, das durch "loslassen" der Touchfläche wieder freigegeben wird. Ich würde gerne aber auch Mehrfachauslösung durch Halten der Taste zulassen, aber sowas ist ja im Wiki beschrieben. Vielen Dank für das Stichwort!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.