Sí, es necesario eliminar el rebote en ambas direcciones si desea un borde único garantizado cada vez que el interruptor cambia de estado.
Afortunadamente, no necesita ningún hardware adicional para eliminar el rebote si el conmutador está conectado a un microcontrolador. Si el micro tiene un pullup interno, que muchos necesitan, no necesita nada más externo que el interruptor entre el micro pin y la tierra.
Encuentro que 50 ms es un buen momento para eliminar el rebote. La mayoría de los interruptores rebotan por mucho menos que eso, pero algunos pueden ser casi tan largos. Sin embargo, 50 ms aún se sentirán instantáneos para un usuario humano, por lo que bien podría ser más confiable. La única diferencia es el número con el que cuenta en el firmware, por lo que no hay ningún costo adicional. Por lo general, tengo una interrupción periódica de 1 ms por otras razones, por lo que si el interruptor está en el mismo estado 50 veces seguidas en esa interrupción, entonces declaras que se ha devuelto al nuevo estado.
Detalles sobre la lógica de rebote en respuesta al comentario:
En general, tendrá un bit global que indica el estado oficial cancelado del conmutador. Esto es lo que utiliza cualquier lógica que necesite saber de qué manera se configura el conmutador. El único estado adicional que necesita es un contador, generalmente un solo byte, en la rutina de interrupción. Digamos que la interrupción es cada 1 ms y el tiempo de rebote es de 50 ms. Para cada interrupción:
Si el estado instantáneo coincide con el estado sin rebote:
Restablecer contador a 50
Hecho
Si el estado instantáneo difiere del estado sin rebote:
Contador de decremento
Si el contador llega a 0:
Declarar el nuevo estado sin rebote
Restablecer contador a 50
Hecho