TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: atun22 en 03 de Abril de 2006, 09:14:00
-
Hola tengo un problemilla con el pic al programarlo con una interrupción ccp1 modo capture ya que no me entra nunca en la interrupción y no se entonces como funciona:
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
Gracias
-
Talvez si nos pones el código al que va cuando llega la interrupción...
#int_CCP1
-
la idea es para hacer un encoder, el codigo de la interrupcion es bastante sencillo (la prueba sin acabar, claro):
#INT_CCP1
ccp1_isr(){
if (i<=8){
i++;
derecha(); // gira a la derecha
} else { i=0;}
}
el problema está en que no me entra en la interrupción y no se si me falta añadir algo más o especificar algún dato más.
Grácias.
-
Talvez no has configurado bien la terminal CCP1. Hay PICs en los que la terminal se encuentra en dos patitas y tú eliges una mediante un fusible a la hora de la programación.
Otra posibilidad es que no hayas declarado CCP1 (la patita correspondiente) como entrada.
O talvez mientras está atendiendo la interrupción llega otra interrupción inmediatamente y no tiene tiempo de ejecutarla correctamente.
Puedes revisar el ejemplo EX_CCPMP.C.
-
mi duda, pues, queda en que en el ejemplo que me propones que mire utiliza un timer y yo en ningún momento utilizo un timer, quizá ahí esté mi problema.
-
Ah, pues sería bueno que lo configuraras, ese timer se usa para capturar el tiempo del ccp1 (subida) y hacer una diferencia con el tiempo del ccp2 (bajada) y medir el tiempo en ALTO del pulso.
¿En tu programa mides tiempos o solo usas el ccp1 como interrupción? Porque si no mides tiempo talvez sea mejor usar la RB0 como interrupción externa.