Hallo, habe in der Codesammlung die "Bulletproof" Entprellung für Tasten gefunden. Die ist soweit wunderbar, allerdings nicht für Schalter. Habe jedoch einen mechanischen Schalter, bei dem auf Low und High reagiert werden soll. Wie entprellt man so etwas? In der ISR (Timer Overflow) einfach eine Variable hochzählen wenn der letzte Zustand dem aktuellen entspricht, andernfalls die Variable wieder auf Null zurücksetzen? Ab einem bestimmten Zählerwert ist halt ein Zustand eingetreten. Bessere Vorschläge? Gruß, Hans
nicht nur letzte==jetzigem Zustand, sondern evtl. 5-10 Werte auf Gleichheit prüfen....
Wennn Du mal den Code genauer ansiehst, dann wirst Du bemerken, daß nicht nur die H-L Flanke, sondern auch der entprellte Zustand zur Verfügung steht. Damit wird z.B. in der erweiterten Version die Lang/Kurz Erkennung gemacht. Peter
Hallo, habe probiert die Entprellung zu verstehen und bin dazu auch mal den Code per Zettel + Stift durchgegangen um zu sehen was da überhaupt passiert. Muss gestehen: das Teil funktioniert perfekt, aber wäre ich nie drauf gekommen und werde ich auch nicht ändern/anfassen. Habe nur die Tastenabfrage erweitert, so dass man Pins aus unterschiedlichen Ports verwenden kann und arbeite da noch dran Pins die nicht von 0...7 gehen zu verwenden (z.B. PortA Pin0, Pin1 & PortB Pin1). Zurück zum Thema: habe das jetzt so im Timer Overflow gelöst (actState und switchcount sind globale Variablen die mit 0 initialisiert werden): unsigned char tempSwitch; tempSwitch = (PortSwitch & (1 << PinSwitch)); if (tempSwitch == actState) { switchcount++; } else { switchcount = 0; } actState = tempSwitch; Außerhalb der ISR prüfe ich dann einfach switchcount auf größer/gleich 4 und den Zustand von actState. Scheint zu laufen ;=) Gruß, Hans
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.