domingo, 22 de abril de 2018

LABORATORIO 7

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



#include <16f877a.h>             // Incluimos archivo con PIC a utilizar
#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