Autor Tema: Duda con el Timer0  (Leído 3456 veces)

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

Desconectado danith72

  • PIC10
  • *
  • Mensajes: 13
Duda con el Timer0
« en: 03 de Febrero de 2011, 14:02:52 »
Buenas a todo el mundo! :o
Tengo la siguiente duda con la configuracion del timer0 en el siguiente código de programa: (Mi XTAL es de 20MHZ, PIC16F876A)

   setup_wdt(WDT_18MS);
   set_timer0(60);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);                                      // Init the TIMER0;
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);

Como podéis ver se carga el timer0 con valor 60, y luego aparece: "setup_timer0 (RTCC_INTERNAL|RTCC_DIV_8)", ¿esto quiere decir que la interrupción saltará  a los 313,6us, no?
¿RTCC_DIV_8 significa prescalar=8?¿RTCC_INTERNAL se refiere a que utilizo el timer0 como temporizador?
He realizado las siguientes cuentas:

1/20Mhz= 0.05us

0.05us*4=0.2us

Así pues:

256-60=196
192*0.2=39.2us
Dado que Preescalar =8, esto implica:39.2us*8=313.6us

¿Una vez que se desborada el timer y salta la interrupción, el timer cuenta desde 0?¿Porque habilita la interrupcion del timer0 y luego las globales? Leo mucho pero son dudas que me quedan sueltas. Graciiaaaaaaaaaaaaaaaassssssssss :o :o

PD. Estoy iniciandome en los microcontroladores

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda con el Timer0
« Respuesta #1 en: 03 de Febrero de 2011, 14:17:31 »
Hola! Las respuestas seria, si, si, si.... je! Muchas de las dudas las podes solventar leyendo la ayuda del compilador (F12), allí se explica cada parámetro de las funciones. Luego para entender el funcionamiento del microcontrolador tienes el datasheet del mismo  ;-)

Por aquí tienes una idea de como funcionan las interrupciones, y el porqué de habilitar independientemente las interrupciones globales y la del timer.

Y aquí como funciona el timer, el micro es otro pero en los 16F sigue siendo lo mismo para todos  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado danith72

  • PIC10
  • *
  • Mensajes: 13
Re: Duda con el Timer0
« Respuesta #2 en: 04 de Febrero de 2011, 06:22:55 »
Muchas gracias Suky!
Leere lo que me dices y si tengo alguna duda lo consulto!1

Graciass!  :)

Desconectado danith72

  • PIC10
  • *
  • Mensajes: 13
Re: Duda con el Timer0
« Respuesta #3 en: 07 de Febrero de 2011, 14:56:40 »
¿En qué momento empieza a contar el Timer0? ¿cuando cargo el valor?

set_timer0(60);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);    //aqui empieza a contar el timer0??

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Duda con el Timer0
« Respuesta #4 en: 07 de Febrero de 2011, 15:08:37 »
Si mi deducion no me falla.. pues si, comienza a contar ni bien cargas el valor. Aun que preferentemente yo (y lo hago asi) configuraria primero el timer (setup_...) y despues cargo el valor y despues habilito la interrupcion. Pero si quierees q te avisa cuando desborde el mismo deberas habilitar su interrupcion definida y la global.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda con el Timer0
« Respuesta #5 en: 07 de Febrero de 2011, 20:43:13 »
En realidad el timer0 de los PIC16 no detienen su cuenta nunca, solo que al cambiar alguna configuración tiene un retraso de 2 instrucciones y continua la cuenta. Podes hacer el debug en MPLAB utilizando CCS en él.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado danith72

  • PIC10
  • *
  • Mensajes: 13
Re: Duda con el Timer0
« Respuesta #6 en: 09 de Febrero de 2011, 05:29:50 »
Muchas gracias!! Probaré co nel MPLAB