Timers Avr Atmega8
Timers Avr Atmega8
Timers Avr Atmega8
Los Timers son mdulos que trabajan en paralelo con el procesador, permitiendo que
las operaciones de temporizacin y conteo se puedan llevar a cabo de manera
eficiente, mientras el procesador se ocupa deotras tareas. Normalmente los megaAVR
cuentan con tres Timers, llamados:
TIMER0, TIMER1 Y TIMER2
EL TIMER0
Los registros de E/S del Timer0 son:
TCNT0.
TCCR0A,
TCCR0B,
OCR0A,
OCR0B,
TIMSK0
yTIFR0
Aparte de ellos, tenemos al registroGTCCR, el cual es de uso comn para todos los
Timer
MODOS DE OPERACIN DEL TIMER0 Y TIMER2
En general existen 3 modos en que pueden trabajar los Timers:
Modo Normal
Modo CTC
Modo PWM
Cada modo tendr sus variantes dependiendo del Timer.
DIAGRAMA DE BLOQUES DEL TIMER0
alguna forma el Timer contar los pulsos detectados en dicho pin. Sin embargo, el
hecho de que el reloj provenga de una fuente externa no le quita sus otras
funcionalidades, como por ejemplo, poder generar ondas PWM, interrupciones, etc.,
claro que sera conveniente que para tal caso la seal fuera peridica
Contador del Timer2 con su fuente de reloj.
otras tareas. A lo que quiero llegar es que al menos en cursomicros los bits COM solo
se usan en modo PWM. En los modos Normal y CTC nos olvidamos de ellos.
EL TIMER0 Y EL TIMER2 EN MODO NORMAL
Este modo queda seleccionado cuando todos los bits WGM valen 0, es decir, es el
modo por defecto del Timer0. De hecho, lo es en todos losTimers
El Timer0 siempre inicia detenido, as que para que se cumpla todo lo descrito primero
habr echarlo a andar configurando los bits de reloj CS, segn lo estudiado en El Reloj
del Timer0 y del Timer2
Recordemos que los comparadores del Timer0 pueden sacar por los pinesOC0A y
OC0B unas seales que se pueden configurar con los bits COM.En los modos Normal
o CTC esta seal se forma poniendo a cero, a uno, o conmutando el valor de
OC0A/OC0B.Todas las opciones posibles se muestran en la siguiente tabla. Para
temas detemporizacin, que es normalmente el propsito del modo Normal o
CTC,debemosescoger la primera opcin, que es la predeterminada y que nos dejar
los pines OC0A/OC0B libres para seguir usndolos como puertos de E/S generales
Por ejemplo,
si tenemos un XTAL de 8 MHz y no usamos prescaler, entonces el reloj del Timer0
ser de 8 MHz y el registroTCNT0se incrementar cada 1/8MHz= 128ns, lo mismo que
un ciclo de instruccin bsica. Pero si usamos el factor de prescaler 8,TCNT0
avanzar cada 1us.Si usamos el factor de prescaler de 256,TCNT0avanzar cada
32us. Y si cambiamos de XTAL, los tiempos sern otros
Ahora entonces, suponiendo que seguimos con nuestro XTAL de 8MHz, el registro
TCNT0 avanzar desde 0 hasta 255 en 32us (sin prescaler). Pero si cargamos TCNT0
con 200, llegar al desbordamiento despus de 7us; y si usamos prescaler de 8, lo
har despus de 78 = 56us
Tiempo que pasar el Timer0 contando desde un valor inicial TCNT0 hasta 255 y se
produzca el desbordamiento est dado por la frmula