TERMOSTATO DIGITAL CON PANTALLA LCD
FASE NRO 2
MANEJO DEL TIMER Y LAS INTERRUPCIONES
1. COMPETENCIA ESPECIFICA DE LA SESIÓN
- CONOCER EL FUNCIONAMIENTO Y LA CONFIGURACIÓN DE LAS INTERRUPCIONES
- CONOCER EL FUNCIONAMIENTO Y LA CONFIGURACIÓN DEL TIMER CERO
- APLICAR ESTOS CONOCIMIENTOS EN LA REALIZACIÓN DE UN CRONOMETRO
2. MARCO TEÓRICO
Un temporizador
contador PIC es un registro que aumenta su valor en una unidad con
cada 4 ciclos de reloj al cual se encuentre funcionando el microcontrolador
PIC, si por ejemplo la frecuencia del oscilador es de 4MHz, entonces el
ciclo de trabajo del microcontrolador PIC será de 1us, por lo que el
temporizador contador PIC aumentará su valor de uno en uno en cada
microsegundo; por ejemplo cuando el temporizador aumenta su valor en 10
unidades habrán transcurrido 10us.
El
temporizador contador PIC es utilizado para obtener medidas de
tiempos muy precisas, de ahí que se le da el nombre de temporizador, en este
caso el temporizador contador PIC funciona con el reloj del sistema; pero
también puede ser utilizado para realizar conteos, por lo que también se le
llama contador, en este caso el temporizador contador PIC ya no aumenta su
valor de uno en uno en cada ciclo de trabajo, sino que lo hará mediante el
flanco de subida o el flanco de bajada de alguna señal que llegue a un pin del
PIC, estos pines son identificados como TxCKI donde x es el número temporizador
contador PIC que será usado como contador.
El temporizador contador PIC puede producir interrupciones.
Los microcontroladores PIC suelen tener varios temporizadores, como ejemplo se utilizará el PIC16F877A, el cual tiene 3 temporizadores que son llamados timer0, timer1 y timer2, el tiempo que tarda el temporizador contador PIC en aumentar su valor de unidad en unidad, se puede modificar por programa mediante el uso de prescalers, siendo de esta manera mucho mas provechosos; dependiendo del modelo de microcontrolador PIC utilizado, no todos los temporizadores pueden ser utilizados como temporizador y también como contador.
El registro en los microcontroladores PIC donde se guardan y realizan los aumentos de uno en uno del temporizador PIC, es llamado registro temporizador contador y es representado por TMRx, donde x es el número de temporizador contador PIC que puede ser 0, 1, 2, dependiendo del número de temporizadores con que cuente el microcontrolador PIC; el temporizador contador PIC puede ser de 8 bits o de 16 bits.
El temporizador contador PIC puede aumentar sus valores de 0 a 255 si es de 8 bits como el timer0, o de 0 a 65535 si es de 16 bits como el timer1, cada vez que estos registros alcanzan su máximo valor se reinician, volviendo a contar desde su valor mínimo hasta su máximo, ademas pueden ser programados para provocar interrupciones.
Para el uso del temporizador contador PIC se cuenta además con un grupo de registros mediante los cuales se puede lo puede configurar de acuerdo a las necesidades que se tengan.
El registro temporizador contador PIC TMR1 puede ser utilizado para tareas de comparación, captura y el registro TMR2 es utilizado para la obtención de señales de modulación de ancho de pulso o PWM, siendo para ello necesario el uso de otros registros.
3. EVIDENCIAS DE LAS TAREAS EN LABORATORIO
EJERCICIO 1
CCS C COMPILER
#use delay (clock=20M) // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT // Configuración básica de los fusibles
#define LCD_ENABLE_PIN PIN_D3 //Definimos los pines a ser utilizados por la
#define LCD_RS_PIN PIN_D2 //pantalla LCD
#define LCD_RW_PIN PIN_C7
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c> // Incluimos librería para manejar Pantalla LCD
int centesimas=0,segundos=0,minutos=2;
#int_TIMER0 // FUNCION DE INTERRUPCION POR
void TIMER(VOID) // DESBORDAMIENTO DEL TIMER 0
{
++centesimas; // incrementar una centésima
if (centesimas>99)
{
++segundos; // si llegamos a 100, incrementar un segundo
centesimas=0;
}
if (segundos>59)
{
++minutos; // si llegamos a 60, incrementar un minuto
segundos=0;
}
if (minutos==3) // si llegamos a 3 minutos, hacer alguna acción
{
minutos=0;
disable_interrupts (INT_TIMER0); //habilita interrupcion de timer0
// agregar cualquier otra acción necesaria.
}
set_timer0 (61); //reinicar cuenta desde 61
}
void main ()
{
lcd_init () ; // Inicializamos pantalla LCD
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); //configuracion del timer0
set_timer0 (61); // interrupción cada centésima
enable_interrupts (INT_TIMER0); //habilita interrupcion de timer0
enable_interrupts (GLOBAL); //todas las interrupciones activadas
printf (lcd_putc, "\f***CRONOMETRO***") ; // Mandamos mensaje por única vez
WHILE (true)
{
lcd_gotoxy(2,2);
Printf(lcd_putc,"Tiempo %02u:%02u",minutos, segundos);
}
}
PROTEUS (VIRTUAL)
ENTRENADOR (FÍSICO)
EJERCICIO 2
VÍDEO
4. OBSERVACIONES
- · Se utilizó al microcontrolador en aplicaciones de control electrónico.
- · Se desarrolló y ejecuto programas en un microcontrolador PIC
- · Programación y configuración interfaces básicas del microcontrolador.
- · Conocimiento del proceso de desarrollo de un proyecto con PIC
- · Aplicar todas las técnicas de programación conocidas hasta este momento.
- · Aplicación de conocimientos hasta ahora en la realización de un proyecto.
- · Los display a veces presentan problemas.
5. CONCLUSIONES
- La tarjeta además de aplicada en la experiencia nos sirve de muchas maneras, haciendo uso de los códigos.
- El formato aplicado en la secuencia de comandos tiene que ser respetado, además de las condicionales que algunos de estos poseen, como por ejemplo al mostrar una palabra larga o corta, poniendo decimales o enteros.
- Al realizar el conteo decreciente debe establecerse el fin de la ejecución del programa, así como volver hacia un punto inicial.
- La forma de ejecución de actividades debe estar regida por toda la secuencia de comandos y solo debe estar limitada a hacer uso de las extensiones disponibles que esta posea.
- Orden y disposición de directrices como VOID , INT, deben estar en lugares específicos , junto con la orden que se les asigno.
6. FOTO GRUPAL
No hay comentarios:
Publicar un comentario