Debouncing es un término general que no es específico de ningún chip controlador en particular …
Antes de conocer el rebote, debemos ser claros acerca del rebote …
Cuando se utiliza una interfaz de botón en microcontroladores (especialmente botones).
- Lua y C, ¿cuál es el mejor lenguaje de programación para sistemas embebidos?
- Cómo gestionar la concurrencia en un entorno informático distribuido e integrado
- ¿Cómo podemos grabar un programa en un microcontrolador AVR en Linux?
- ¿Es bueno usar Buck Converter para suministrar microcontrolador?
- ¿Linux funciona para tabletas?
Considere que está utilizando un borde ascendente de una señal causada por presionar un botón para realizar alguna acción (por ejemplo, alternar el estado del led).
Pero debido a limitaciones de diseño mecánico y efecto de envejecimiento … Es posible que estos botones pulsadores no tengan un buen contacto, por lo tanto, pueden producir varios bordes ascendentes (por supuesto, también bordes descendentes …) en una sola pulsación …
También ocurre al volver a presionar el botón … Lo que puede conducir a una interpretación errónea del controlador como pulsaciones múltiples … Y alterna el estado del led tantas veces, lo que lleva a un funcionamiento erróneo del controlador …
Esto produce un proceso más engorroso que involucra contadores … Cuenta una sola pulsación como varias pulsaciones (y este “varios” no es predecible) …
Y este fenómeno indeseable involucrado entre el botón y los pines del controlador se llama rebote.
Los métodos que utilizamos para evitar los problemas debidos al rebote se llaman Debouncing.
Que se clasifica como
Eliminación de rebotes de hardware y eliminación de rebotes de software
Rebote de hardware:
Usando condensadores a través de terminales del interruptor para evitar el tren de pulsos de alta frecuencia (causado por el rebote) y hacerlo como una señal de un solo paso para el controlador.
Eliminación de rebote del software:
Escribir un programa de tal manera que cuando el pin perciba un borde ascendente, entre en la rutina de retardo para algunos (digamos 250 – 500 ms) y verifique nuevamente si el pin está en estado alto o bajo (para confirmar si el botón se presionó intencionalmente) o no).
Si esta comprobación finaliza, el procesador debe continuar.
Este retraso de 250 – 500 ms da tiempo para ignorar todos los pseudo flancos ascendentes. Por lo tanto, evita el problema causado por el rebote … 🙂