You are on page 1of 5

TIMERS

Felipe Garca Granados, 20131007129


Jos Cruz Reyes, 20132007074
Mauricio Rojas, 20132007049
Universidad Distrital Francisco Jos de Caldas
Bogot DC, Colombia
fgarciag@correo.udistrital.edu.co
jlcruzr@corre.udistrital.edu.co
mrojasg@corre.udistrital.edu.co

I.

INTRODUCCIN
IV.

En esta prctica proponemos en uso la funcin


timer, la cual nos permite establecer un
temporizador para activar una interrupcin en un
determinado momento en el futuro, cuando llegue
ese momento, puede utilizar la interrupcin como
una alerta, ejecutar cdigo diferente, o cambiar un
pin de salida.
Lo interesante de los temporizadores es que al igual
que las interrupciones externas, se ejecutan de
forma asncrona, o de forma independiente de su
programa principal. En lugar de ejecutar un bucle o
varias veces llamando millis (), puede dejar que un
temporizador haga el trabajo para usted, mientras
que su cdigo hace otras cosas.

II.

III.

OBJETIVOS
Comprender en funcionamiento y
propsito de los temporizadores.
MATERIALES
Arduino uno
Protoboard
LDR(fotoresistencia)
Cable.

MARCO TERICO

TIMER
Un temporizador no es ms que un contador que
se
incrementa
cada
intervalo
de
tiempo. Los temporizadores funcionan como un
reloj que se puede utilizar para medir el tiempo,
medir la duracin de ciertos eventos, entre otras
aplicaciones.
Arduino est equipado con un microcontralodor
ATmega168 o ATmega328 (que slo se diferencian
en la cantidad de memoria interna). Estos
microcontroladores tienen en esencia tres tipos de
contadores y : Timer0, Timer1 y Timer2 , Timer0 y
Timer2 son contadores de 8 bits, es decir, tener 0255, y Timer1 es un contador de 16 bits, que
cuenta desde 0 a 65535.
El Arduino Mega est equipado con ATmega1280
o Atmega2560 (que slo difieren en la cantidad de
memoria). Tienen 6 temporizadores: Timer0,
Timer1, Temporizador 2 Temporizador 3, timer4,
temporizador5 Los temporizadores 0, 1 y 2 son
idnticos
a
los
ATmega168
/
328,
y temporizadores 3, 4 y 5 son ambos de 16 bits.
TIMER0
Timer0 es un temporizador de 8 bits, es decir, su
registro contador puede grabar un valor mximo de
255 (el mismo que un byte de 8 bits sin
signo). Timer0 es utilizado por las funciones
nativas
de
temporizacin
tales
como
Arduino delay()y millis(), por lo que los usuarios
de Arduino no debera meterse con l a menos que
se sienta cmodo con las consecuencias.

TIMER1

AttachInterrupt (funcin, perodo)

Timer1 es un temporizador de 16 bits, con un valor


de contador mximo de 65.535 (un entero de 16
bits). La biblioteca Arduino Servo utiliza este
temporizador, as que ten cuidado si lo usa en sus
proyectos.

Asigna una funcin a ser llamada cada interrupcin


generada por el temporizador. Si no se especifica
un perodo, se va a utilizar el perodo definido en el
arranque o setPeriod .

TIMER2
Timer2 es un temporizador de 8 bits que es muy
similar a Timer0. Se utiliza por el
Arduino tone()funcin.
TEMPORIZADOR 3, TIMER4,
TEMPORIZADOR5
El AVR ATmega1280 y Atmega2560 (que se
encuentra en las variantes de Arduino Mega) tienen
otros tres temporizadores adicionales. Estos son
todos los temporizadores de 16 bits, y funcionan de
manera similar a Timer1.

V.

CDIGO

Con el siguiente cdigo observamos el


funcionamiento del timer 0 AVR como contador.
Modificacin de registros atmel studio (v7)
Se ejecuta el programa atmel studio, en este caso se
utiliz la versin 7. La figura muestra como es el
entorno grfico, en que se realiz la prctica.

CONFIGURACIN DE LOS TEMPORIZADORES

Ajustar en "manual" los temporizadores es


bastante aburrido y laborioso ya que requiere la
manipulacin
de
diversos
registros
de
microcontrolador, pero afortunadamente hay
algunas libreras que le permiten hacer este proceso
de manera muy sencilla.
Las principales funciones de la biblioteca son:
Inicializar (perodo)
Este mtodo debe ser llamado antes que cualquier
otro mtodo, ya que es responsable de la
configuracin
inicial.
Puede
informar
opcionalmente el intervalo (en microsegundos) en
el que se debe generar la interrupcin. El tiempo
aceptable ms bajo es de 1 microsegundo, y el
tiempo mximo es de 8, 388,480 microsegundos, o
aproximadamente 8,3 segundos. Cuando ningn
valor no es informado, se le asignar el valor
predeterminado de 1.000.000 microsegundos (1)
segudo. Cuando se utiliza Timer1 la analogWrite
() en los pines 9 y 10 de la Arduino dejar de
funcionar.

Figura No 1. Entorno visual Atmel


Ya abierto el atmel creamos un proyecto nuevo.
Abrir un recuadro mostrando los tipos de
proyectos que se pueden realizar, en nuestro caso
escogimos GCC Executable Proyect.

SetPeriod (perodo)
Figura No 2. Recuadro de opciones
Modifica el perodo de interrupcin.

Ya dndole nombre al proyecto se elige el


dispositivo, en este caso se seleccion el Arduino
UNO, el cual tiene un Controlador Tmega328p.

Procedemos a la respectiva compilacin.

Figura No 5. Ventana de compilacin


Damos en guardar, y procedemos a subirla al
Arduino.
Figura No 3. Seleccin del micro controlador
Abre el editor y se procede a realizar el cdigo.

Buscamos donde est guardado el Arduino e


identificamos el archivo de dependencia .hex
Este archivo es el cual se procede a subirlo al
Arduino UNO, por medio del compilador
XLoader.

Figura No 6. Ventana Xload


Seleccionado el adecuado puerto COM segn este
conectado el Arduino UNO, y oprimiendo el
botn upload, quedara subido el programa de
registros sactisfactoriamente.

Figura No 4. Ventana para escribir el codigo

VI.

SIMULACIONES

Figura No 10. Numero 13 representado en


formato binario por medio del led.

Figura No 7. Numero 1 representado en formato


binario por medio del led.

Figura No 11. Numero 31 representado en


formato binario por medio del led.

Figura No 8. Numero 5 representado en formato


binario por medio del led.

Figura No 12. Numero 0 representado en formato


binario por medio del led.

Figura No 9. Numero 10 representado en formato


binario por medio del led.

CAMBIANDO EL PRESCALER A 8

CONCLUSIONES

En lugar de ejecutar un bucle o varias


veces hacer la funcin millis y esperar a
que finalice sin que se pueda hacer algo
ms podemos dejar que un temporizador
haga el trabajo, mientras que el cdigo
hace otras cosas.

Se puede ajustar el temporizador para


utilizar un pre-escalador, lo que le permite
dividir su seal de reloj por varias

Figura No 13. Numero 27 representado en


formato binario por medio del led.

potencias de dos, lo que aumenta el


perodo del temporizador para as seguir
ejecutando instrucciones (CTC).

La medida del tiempo es muy precisa.

Cdigo limpio y elegante. No tenemos


que calcular en el loop si estaremos
perdindonos algo o no. Cuando el tiempo

Figura No 14. Numero 31 representado en


formato binario por medio del led.

programado se cumple la interrupcin


salta y se ejecuta limpiamente.

VII.

IMPLEMENTACIN
PRCTICA

DE

LA

Si utilizamos los timers, muchas de las


instrucciones que dependen de ellos
dejaran de funcionar, entre estos estn, los
pines PWM y analogWrite() y la librera
Servo.

REFERENCIAS

Figura No 15. Leds que representan el nmero 31


en formato binario y el conteo.

http://playground.arduino.cc/ArduinoNot
ebookTraduccion/Variables
http://www.prometec.net/timers/
https://circuits.io/circuits/2639532

You might also like