Ayuda con pulsos reed switch

#1
Hola amigos, necesito un aventoncito porque ya me hice bolas aqui
, 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.
 
#2
20 cambios por segundo se me hace demasiado rapido para que lo detecte un reedswitch... te recomendaria mejor usar un sensor de efecto hall
 
#3
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
 
Arriba