Ayuda con pulsos reed switch

Hola amigos, necesito un aventoncito porque ya me hice bolas aqui
icon_sad.gif
, lo que quiero es contar los estados bajos que arroja un reed switch, pero lo hace extremadamente rapido es decir, aprox 20 bajas por segundo, y quiero saber cuantas bajas son en un miinuto... por lo que me lleva a la idea de que cada baja que se detecte por RB0 por flanco descendente haga una interrupcion y la almacene en una variable global "X" y asi sucesivamente durante el minuto, y cuando llegue al minuto hacer otra interrupcion para leer la variable "x" y mostrarla en Hyperterminal los pulsos (estados bajos ) que dio el reed switch.. pero el hyper es otra historia.

Aqui dejo algo de codigo :S


long int x=0;
#bit RB0=0x6.0
#int_EXT
#int_TIMER0
void EXT_isr(void){
x++;
set_timer0(60)
{
if(set_timer0>61)
{
get_ext(x);
}
}
void main(){
RB0=0;
set_tris_b=(0xFF);

set_timer0(60)

ext_int_edge(H_TO_L);
enable_interrupts(GLOBAL);
globalenable_interrupts(INT_EXT);
while(true);
}
}

Al parecer esta mal la estructura del codigo, pero no he encontrado ejemplos de almacenar el resultado de pulsos :S alguien tiene otro metodo, porfavor una ayudita.
 
20 cambios por segundo se me hace demasiado rapido para que lo detecte un reedswitch... te recomendaria mejor usar un sensor de efecto hall
 
Como bien dice Chico3001, parece una frecuencia alta para un reedswitch, aparte de que debe generar rebotes.

Utilizando otro sensor... joya

Programa la entrada de conteo del PIC y utiliza una interrupcion para el tiempo de 1 minuto.

Saludos y suerte
 
Atrás
Arriba