TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: aripod en 13 de Febrero de 2009, 12:15:55

Título: No interrumpe el timer1
Publicado por: aripod en 13 de Febrero de 2009, 12:15:55
Necesito ir haciendo una tarea cada 5 segundos y el timer0 no lo puedo usar ya que lo estoy usando para otra cosa. Lo que hice fue:

Código: [Seleccionar]
setup_timer_1(T1_DIV_BY_1);  //Tengo un clock de 4Mhz, entonces el contador incrementa cada 1us. Necesito que se
set_timer1(15536);       //interrumpa cada 50ms, entonces tengo que poner con set_timer1(x) : X=65536-50000=15536

y en la interrupcion hago esto:

[code]
#int_TIMER1         
void Timer1_isr(void)
{
contador_segundos++;
if(contador_segundos==100)
   {
   modulos_activados=1;
   contador_segundos=0;
   }
set_timer1(15536);
}

En el main voy chequeando el valor de modulos_activados y ahi tengo los 5 segs. En teoria anda,,,ya lo hacia con el timer0 bien, pero tuve que cambiar al timer1 y no esta andando. Que es lo que hago mal?
Muchas Gracias!![/code]
Título: Re: No interrumpe el timer1
Publicado por: gera en 13 de Febrero de 2009, 12:42:05
setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_4 );
INT_TIMER1

EDIT:
wtf! se envio mientras escribia.. q algun moderador lo borre porfa jeje
Título: Re: No interrumpe el timer1
Publicado por: gera en 13 de Febrero de 2009, 12:44:12
Quizas no configuraste bien el timer1, proba con esto:

setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1 );
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
Título: Re: No interrumpe el timer1
Publicado por: aripod en 17 de Febrero de 2009, 09:01:30
Ese era el problema, me hacia falta T1_INTERNAL. Ahora anda perfecto. Muchisimas gracias por la ayuda!!!