Laboratorio - Modulo Timer

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

1

MICROCONTROLADORES – MODULOS TIMER


Integrantes:

Miguel Santiago Diaz Galeano

msdiaz@itc.edu.co

Sergio Andres Aldana Babativa

saaldanab@itc.edu.co

Resumen: Durante el desarrollo de este laboratorio Iniciando con nuestro primer punto, aclaramos que
se dio la importancia de manejar los registros (Timer), se utilizo un PIC18F4550 exclusivamente para este
con el fin de aprender sus usos, y además de aplicar ejercicio. Ver figura 1.
estos conceptos en los puntos pactados según la guía
de laboratorio dada. Según el desarrollo teórico para
determinar nuestros tiempos, se vera usado en este
laboratorio, como lo es el concepto de Granularidad, que
nos ayudara a especificar adecuadamente el conteo del
Timer 1 o 0, que son los dos utilizados para este
laboratorio.

INTRODUCCION
Los módulos (Timer), de nuestro controlador
PIC18F4550, son contadores, encargados de registrar o
mejor dicho, contar un cierto tiempo 𝑡 , esto dependiendo
de la configuración de las instrucciones, además de
cargar adecuadamente su granularidad para un buen
desarrollo. La idea de este laboratorio es aprender Figura 1. Microcontrolador PIC18F4550 para el 1er
adecuadamente el uso de estos registros, además del punto.
funcionamiento aplicado a una situación real.

Como el punto nos pide usar exclusivamente el


OBJETIVOS Timer 0 para nuestros segundos y decimas de segundo,
en este caso pasamos a configurar el registro timer 0
• Utilizar el modulo timer del PIC18F4550 para que, según el datasheet de nuestro PIC nos indica como
realizar conteo de flancos y tiempo para la configurar ordenadamente según los bits de los
solución de diferentes problemas. registros. Ver figura 2.

PROCEDIMIENTO
Se requiere realizar 4 actividad usando nuestros
registros Timer específicamente.

Para nuestro primer punto se nos pide realizar un


cronometro que cuente minutos, segundos y decimas de
segundo, utilizando los módulos de Timer 1 para los
minutos y el Timer 0 para los segundos y decimas de
segundo. El conteo de tiempo debe visualizar en display
7 segmentos.
Figura 2. Configuración del registro timer 0.
2

En la figura 2 vemos como usar nuestros bits Este valor hallado será el cargado a nuestros
adecuadamente para un buen funcionamiento de registros. Ver figura 4.
nuestro timer 0. Entonces aplicamos esta guía que nos
ofrece el fabricante en nuestro entorno de programación
MPLAB XC8. Ver figura 3.

Figura 4. Valor del Tmrx para TMR0 y TMR1.

Como el valor 15536 es muy grande para guardarlo


en una variable de 8 bits, se desplazan los bits mas
Figura 3. Configuración del timer 0 en MPLAB XC8 significativos, en nuestro registro TMR0H y los menos
significativos en el TMR0L. De igual manera, para el
registro Timer 1, encargado de los segundos, se le
asignara un valor en sus registros (TMR1H y TMR1L),
Además de la configuración vemos la intervención
los cuales son calculados según la ecuación 1.
del registro INTCON, el cual es el encargado de las
interrupciones, esto debido a que se ejecutara una 1
interrupción cada vez que se llegue a las decimas de 𝑇𝑚𝑟𝑥2 = 216 −
4
× 16
segundos, esto para facilitar la lógica de conteo en 4 × 106
nuestra programación. Como 10 decimas de segundo
equivalen a 1 segundo, tendremos que cargar 𝑇𝑚𝑟𝑥2 = 3036
específicamente el concepto de granularidad, y a El valor 3036 es cargado de la misma forma, según
nuestros registros correspondientes del timer (TMR0H y sus bits mas significativos en los registros (TMR1H y
TMR0L) se le asigna una constante que se verá afectada TMR1L).
según la ecuación 1.
Una vez configurado nuestros módulos pasamos a
Ecuación 1. TMRX para nuestros registros realizar la codificación y lógica del primer punto, y como
𝑇𝑐𝑜𝑛𝑡𝑒𝑜 lo hablamos anteriormente, con ayuda de las
𝑇𝑚𝑟𝑥 = 𝐶𝑜𝑛𝑡𝑒𝑜𝑚𝑎𝑥 − interrupciones se nos facilitara mucho mas el programa.
𝑇𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑐𝑖𝑜𝑛 × 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟
La codificación de los 7 segmentos es la misma que
Donde el conteo max, será la capacidad máxima hemos hecho en anteriores laboratorios y que no cambia
contar por el registro, esto según la configuración de bits en nada. Ver figura 5.
asignada, en este caso es de 16 bits. Tconteo será el
valor que deseamos contar, en este caso de 1 decima de
segundo. Tinstrucción que varía dependiendo al cristal
asignado a nuestro PIC, en este caso es un cristal de 4
MHz y por ultimo el prescaler, que en este caso está
actuando como 2. Aplicando nuestros datos,
obtendremos el valor que debemos ingresar en nuestros
registros (TMR0H y TMR0L).

0.1
𝑇𝑚𝑟𝑥1 = 216 −
4
×2
4 × 106
𝑇𝑚𝑟𝑥1 = 15536
3

Figura 5. Configuración del Timer 1. marcara ascendentemente el número, y de la misma


forma, al existir otra interrupción externa obviamente
Por último, no queda más que ver nuestro distinta a la primera, se descuenta el número, esto por
funcionamiento según lo hecho en nuestra programación unidad. Una vez llegue a 30, se encenderá un led,
en MPLAB XC8 para determinar si los valores indicando el máximo de capacidad de personas en el
calculados, la lógica y la configuración de los registros establecimiento.
están hechas adecuadamente. Ver figura 6.

Figura 6. Simulación completa del cronometro en


Proteus.

Para nuestro segundo de la guía de laboratorio, se


pide desarrollar un contador ascenderte/descendente
para medir el aforo de un centro comercial, con el fin de
cumplir con los protocolos de la cuarentena. Se debe
utilizar el módulo Timer para realizar el conteo de
personas y visualizar el numero en un display 7
segmentos.

Entonces realizando este segundo punto, nos


encontramos en la segunda utilidad e nuestros registros
timer, el cuales serán utilizadas como contadores, para
ello debemos configurarlos no como un reloj, si no como
un contador, esto mediante el registro (TMR0bits.T0CS),
Figura 8. Lógica de programación para nuestro
el cual se declara como 1, esto para determinar que
contador.
nuestro Yimer 0 no actuara con reloj, si no como
contador. Ver figura 7. La clave de nuestro registro es que, gracias a la
configuración como contador, el registro manda una
señal mediante una interrupción interna, esto cada vez
que se active el pulsador ascendente o descendente. Ver
figura 9.

Figura 7. Configuración del Timer 0 como


contador.

Así que el funcionamiento de esta configuración es


que, al existir una interrupción externa, el contador
4

Figura 9. Visualización y pulsadores de nuestro


contador.

Por último, cabe aclarar que el funcionamiento


según la línea de programación se hizo de manera
adecuada, priorizando el uso del modulo Timer, en este
caso específicamente el Timer 0, configurándolo como
contador, por medio del registro (T0CS).

Figura 12. Configuración del TIMER 0 y el registro


INTCON.

De igual forma para contar específicamente un


tiempo de 1ms, debemos hallar el Tmrx para este tiempo
en especifico. Utilizamos nuestra Ecuación 1 y tenemos:

0.01
𝑇𝑚𝑟𝑥 = 216 −
1
×1
1 × 106
𝑇𝑚𝑟𝑥 = 55536

Este valor lo cargamos en nuestros registros


(TMR0H y TMR0L) del timer 0. Ver figura 13.
Figura 10 y 11. Funcionamiento del contador en el
simulador de Proteus.

Se observa el buen funcionamiento del programa,


además de el sistema requerido mediante el conteo,
vemos que en la figura 11 al llegar a 30 el numero de
personas se nos activa el led rojo, esto indicarnos que el
establecimiento está totalmente lleno.

Bien se finalizó el segundo punto de la guía de


laboratorio se continúa realizando de manera
consecutiva la guía, en este caso con un nuevo punto, el
cual nos indica que debemos generar una señal Figura 13. Tmrx para 0.01s o 10ms.
cuadrada de 100ms de periodo, con un ciclo útil del 50%
y 80%. Para este punto se requiere utilizar claramente
nuestro módulo Timer, en el caso de generar una señal
cuadrada de periodo de 100ms, es decir a una Así que una vez configurado nuestro Timer,
frecuencia de 10 Hz pasamos a realizar la lógica de programación para
generar las señales cuadradas de un ciclo de trabajo del
Para obtener el conteo de nuestro timer a 1 ms, se 50% y del 80%. Para esto se utilizan condicionales if, que
realiza la configuración respectiva para el timer 0., que se encargaran de evaluar el conteo de los registros, y
contara con un prescaler de 1, esto para que la señal sea con ayuda de las interrupciones se tomara exactamente
lo más perfecta posible, además de que las el valor del tiempo de los ciclos positivos y negativos de
interrupciones se harán una vez nuestra señal. Ver figura 14.
5

c. Cuando un peatón vaya a cruzar la calle debe


presionar el botón de paso (por
interrupciones), y de forma inmediata los
semáforos deben activar la luz roja durante 15
segundos y seguidamente volver al modo
normal.

Explicada la rutina pasamos a observar el uso


adecuado de los módulos Timer para este punto.

Para este punto se utilizo el Timer 0, debido a que


Figura 14. Lógica utilizada para las señales. tiene mayor capacidad de conteo, así que pasamos a
realizar la configuración adecuada de este registro.

De esta misma forma se trabaja la señal con un


periodo útil del 50%, lo único que cambian son los
condicionales.

Figura 16. Configuración del Timer 0.

Además de esto, se debe configurar los registros


encargados a las interrupciones, como bien lo dice la
guía, debe generarse una interrupción, una vez el peatón
Figura 15. Señales obtenidas según nuestro
debe cruzar la calle
microcontrolador.
Además de esto, se debe cargar el valor con el
El ciclo útil según la visualización es de
cual se genere un tiempo de 1 segundo, para el conteo
exactamente el 50%, esto para la señal cuadrada
del timer. Este valor ya ese calculo anteriormente gracias
amarilla de la figura 15, para la señal azul se nota que su
a la ayuda de la Ecuación 1, y es de 3036, los cuales se
ciclo útil es mucho mayor, que según lo pedido es del
cargan respectivamente en los registros T0MRH y
80%. Estas mediciones se ven de mejor manera en el
TMR0L.
video presentado junto al laboratorio.

Para nuestro cuarto y último punto, se nos pide


desarrollar un semáforo, que ejecute una rutina
especifica. Esta rutina se trata de:

a. Al iniciarse el sistema los semáforos SA y SB,


se encuentran en modo de operación normal:
La luz roja se enciende durante 1 segundo con
el amarillo apagado, luego el amarillo se
enciende durante 1 segundo con el rojo
apagado, esta secuencia se repite.

b. SA y SB funcionan al mismo tiempo.


6

Figura 17. Rutina para el semáforo peatonal. Figura 18 y 19. Rutina Normal para los semáforos
SA y SB.

Como se observa en la figura 17. Una vez exista


una interrupción externa, en este caso para que los Una vez se pulse el pulsador visto en la figura 18 y
peatones crucen, se enciende el led rojo durante 15 19, se debe cambiar esta rutina, y pasar los semáforos
segundos, y una vez se termine de contar, el vuelve a su en rojo durante 15 segundos. Ver figura 20.
rutina normal. Ver figura 18.

Figura 20. Interrupción del paso peatonal en los


semáforos SA y SB.

Con esto se termina la explicación de la guía de


laboratorio contextualizada al uso de los módulos Timer.

CONCLUSIONES
El uso del modulo Timer no fue tan sencillo como
Figura 18. Rutina normal para los semáforos SA y SB. se esperaba, esto debido a que existe una relación entre
ellos el cual complico el uso de tener un solo
La rutina normal se hace adecuadamente, y gracias microcontrolador para este laboratorio, esto es asociado
a aun contador es como se ejecuta bien durante proceso. al pin de interrupción, de tanto el TIMER 1, TIMER 2,
TIMER 3, el cual poseen el mismo pin según el datasheet
Ahora solo nos queda observar la simulación en
para generar una bandera de interrupción cada vez que
Proteus y verificar si nuestra configuración del Timer 0 y
exista un conteo especifico. Este inconveniente alteraba
la lógica programada en MPLAB es la correcta.
nuestras variables creadas y por lo tanto cambiaba la
sintaxis total del programa en nuestro MPLAB y Proteus.

Para la solución de este problema se recurrió a


manejar un microcontrolador por punto, esto con el uso
conceptual de que los registros Timer tengan la mayor
independencia posible. De igual forma por eso se
manejó solo los registros TIMER 0 y TIMER 1. Como
bien se observo en el informe el uso de la granularidad
en nuestros registros es importante y determinar su
constante Tmrx es importante para determinar el tiempo
deseador por el usuario. De igual forma durante el video
existió una serie de inconvenientes y errores del
programa en Proteus, esto debido a que lo tenemos
trabajando a un 100% solo por el hecho de tener
trabajando 4 microcontroladores a la vez, así que el
simulador no aguanta mucho tiempo en funcionamiento
del programa, aun así, esto no quiere decir que no
funcione, ya que claramente se vio que cada
microcontrolador cumple su función pactada.
7

WEBGRAFIA
[1]

Datasheet – PIC18F4550

[2]

http://microcontroladores-mrelberni.com/timer0-
pic/

[3]

https://www.makerelectronico.com/temporizador-
timer0-pic18f4550/

[4]

https://es.slideshare.net/faurbano/modulo-timer-0-
del-pic-16f887

También podría gustarte