lunes, 30 de mayo de 2011

TIMER 1

En éste post mostraré un pequeño ejemplo de como configurar el timer 1 (16 bits) para tener una gran variedad de bases de tiempo, las cuales pueden ser usadas para generar retardos, pulsos a una determinada frecuencia, etc.

Programa : TIMER

Sin mas preámbulo pasaré a mostrar las macros usadas.


A ésta macro solamente hay que indicarle el tiempo con el cual se quiere configurar el timer (en ms).
El pre-escaler del timer se puede cambiar modificando CSN.

macros2

MOVIF pone un inmediato en la RAM, ya sea en el espacio de datos o en el espacio de registro especiales.

El programa principal es el siguiente:

main1

Esta parte configura dos pines como salidas (PB0 y PB1), también configura el TIMER 1 a 100ms, configura el pre-escaler del timer y por ultimo habilita la interrupción por desborde u overflow.

main2

Cada vez que el timer se desborda se conmutará los pines PB0 y PB1, y también hay que volver a configurar el timer.

En el siguiente video se muestra el funcionamiento del programa.


sábado, 21 de mayo de 2011

Manejo del WDT

A diferencia de otros uC’s en los ATmega el WDT se puede habilitar y deshabilitar por programa, pudiendo cambiar el tiempo de reset a voluntad.

En éste post mostraré como habilitar y deshabilitar el Watch Dog Timer en cualquier ATmega.

En nuestro archivo de macros tenemos que agregar el siguiente codigo. (Link al programa)

wdt1

Estas definiciones no son aplicables a todos los ATmega, en un ATmega8 solamente de puede llegar a 2 segundos mientras que en un ATmega324P se puede llegar hasta 8 segundos.

wdt2

La macro anterior permite habilitar el wdt.

wdt3

La macro anterior permite deshabilitar el wdt.

Ahora mostrare en sencillo ejemplo de su uso.

wdt4