Las razones del jitter del interruptor de llave del microcontrolador, las características del jitter y cómo eliminarlo
Cuando se presiona el botón del interruptor, parece que solo se presiona una vez, pero la conducción de la señal no salta simplemente de 1 a 0 directamente. Esto se debe a que los contactos mecánicos vibrarán cuando se abran/cierren y la señal vibrará entre ALTA y BAJA como se muestra en la figura. Este tipo de fluctuación es imperceptible para los humanos, pero es completamente detectable para el microcontrolador.
Cuando se presiona el botón, el efecto esperado debería ser: 111111111000000000...,
Pero contrariamente a lo esperado, la señal leída por el microcontrolador puede ser: 111110110110000000... ,
En medio de la transición continua entre 1 y 0, algunos 01 entrelazados aleatoriamente a corto plazo son la inquietud que no esperábamos. Aunque solo presionamos el botón una vez, el usuario puede malinterpretarlo. circuito como presionar el botón varias veces, y parece que el botón a veces no funciona. El propósito del rebote es eliminar la entrada incorrecta causada por el rebote de la señal entre potenciales altos y bajos, es decir, el período 01 que aparece de manera entrelazada. Generalmente, la duración de la fluctuación es de 3 a 10 milisegundos. Por lo tanto, para una operación antirrebote simple, solo necesita realizar dos detecciones de estado de botón en ambos extremos del lapso de tiempo cuando ocurre la fluctuación:
Suponga que la señal de soltar el botón es 1 y presionarlo es 1. 0,
Luego, cuando el botón se detecta por primera vez, es 0 y se detecta nuevamente después de 10 ms. Si aún es 0, presionar el botón es válido; si es 1, es válido. significa nerviosismo, elimínelo.
Un método antivibración más confiable y sensible es:
Después de detectar que el botón está en 0 por primera vez, continúe detectando durante los siguientes 3 a 5 ms si la señal detectada. siempre es 0, entonces el botón es válido. Si no es 0 una vez en el medio, el tiempo se borrará a 0 y se reiniciará hasta que la señal del botón sea 0 durante 3-5 ms seguidos antes de que sea válido. (Además, la detección continua no significa que dedique todo el tiempo de la CPU a esto; de lo contrario, el microcontrolador equivaldrá a fallar en estos pocos ms, lo que afectará otros procesos, pero muestreará a intervalos, como 5 ms. Detectado 10 veces en 10 veces, las 10 veces son 0 válidas. En otras ocasiones, la CPU, por supuesto, se encargará de otros asuntos)
En cuanto a las pulsaciones de botones más complejas, pulsaciones simples, pulsaciones dobles, varios botones surten efecto al mismo tiempo. , etc. La función se puede implementar con la ayuda de otras banderas.