Tengo un problema con un programita en C, y necesito ayuda experta
Tengo un encoder del tipo potenciometro de volumen digital, ya sabeis, dos trenes de pulsos desfasados.
Conectado a RB0 y RB1
Se debe generar una interrupcion cuando haya un cambio de estado en RB0 es decir pase de 1 a 0 o de 0 a 1
para ello uso la interrupcion EXT
El programa seria algo asi
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD,NOWRT
#use delay(clock=1000000)
#INT_EXT
void giro (void){
disable_interrupts(global); // desabilito para que no salte de nuevo
// hace lo que debe aqui que no es mas que encender y apagar leds
enable_interrupts(INT_EXT);
enable_interrupts(global);// vuelvo a habilitarla
}
void main()
{
enable_interrupts(INT_EXT);
enable_interrupts(global);
while(TRUE)
{
// aqui hace otras funciones como es logico
}
}
El problema es que cuando paro el encoder y se queda la salida que esta conectada en RB0 a 1 se queda la interrupcion siempre ejecutandose sin parar
En cambio si esa salida del encoder queda a cero no se ejecuta mas que una vez, al cambio de estado
¿En que me equivoco?