arduinonation

Tip: Configurar Timer

In Notas on septiembre 20, 2010 at 1:28 am

Algunas ocasiones es necesario modificar los timer internos del microcontrolador, sea para tener diferentes escalas de tiempo ó iniciarlos / desactivarlos o darles una configuración diferente dependiendo de la aplicación.  Para hacer ello en el IDE de Arduino, supondremos que deseamos modificar el Timer2 del ATmega328, para ello deshabilitamos la interrupción mientras configuramos el timer:

TIMSK2 &= ~(1<<TOIE2);

Le decimos al Timer2 que se usará el modo normal sólo para contar:

TCCR2A &= ~((1<<WGM21) | (1<<WGM20));
TCCR2B &= ~(1<<WGM22);

Es posible usar reloj externo ó interno del microcontrolador, para este caso usaremos el interno:

ASSR &= ~(1<

El timer cuenta con diversas opciones para saber cuando ha llegado a la cuenta determinada. Podemos usar que compare y habilite una interrupción ó que la deshabiite, también cuando suceda un sobre-flujo ó el timer se desborde al legar la cuenta, para ello usaremos ésta última opción:

TIMSK2 &= ~(1<<OCIE2A);

Un valor importante, es configurar los pre-escaladores, con ello podremos tomar los ciclos del reloj maestro para reducir las cuentas y así dividirlo por:  1:2,4,8,16,32,64,128, ó 256.  Para ello podemos hacer:

Ponemos bits CS22 – CS20 para 1:128 de pre-escalador:

TCCR2B |= (1<<CS22)  | (1<<CS20);

Limpiamos bit CS21:

TCCR2B &= ~(1<<CS21);

Es necesario calcular el valor del ISR, que será usado. Para ello:

x = DivM – (fcpu* Td) / Pre

Dónde:

fcpu – Frecuancia del reloj maestro del microcontrolador en hz
Td – Periodo deseado en segundos
Pre – valor del pre-escalador
DivM – Valor máximo del divisor del timer, para el ATmega328 es 256

Así cargamos este valor al registro interno y lo habilitamos para que inicie su cuenta:

TCNT2 = x;
TIMSK2 |= (1<<TOIE2);

De esta forma hemos configurado un timer, para mayor referencia, revisar el manual del ATmgea328.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: