Con un timer podemos realizar aplicaciones como el control de velocidad de un motor, el manejo de un teclado, un barrido de 7 segmentos, obtención de muestras mediante el ADC, etc.
El funcionamiento general de un timer consiste en guardar en un registro especial de almacenamiento un valor máximo al que llegará un contador, cuando el valor en el contador sea igual al registro almacenado un comparador puede realizar las siguientes acciones:
- Se activa el flag de salida del timer iniciando así una interrupción.
- Programamos un evento en el cual en el pin de salida se conmuta el nivel anterior, es decir, se ponga a nivel bajo o se ponga a nivel alto y así generar una señal PWM a determinada frecuencia.
Esquema del Timer 0
Entre los bloques podemos destacar son:
- El TCCRn que es el registro que configura el timer en su modo de funcionamiento.
- Tn es por donde se inyecta la señal de reloj para el modo de contador de eventos externos.
- OCn es el pin por el cual se genera la señal digital.
Características del Timer 0:
- Timer de 8 bits.
- Contador con una unidad de comparación.
- Modo de borrado de contador en la igualdad de la comparación CTC (Auto-recarga).
- Modulador de ancho de pulso (PWM) de fase correcta y libre de glitches (Pulsos cortos).
- Generador de frecuencia.
- Pre-escalador de 10 bits (permite dividir la frecuencia).
- Dos fuentes de interrupción: desbordamiento e igualdad en la comparación (TOV0 y OCF0).
Los registros que intervienen para la configuración del timer 0 son:
TCCR0: Este registro es el encargado de la configuración del timer.
Estos bits configuran los cuatro diferentes modos de trabajo del timer.
Para cada modo de trabajo estos bits configuran el modo de generación de la señal digital.
Estos tres bits configuran en que valor de pre-escalamiento será dividido la frecuencia del oscilador.
TIMSK: En este registro habilitamos el modo en que se generará la interrupción.
OCIE0 es la habilitación de la interrupción por igualdad en la comparación de salida y TOIE0 es la habilitación de la interrupción por desbordamiento.
TIFR: En este registro se encuentran los flags de las interrupciones.
Para el cálculo de los valores de OCR0 adjunto un documento en excel en donde solo modificando los valores en “ROJO” es decir la frecuencia de salida, la frecuencia de las interrupciones y el valor del Xtal obtenemos el valor adecuado de OCR0.
Las fórmulas para dichos cálculos se encuentran definidas en el Datasheet del uC.
Hay que tener en cuenta que solo se puede tener control de la frecuencia de salida en el modo CTC, en los modos PWM las frecuencias ya están definidas.
Ejemplo:
Ejemplo:
Ejemplo:
Ejemplo:
Descargas: