Autor Tema: Efecto Rebote en RB0 del PIC16F84A  (Leído 5515 veces)

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

Desconectado OTSELECTRONICSEIRL

  • PIC10
  • *
  • Mensajes: 18
Efecto Rebote en RB0 del PIC16F84A
« en: 11 de Julio de 2009, 14:28:21 »
Buenos dias. Deseo detectar flancos de subida por RB0 (in) de tal manera que generara una interrupcion cada ves que detecte un flnaco de subida. Los pulsos de entrada seran generados por un interruptor (no pulsador), sin embargo el primer gran problema que encuentro al montar en el protoboard es el EFECTO REBOTE. ¿Se puede eliminar por software (assembler) "estos rebotes" ?, me parece un poco dificil (por el momento) dado que el flag de interrupcion por flanco ascendente se activa de inmediato y el programa procede a efectura la ISR respectiva. Quizas la unica manera de elimir el rebote sea por hardware para este caso. Por favor comentenme sus experiencias en casos similares.
Muchas gracias de antemano por sus comentarios.
Si el alumno no supera al maestro, ni es bueno el alumno; ni es bueno el maestro.
- proverbio chino

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Efecto Rebote en RB0 del PIC16F84A
« Respuesta #1 en: 11 de Julio de 2009, 16:25:32 »
Por hardware colocale un capacitor en paralelo al interruptor. En el software, al detectar la interrupción, esperar unos 20 a 30 ms, testar nuevamente el pin B0 para saber si es una accion del interruptor o una falsa alarma. Aquí hay algunos ejemplos en la sección control de display 7 segmentos.
No contesto mensajes privados, las consultas en el foro

Desconectado OTSELECTRONICSEIRL

  • PIC10
  • *
  • Mensajes: 18
Re: Efecto Rebote en RB0 del PIC16F84A
« Respuesta #2 en: 11 de Julio de 2009, 16:49:24 »
Suky. Muchas gracias por tu aporte, ingeniosa forma de atacar el problema por software. Vuelvo agradecer infinitamente la colaboracion.
Saludos
Si el alumno no supera al maestro, ni es bueno el alumno; ni es bueno el maestro.
- proverbio chino

Desconectado controlpic

  • PIC10
  • *
  • Mensajes: 24
    • servicio de grabacion de microcontroladores
Re: Efecto Rebote en RB0 del PIC16F84A
« Respuesta #3 en: 15 de Julio de 2009, 18:36:01 »
Efectivamente la tecnica que comenta Suky es lo que se suele hacer habitualmente, aunque yo en algunos diseños de sistemas de alarmas en donde no me puedo permitir falsas alarmas he utilizado otra tecnica.

Tecnica normal: Comprobar la entrada despues de 20 msg. Solo se comprueba 2 veces, y cabe la posibilidad de que exista un pequeñisimo margen de error.

Tecnica Super-segura: Cuando detecto que se ha activado la entrada vuelvo a comprobar la entrada dentro de un bucle, el cual dura unos 10 msg, y donde tiene que verificar el nivel de la entrada miles de veces consecutivas para darlo por aceptable.

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Efecto Rebote en RB0 del PIC16F84A
« Respuesta #4 en: 16 de Julio de 2009, 07:52:15 »
Tecnica Super-segura: Cuando detecto que se ha activado la entrada vuelvo a comprobar la entrada dentro de un bucle, el cual dura unos 10 msg, y donde tiene que verificar el nivel de la entrada miles de veces consecutivas para darlo por aceptable.

Que es super segura no lo dudo, pero uno no siempre tiene 10 ms de sobra para que el uC los dedique solo a comprobar una entrada.
Yo soy partidario de siempre filtrar primero por HW y luego terminar de pulir las cosas por SW. Parece una tontera, pero un simple filtro pasa-bajos pasivo con una resistencia y un capacitor pueden evitarte colocar código antirebote en el programa, y con ello ahorrar algunos ms valiosos. En particular en mis aplicaciones, utilizo las dos cosas, aunque nunca utilizo delays por lo que los retardos antirebote los ejecuto con timers o alguna otra técnica que no deje al procesador ni un instante sin hacer nada.

Saludos.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."