TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 en 14 de Septiembre de 2009, 14:57:42
-
hola amigos, he tratado de encontrar una respuesta a , que sucede cuando deshalitas el timero0 cuando esta cerca de desbordarse.
por ejemplo, el timer0 se desborda cada 10ms, pero ocurre que en el programa, a veces se deshabilita por ejemplo cuando el timer0 esta a 2ms de desbordarse, esto por motivos de transmision de datos.
o sea se deshabilita para poder transmitir datos, cosa que con el modulo usart creo que no hay problema, pero con un puerto serie por software si causa problemas.
una ves finalizado la transferencia de datos, se vuelve a habilitar el timer0, en este caso el timer0 sigue tal como estaba cuando se deshabilito o empieza de nuevo el conteo?
-
he encontrado una caracteristica interesante del timer1
A diferencia del Timer 0, el Timer 1 tiene la posibilidad de activar o detener la cuenta mediante el bit TMR1ON del registro T1CON.
eso tal ves pueda ayudar, seguire buscando una solucion
-
puedes desabilitarlo con disable_interrupts(int_rtcc) y con Valor=get_rtcc; puedes almacenar el valor que en el momento de desabilitarse tenia el timer0.
Despues solo te queda habilitar te nuevo el contador con enable_interrupts(int_rtcc); y volverle a asignar el valor que tenia antes de deshabilitarlo...
Puedes hacerlo con set_rtcc(valor);
-
Vas a deshabiltar la interrupción, solamente eso, el timer seguirá contando y si tu rutina demora mas de 2ms (Según el ejemplo que expusiste) se perderá esa interrupción y detectarás la próxima.
-
as a deshabiltar la interrupción, solamente eso, el timer seguirá contando y si tu rutina demora mas de 2ms (Según el ejemplo que expusiste) se perderá esa interrupción y detectarás la próxima.
si, lo deshabilito cuando quiero que ejecute unas instrucciones que no tienen un funcionamiento normal cuando ocurre interrupciones, como las comunicaciones por ejemplo
me he decidido por el timer1, que segun he visto se puede detener su marcha y volve a reanudarlo.
el encargado de esto es el bit TMR1ON del registro T1CON
EN CCS COMO haria, definiendo a T1CON Con un alias y asi acceder al bit TMR1ON, voy a probarlo,
si existen funciones predefinidas por favor publiquenlo