El microcontrolador PIC16F887 tiene 3 temporizadores:
Timer 0 (8 bits)
Timer 1(16 bits)
Timer 2(8 bits)
A pesar del Timer 0 ser de 8 bits es el temporizador principal. Un Timer es básicamente un registro conectado a un contador de tal manera que funciona como un CRONÓMETRO, cuya velocidad de cuenta depende de la frecuencia del cristal del PIC y de los divisores de frecuencia configurados, llamados PREESCALER y POSTESCALER.
pero….¿Que es un preescalador?
Un preescalador o preescaler como lo pudimos observar en los valores anteriores predefinidos en el PIC C Compiler, es simplemente la velocidad del microcontrolador dividido por algún número de potencia 2 (2, 4, 8, 16, 32, 64, 128, 256)
El Timer0 pic también llamado RTCC se puede cargar con un valor cualquiera entre 0 y 255 y puede ser incrementado a través del Reloj interno y dividido por un valor que se puede escoger entre los que se indican a continuación. Esto se conoce como el valor del preescalador (Valor de Preescaler):
1 RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8,
2 RTCC_DIV_16, RTCC_DIV_32,
3 RTCC_DIV_64, RTCC_DIV_128,
4 RTCC_DIV_256.
Desborde del TIMER PIC
La interrupción RTCC o timer PIC se produce cada vez que el contador TIMER0 pasa de 255 para 0.
Si se trabaja el Microcontrolador con un cristal de 4 Mhz, esta frecuencia se divide internamente por 4, es decir realmente trabaja a 1Mhz, o sea que cada ciclo de reloj dura aproximadamente 1 microsegundo.
Para entender el funcionamiento del Timer 0, como ejemplo se supone que se necesita generar una interrupción cada 20 ms. (20.000 microsegundos).
Para entender el funcionamiento de forma práctica, realizar el siguiente proyecto:
DIAGRAMA ESQUEMÁTICO:
CÓDIGO 01 DE PROGRAMACIÓN EN PIC C COMPILER:
VÍDEO EXPLICATIVO:
RETO DE LA SEMANA:
A partir del código mostrado, realice los cambios necesarios para realizar un programa que CUENTE EN FORMA DESCENDENTE, (temporizador regresivo), bajo las siguientes condiciones:
a. Al presionar pulsador en A0, incrementar MINUTOS. el temporizador aún no debe estar contando el tiempo. (sirve para configurar tiempo de cuenta).
b. Al presionar pulsador en A1, iniciar CUENTA REGRESIVA desde los minutos previamente configurados.
c. Si la cuenta llega a 00:00, congelar la cuenta y sonar BIP 3 veces. Salida en RB0.
Para verificar que una variable de tiempo (digamos “minutos”) llegó a cero, hacerlo con la instrucción “if (minutos==-1)”
DIAGRAMA ESQUEMÁTICO DEL RETO:
CÓDIGO DEL RETO DE PROGRAMACIÓN EN PIC C COMPILER:
VÍDEO DEL RETO:
OBSERVACIONES:
Tuve que reemplazar el valor detenido en la condición donde se realiza la acción de parar el cronometro para así poder mostrar el valor de 0 en minutos y segundos.
Es importante colocar todas las lineas de código necesarias para habilitar las interrupciones para que así estas funcionen correctamente.
Pude reducir algunas lineas de código usando la condición de for.
Tuve que agregar algunas variable extras para poder realizar el reto de la semana.
En la condición para la activación del BIP, si se desea se puede eliminar la variable de los segundos.
CONCLUSIONES:
Aprendí el funcionamiento y configuración del Timer cero.
Aplique los nuevos conocimientos adquiridos y los implemente programando códigos de cronómetros.
Concluyo que el uso del Timer cero para diferentes tipos de control del tiempo en ciertos códigos es sencillo de usar.
Comentarios
Publicar un comentario