Autor Tema: PROBLEMA CON TIMER  (Leído 1514 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BINS

  • PIC10
  • *
  • Mensajes: 5
PROBLEMA CON TIMER
« en: 22 de Febrero de 2016, 15:51:26 »
Hola soy nuevo en el foro, y estoy renegando con los PIC jaja.. queria compartir un pequeño problema q tengo en mi codigo respecto de los timer.. en especial el timer1 y timer3 del pic18f46k20..tengo entendido q se configuran igual y que la formula para la carga y el tiempo de demora del timer es la misma en estos dos timer.. pero el problema es q no me responden al mismo tiempo, a pesar de configurarlos igual:
//timer3-------------
setup_timer_3(T3_INTERNAL|T3_DIV_BY_8);                //configuro uso de timer3
         set_timer3(3036);                                      // Cargo el timer para que demore 500 mseg.
         enable_interrupts(INT_TIMER3);                         //Habilito interrucion de timer 3
// timer1----
 setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);                       // Configuro uso de timer 1 con prescaler=8
         set_timer1(3036);                                             // Cargo el timer para que demore 500 mseg.
         enable_interrupts(INT_TIMER1);                                //Habilito interrucion de timer 1.
necesito usar los dos timer ya q estos me controlan el tiempo de apertura de una puerta y son independientes uno de otro (son dos puertas distintas)
Obvio q para alcanzar el tiempo uso otra variable q me sume la cantidad de veces q ingresa a la interrupcion y asi consigo el tiempo deseado, pero a pesar de poner tmb el mismo parametro a estas variables q uso como contadores de interrupciones, no reaccionan al mismo tiempo..
Alguna idea de que podra ser?
Si tengo q mencionar q en otra parte del codigo trabajo con sensores one wire y al entrar al estado en el q efectuo la comunicacion con los sensores, es decir leeo su temperatura, deshabilito la interrupcion global:
//---------
disable_interrupts(GLOBAL);
 y al finalizar la comunicacion, antes de salir del estado, vuelvo a habilitar esta interrupcion
//----------
enable_interrupts(GLOBAL);

pense q el problema podria ser ese pero sin esa instruccion, efectúo mala lectura ya q paralelamente tengo un timer2 contando todo el tiempo. Ademas que si fuese ese el problema timer3 tmp funcionaria  al tiempo deseado y este si funciona es solo q timer1 no reacciona al mismo tiempo...
Esto esta siendo implementado en placas de prueba asiq tmp es falla de proteus o algun otro simulador...
Si alguno tiene una idea de posible falla, agredeceria que me la compartiera.
Saludos


 

anything