Ja, das Entprellen in beide Richtungen ist erforderlich, wenn Sie bei jedem Wechsel des Schalters eine garantierte Einzelflanke wünschen.
Glücklicherweise benötigen Sie keine zusätzliche Hardware zum Entprellen, wenn der Switch an einen Mikrocontroller angeschlossen ist. Wenn das Mikro über einen internen Pullup verfügt, was viele tun, benötigen Sie äußerlich nichts weiter als den Schalter zwischen dem Mikrostift und Masse.
Ich finde, 50 ms sind eine gute Entprellzeit. Die meisten Schalter springen deutlich weniger, aber einige können fast so lang sein. 50 ms fühlen sich für einen menschlichen Benutzer jedoch immer noch augenblicklich an, sodass Sie genauso gut besonders zuverlässig sein können. Der einzige Unterschied ist die Anzahl, bis zu der Sie in der Firmware zählen, also keine zusätzlichen Kosten. Normalerweise habe ich aus anderen Gründen ohnehin einen periodischen Interrupt von 1 ms. Wenn sich der Switch in diesem Interrupt 50 Mal hintereinander im selben Status befindet, erklären Sie, dass er in den neuen Status entprellt wurde.
Details zur Entprelllogik als Antwort auf einen Kommentar:
Im Allgemeinen haben Sie ein globales Bit, das den offiziellen Status des Switches anzeigt. Dies ist, was jede Logik, die wissen muss, auf welche Weise der Schalter eingestellt ist, verwendet. Der einzige zusätzliche Status, den Sie benötigen, ist ein Zähler, normalerweise ein einzelnes Byte, in der Interruptroutine. Angenommen, der Interrupt erfolgt alle 1 ms und die Entprellzeit beträgt 50 ms. Für jeden Interrupt:
Wenn der momentane Zustand mit dem entprellten Zustand übereinstimmt:
Zähler auf 50 zurücksetzen
Erledigt
Wenn der momentane Zustand vom entprellten Zustand abweicht:
Dekrementzähler
Wenn der Zähler 0 erreicht:
Deklarieren Sie den neuen entprellen Zustand
Zähler auf 50 zurücksetzen
Erledigt