You are on page 1of 5

Universidad Autnoma de Ciudad Jurez

Instituto de ingeniera y tecnologa


Examen I

Maestro: Juan De Dios Cota Ruiz


Materia: Sistemas embebidos
Alumno: Martin Eduardo Castro Vega
Matricula: 105753
Fecha de entrega: 12 Marzo 2014

1. Introduccin.
Un timer es uno de muchos registros en un microprocesador moderno que simplemente
cuenta eventos, es decir, pulsos elctricos.
Cada vez que un pulso es aplicado a un contador, el valor en el contador incrementa en uno.
Si los pulsos son aplicados en una tasa constante conocida, entonces el contador se convierte en
un timer. Conociendo la tasa del pulso y un conteo, se puede fcilmente computar un valor de
tiempo. Por ejemplo, si la tasa del pulso es 100 pulsos por segundo (donde cada pulso es 1/100
segundos) y nuestro contador ha contado 20 pulsos, entonces 0.20 segundos han pasado. 20
pulsos/(100 pulsos/segundo) = 0.20 segundos.
Para comprender los contadores y timers se debe saber sus lmites, hay dos lmites: las
propiedades del pulso (mnima amplitud del pulso y duracin), y el mximo valor al que puede
ser contado. Cuando se utiliza el reloj interno (previsto por el microcontrolador), entonces no hay
que preocuparse por las propiedades mnimas del pulso. (Sin embargo, deben ser considerados si
se trabaja manejando el contador con una seal externa).
En arduino existen contadores de 8 bits y 16 bits, esto significa que los de 8 bits pueden
contar hasta 2^8-1 o 255, mientras que los de 16 bits pueden contar hasta 2^16-1 o sea hasta
65,535. Cuando el contador alcanza el conteo a 255 o 65,535 respectivamente, este vuelve a
empezar desde cero, entonces se dice que hay un desbordamiento en el conteo cuando esto pasa.
Si no se para el contador o el timer antes de que alcance el valor mximo, se desborda, o
empieza a contar desde cero. A menos que se quiera mantener pista de cada vez que se desborda,
no se puede saber el tiempo real. Efectivamente, se extiende el ancho del registro del contador
usando software.
Es importante definir ciertos trminos. Por ejemplo BOTTOM es el valor 0. Este es el
mnimo valor que el contador puede tener. Mientras que TOP es el valor que el contador alcanza
cuando vuelve a empezar. MAX es el valor mximo que tiene el contador ya sea que es de 8 bits
por lo tanto seria 255 o de un contador de 16 bits 65,535. En ciertos casos el MAX puede ser el
TOP y en otros casos el valor del TOP puede ser alcanzado antes de que alcance el valor MAX.
[1]
2. Registro PORT del Arduino.
El contador/timer puede ser registrado por una fuente interna o externa de reloj. El la fuente
de reloj es seleccionada por la lgica de seleccin de reloj la cual es controlada por los bits del
Clock Select (CS120) localizados en el registro b de control del timer/contador (TCCR1B).
TCCR1A Timer/Counter1 Control Register A

Fig. 1 Bits del registro TCCR1A

Bit 10 WGM1110 Modo de generacin de onda


Combinado con los bits WGM1312 encontrados en el registro TCCR1B, esos bits
controlan la secuencia del contador, la fuente para el valor mximo del contador (TOP), y qu
tipo de generacin de onda ser usada. Los modos de operacin soportados por la unidad del
contador/timer son: modo normal (Contador), borrar timer cuando la comparacin sea igual
(CTC), y tres tipos de Pulse Width Modulation (PWM). El modo de operacin se puede observar
en la Figura 2.

Fig. 2 Modo de operacin del Timer

TCCR1B Timer/Counter1 Control Register B

Fig. 3 Bits del registro TCCR1A

Bit 43 WGM1312 Modo de generacin de onda


Bit 20 CS120 Seleccin del reloj
Los tres bits de seleccin de reloj seleccionan la fuente de reloj que va a ser usada por el
contador/timer.

Fig. 4 Descripcin de bits de seleccin de reloj

Dependiendo de la configuracin de TCCR1A y TCCR1B, se selecciona si hay o no


prescaling o si paramos el contador/timer. [2]

3. Procedimiento.
El examen consisti en hacer un teclado musical con ocho notas y seis armnicos que
dependiendo de la tecla presionada diera una nota, mientras que los armnicos fueron cambiados
con un dip switch ingresando el valor del armnico que se quera.
La clave fue el modificar el OCR1A para obtener diferentes frecuencias y por ende diferentes
sonidos de las notas, dependiendo del valor dado entregaba una frecuencia diferente, al usar el
TIMER1 y ser de 16 bits, el valor que poda tomar OCR1A fu entre 0 y 1023, por lo tanto se
aument en 1 el valor del registro por cada 0.01 segundos para notar el cambio de la velocidad
del motor.
La conexin fsica del circuito fue sencilla, constaba de ocho push buttons conectados a las
entradas del arduino y conectados a tierra ya que el arduino tena activado los pull-up internos,
todo esto aplico de igual manera al dip switch. Mientras que la bocina fue conectada a un
transistor npn para poder energizar y que funcionara correctamente, la base del transistor fue
conectado a la salida del OCR1A para que funcionara como un switch y energizar la bocina.

Material

8 Push button
1 Dip Switch de 8 pines
1 Resistencia de 4.7k
1 transistor npn 2n2222
1 Bocina de 75W
Arduino Uno R3
Fuente de poder

El circuito se puede visualizar en la Figura 5.

Fig. 5 Circuito esquemtico del piano

4. Conclusiones.
Martin Eduardo Castro Vega. Se comprendi el funcionamiento que tienen los timers en
arduino, haciendo uso del TIMER1 que es el que tiene ms resolucin al ser un contador de 16
bits, tambin se entendi el uso que se le puede dar al OCR1A que puede ser modificado para
cambiar la frecuencia de la salida del registro. Por ltimo fue de gran ayuda el usar el registro
OCR1A ya que permiti el descartar la utilizacin de una interrupcin por software haciendo el
programa ms funcional.

5. Bibliografa.
[1] http://www.wrightflyer.co.uk/Using%20AVR%20Counter.pdf, 10 de marzo del 2014.
[2] http://www.atmel.com/Images/doc8161.pdf, 11 de marzo del 2014.

You might also like