Autor Tema: Ayuda para quitar rebotes de micropulsador  (Leído 5287 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rubio_20

  • PIC10
  • *
  • Mensajes: 2
Ayuda para quitar rebotes de micropulsador
« en: 19 de Febrero de 2008, 14:15:14 »
hola a todos pues lo que necesito para ver si me podeis exar una mano es lo siguiente me estoy aciendo un reloj despertador y al cambiar la hora como los botones tienen rebotes pues salta de lo k kiere en lo k kiere por lo tanto busco a ver si alguien me puede exar una mano con alguna instruccion o alguna funcion k aga k solo cuente una pulsacion.

muchas gracias todo y saludos.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Ayuda para quitar rebotes de micropulsador
« Respuesta #1 en: 19 de Febrero de 2008, 14:24:28 »
Hola!

Después de haber detectado en código la pulsación podrías, por ejemplo, hacer Delay_ms(50) para ignorar el tiempo de rebote de un pulsador. Hay muchas formas de hacerlo, pero esa es la más simple.

 if (bit_test(pin_b0) {
   Delay_ms(50);   //se pulsó. Antirebote!
   //bla bla
}
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado rubio_20

  • PIC10
  • *
  • Mensajes: 2
Re: Ayuda para quitar rebotes de micropulsador
« Respuesta #2 en: 19 de Febrero de 2008, 14:41:12 »
se me olvido decir k uso un 16f876 y nose si la instruccion delay funcionan en ese pic si es asi ya lo tengo solucionado.

muchas gracias por todo y saludos.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Ayuda para quitar rebotes de micropulsador
« Respuesta #3 en: 20 de Febrero de 2008, 06:35:14 »
Hola Rubio, aquí (http://picmania.garcia-cuervo.com/Proyectos_AUX_Botones.php) tienes un completo análisis de los rebotes y cómo evitarlos desarrollado por el forero RedPIC.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ayuda para quitar rebotes de micropulsador
« Respuesta #4 en: 20 de Febrero de 2008, 14:17:59 »
En el primer post de este subforo emcontrarás ejemplos varios entre los cuales algunos de ellos usan pulsadores y tratan ese problema.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: Ayuda para quitar rebotes de micropulsador
« Respuesta #5 en: 21 de Febrero de 2008, 10:56:41 »
Lo más recomendable es que elimines el efecto del rebote a través de software como te han propuesto anteriormente.

Siguiendo el ejemplo que colocó Bruno, el programa quedaría así:

 if (bit_test(pin_b0)==0) { /* Se pulsó, entonces espero tantos ms y vuelvo a preguntar para ver si el cambio se mantiene */
   Delay_ms(20); // Yo uso generalmente 20ms, pero puedes usar 50ms también.
   if (bit_test(pin_b0)==0){ // Vuelvo a preguntar
   // Si entra aquí significa que efectivamente se pulsó
   }// En caso contrario fué ruido
 }// Entonces vale 1 y no se ha pulsado.

Simplemente extendí y modifiqué un poco el programa de Bruno.

Saludos.

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: Ayuda para quitar rebotes de micropulsador
« Respuesta #6 en: 21 de Febrero de 2008, 23:15:42 »
se me olvido decir k uso un 16f876 y nose si la instruccion delay funcionan en ese pic si es asi ya lo tengo solucionado.
muchas gracias por todo y saludos.

la función delay es inherente o relativa a la "lógica" del compilador del lenguaje C q usas, no es una instrucción del pic. Así que funciona con todos los pic q soporta el compilador.
Te va a funcionar!

Saludos
« Última modificación: 22 de Febrero de 2008, 01:36:43 por Menta »
     


 

anything