Está en la página 1de 5

Universidad Nacional

Autónoma de México

Facultad de Estudios
Superiores
Cuautitlán

Ingeniería en Telecomunicaciones,
Sistemas y Electrónica

Laboratorio: Dispositivos lógicos Programables


Grupo 2811-E

Profesor: Rene Pérez


Moroyoqui

Alumno: Alvarez Sandoval Carlos

Practica #3
Termporizador

Semestre 2018-II

Fecha de realización: Fecha de entrega:


06/04/2018 06/04/2018
 Objetivos
Al término de esta práctica el alumno podrá:
 Crear retardos haciendo uso del temporizador básico de los
microcontroladores, el TIMER 0.

 Introducción
Para el ATmega88 el registro TCNT0 del timer0 AVR está formado por 8 bits
por lo que se sus valores pueden ser desde 0 hasta 255, al utilizar timer0 AVR
como temporizador este aumentará sus valores o su cuenta con cada ciclo de
reloj, sus valores aumentaran de uno en uno entre 0 y 255, por ejemplo si el
oscilador con el que está funcionando el microcontrolador AVR es de 1MHz,
entonces el registro TCNT0 aumentará una unidad en 1 us, si el registro
TCNT0 se incrementa en 27 unidades habrán transcurrido 27us.
Normalmente el registro del timer0 TCNT0 irá aumentando su conteo con cada
ciclo de reloj del microcontrolador, si se usa por ejemplo una frecuencia de
trabajo (lo que se conoce como FCPU) de 1Mhz entonces el registro TCNT0
aumentará en una unidad cada microsegundo, y como este registro es de 8 bits
este aumentará desde 0, o desde algún valor que se le ponga como valor inicial
al registro TCNT0, hasta un máximo de 255, por ejemplo si va desde 0 hasta
255 habrán transcurrido 255us luego volverá a 0 pero en esa vuelta a 0
transcurre 1us mas, por lo cual en ir de 0 y volver a 0 transcurren 256us; no
siempre se utiliza una FCPU de 1Mhz esto puede variar, por lo que como
consecuencia variará el tiempo que trascurre para que el registro TCNT0
aumente su valor.
Para programar el timer0 AVR como temporizador será necesario colocar todos
los bits del registro TCCR0A a cero, esto es TCCR0A=0, en realidad esto no es
necesario ya que el registro se inicializa automáticamente a 0, este registro
será útil cuando se utilice el timer0 AVR en modo comparación y para la
modulación de ancho de pulso PWM.
El timer0 AVR cuenta con lo que se conoce como el prescaler esto hace que la
frecuencia de trabajo FCPU se divida por este prescaler, con lo que se logra
que el timer0 AVR tarde un poco mas en aumentar su valor en una unidad; el
prescaler puede tomar el valor de 1, 8, 64, 256 o 1024; estos valores se eligen
programando los bits 0, 1 y 2 del registro TCCR0B, los bits 7 a 3 en este caso
se pondrán a 0.

En la siguiente tabla se ve los valores que hay que dar a estos bits para
obtener los diferentes valores de los prescaler para el temporizador timer0
AVR, observar que cuando estos bits son todos iguales a 0 el timer0 AVR está
deshabilitado.

 Procedimiento experimental
1. Haciendo uso del proyecto creado anteriormente y siguiendo la lógica de las
actividades previas, programe el microcontrolador tomando como base la rutina
de retardo siguiente:

2. Para el circuito previamente armado de acuerdo con el diagrama de la figura


3.2, y con ayuda del osciloscopio, grafique la señal de salida del pin 14,
acotándola correctamente.
3. Tome una fotografía donde se observe el funcionamiento del circuito.

4. Aprovechando las rutinas de los códigos realizados en las actividades


previas, escriba un programa que controle tres pines del puerto B de modo que
funcione como un semáforo.
5. Modifique el circuito de la figura 3.2 para realizar la prueba del sistema de
semáforo.
 Cuestionario.
1) Explique brevemente el funcionamiento y el porqué de los valores en la
subrutina “retardo”.
La subrutina de retardo funciona tomando en cuenta el timer del
microcontrolador y como este no se detiene y sigue contando continuamente lo
único que se hace es estar preguntando si ya llego a la cuenta establecida la
cual se calcula de la siguiente manera, la frecuencia del microcontrolador entre
el valor del prescaler y eso nos da un valor de frecuencia nuevo, se convierte a
periodo y esto es el tiempo que tarda en cambiar un ciclo del timer, así
solamente el valor deseado de retardo se divide entre el periodo y son los
pasos por los cuales debemos preguntar en el timer. Al ser este de 8 bits el
valor de los pasos no debe ser mayor a 255 por lo tanto por eso se repite en los
demás códigos la misma secuencia el numero de veces deseadas para
completar el retardo indicado.
2) Explique el funcionamiento del prescaler del microcontrolador.
Lo que hace el prescaler es dividir mediante multiplexores la señal de reloj
retardándola lo necesario según la división establecida en los registros del
mismo microcontrolador.
3) Determine el tiempo mínimo de retardo que se puede lograr con el
microcontrolador empleado en la práctica y explique cuáles son sus
limitaciones de funcionamiento.
El tiempo mínimo de retardo es 1 milisegundo pues el prescaler no se puede
dividir más, se limita debido a que depende de la frecuencia del
microcontrolador y el uso de las instrucciones simples para realizar el retardo.

 Conclusiones
Aunque el retardo usado en esta practica es muy util para tiempos
relativamente pequeños, para realizar cambios del orden de los microsegundos
se vuelve inútil, pues el tiempo mínimo en este retardo es de 1 milisegundo sin
embargo existen mas formas que se podrían implementar como el uso en
código c de la librería delay.h, que nos permite retardos casi exactos del orden
desde los microsegundos hasta los milisegundos, el código implementado
favorece la flash del microcontrolador pues no se ocupo realmente mucho
espacio debido al compilador que los avr usan dentro de estas prácticas.
 Bibliografía
Manual del ATmega8.
http://microcontroladores-mrelberni.com/timer0-avr/

También podría gustarte