TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: nanosegundo en 17 de Febrero de 2006, 12:58:00
-
Hola a todos,
Estoy intentando hacer un temporizador de 30 seg con el tmr1, de modo que este empieze a contar cuando ocurre una interrupción externa (rb0). En mi caso la interrupción xterna se realiza bien pero la interrupcion por el tmr1 solo se realiza una vez. Ya he probado cargar la cuenta del temporizador el la interrupción del tmr1 e inclusoconfigurarlo todo tambien dentro de esta interrupción, pero no consigo que me interrumpa más de una vez.
¿Alguien me puede dar alguna idea?
Munchas Graciassssss
-
Hola nanosegundo, lo que supongo que te esta pasando es que al salir de la rutina de interrupción estas usando la función return, si es así esta función deberías reemplazarla por retfie.
El comando retfie realiza el retorno de forma idéntica que return, pero con la salvedad que al retornar de una interrupción activa las mismas, por lo tanto retfie solo es utilizada para retornar de una interrupción, es todas las demás sub-rutinas debes usar return tal como lo venias haciendo.
Un saludo y suerte.
Atte. CARLOS
-
hola nanosegundo. El chaly te paso un buen tip, puede ser eso del retfie, o bien que no estes limpiando el flag de interrupcion del Timer1 antes de salir de la rutina de interrupcion. Recorda que este tipo de interrupcion debe ser limpiada por SOFTWARE, es decir, que TU debes poner a cero el bit correspondiente (TM1IF).
Exitos.
-
Muchas Gracias
Era el TMR1IF que no lo limpiaba por lo que no podia interrumpir mas de una vez.
-
Saludos compañeros, podrian enseñarme por favor a manejar el TMR1 y TMR2 del pic 16f877a? muchas gracias, chao.
-
Saludos compañeros, podrian enseñarme por favor a manejar el TMR1 y TMR2 del pic 16f877a? muchas gracias, chao.
Amigo, has leído el datasheet?
Si es así, dinos puntualmente que es lo que no has entendido y te damos una mano.
Saludos