TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: morelius21 en 24 de Mayo de 2014, 03:09:41
-
Hola,
Primero agradecer cualquier ayuda aquí aportada,
Mi pregunta es si cada vez que pulso un switch que activa una interrupción por cambio de flanco tengo que realizar una rutina para los rebotes. Se que si conecto un switch en un puerto y detecto si esta pulsado tengo que hacer una rutina para evitar los rebotes pero con una interrupción hace falta? ya que solo al detectar un cambio ya activa la interrupción y da igual si hay rebotes. estoy en lo cierto?
saludos
-
yo te diria que si, pero todo depende.... la interrupcion por RB detecta los dos cambios de flanco, el de bajada y el de subida... si por problemas en los switches te hace algun extraño, deberias de ponerlo... lo mejor para tu caso, seria deshabilitar esa interrupcion despues de haber detectado el cambio de flanco y con un timer contar un tiempo prudencial y volver a habilitarla la interrupcion justo al acabar el codigo alojado dentro de la interrupcion del timer
-
hace falta rutina antirebotes en switch activado por interrupción?
¡siempre! porque puede darse el caso que ocurra un flanco producto de una oscilación en las partes mecanicas del switche.
en el peor de los casos, puede ocurrir una oscilación que esquive las rutinas antirebotes. Imagina que en tu rutina preguntas 2 veces por el mismo flanco, y si ocurre un ruido que genere 3 flancos? o por ejemplo preguntas por el flanco cada 5 ms en 3 ocasiones y resulta que en el mismo instante que escaneas el pin, el ruido genera un flanco en lógica contraria al estado del switche haciendo que el pic crea que no has cambiado el switche.
-
Hey there
I want to share what i do, I ALWAYS use a hardware debounce, specially when I use Interrupts.
If u want to use Interrupts is beacuse u need a quick responce, right???, so don't spend time checking if there is a real LOW, that's why I use as hardware (and doesn't steal too much room)...
Hola
Quiero compartir lo que hago, yo siempre uso un antirrebote de hardware, especialmente cuando uso interrupciones.
U Si desea utilizar alarmas es por culpa u necesidad de un responce rápido, ¿verdad???, Así que no pasar tiempo de comprobar si existe un bajo real, es por eso que uso como hardware (y no roba mucho espacio). ..
(https://lh3.googleusercontent.com/-OQLKpeYHwEM/U4QG9Z3O9_I/AAAAAAAAATw/KPzgC3yS1sY/w702-h395-no/DSC025601.JPG)
It is just a low pass filter...
Es sólo un filtro de paso bajo ...
(https://lh3.googleusercontent.com/-QTXVmJ4YDjc/U4QIDrqE1kI/AAAAAAAAAUY/h0bxlo36cag/w702-h411-no/DSC025602.JPG)
...and u can see it in the scope, clean and shiny
... yu puede verlo en el ámbito de aplicación, limpio y brillante
(https://lh6.googleusercontent.com/-NtHlSAp_dAo/U4QLgZDXhwI/AAAAAAAAAU8/ZBNn6R3LOa0/w702-h395-no/DSC02615.JPG)
hope this helps
-
These are some examples how the LOW-HIGH action goes crazy when u don't use a hardware debounce...
Estos son algunos ejemplos de cómo la acción BAJO-ALTO se vuelve loco cuando u no utilizan un antirrebote de hardware ...
(https://lh5.googleusercontent.com/-lm1un8pQTHk/U4QTvHODcNI/AAAAAAAAAVk/FCmGGpB9x6Q/w702-h395-no/DSC02616.JPG)
Probability u already know, but this kind of solution is pretty cheap!!! just a cap and a resistor.
Probabilidad u ya lo sé, pero este tipo de solución es bastante barato! una gorra y una resistencia.
(https://lh5.googleusercontent.com/-Z8ZlncIkJCY/U4QTwENXxjI/AAAAAAAAAVs/lvAoIK_swyE/w702-h395-no/DSC02617.JPG)
-
Cuando los retardos de tiempo son críticos, uso antirebotes por hardware, de lo contrario no los suelo usar
-
Si no lo pones con un filtro como ha puesto rotting79 entonces se te activara la interrupcion varias veces (efecto rebote) esto es porque se cambia el flanco varias veces hasta que se estabiliza.
-
Si no quieres o no puedes modificar el hardware, y dispones de un timer, también puedes usar el antirrebotes por software.
Recientemente publiqué una librería que lo facilita.
http://www.micropic.es/mpblog/2014/05/gestion-de-pulsadores/
-
Primero de todo. Muchisimas gracias!!! ((:-))
Veo que tiene toda su lógica lo que me comentan y ademas con ejemplos y todo(thanks rotting79)!
Como el tiempo no es crucial usare la técnica que comenta ppyote de deshabilitar la interrupción y volverla a habilitat una vez acabe el código.
Saludos y gracias
-
Noturno
that's a good one, really good
sadly I need to translate your page everything is f*** up!!, so i'll take some time to dig into the code just after clean up the translation
thanxxx
eso es bueno, muy bueno
lamentablemente tengo que traducir su página todo se f *** up!!, así que me tomaré un tiempo para profundizar en el código justo después de la limpieza de la traducción
thanxxx
-
Es sencillo, pero muy útil.
Me alegro que te guste.
-
hey there
just to let u know, that I've use ur library and successfully (with some changes) is great, even on Touch Sensors
Hola
sólo para que tu sabes, que yo he utilizo ur biblioteca y con éxito (con algunos cambios) es grande, incluso en Sensores táctiles
(http://plus.google.com/u/0/photos/118222667101320431167/albums/6017942654624260993/6028653976133783650?pid=6028653976133783650&oid=118222667101320431167)
https://plus.google.com/u/0/photos/118222667101320431167/albums/6017942654624260993/6028653976133783650?pid=6028653976133783650&oid=118222667101320431167
at the beginning u'll see with regular buttons, then with the CTMU' Microchips Touch Sensors
*sorry about the darkness, that's because the seven segments display to display correctly.
al inicio U lo ven con botones regulares, luego con la CTMU 'Microchips Sensores táctiles
* lo de la oscuridad, eso es porque los siete segmentos de la pantalla se muestre correctamente.
thanxxxx the Noturno
-
Me alegro que te haya servido, y muchas gracias por tu feedback