martes, 10 de diciembre de 2019

Manejo de timer Lab12

Laboratorio N°12

Manejo de Timer


1.- Competencias especificas
  • Conocer el funcionamiento y configuracion del Timer
  • Conocer el funcionamiento y configuracion de las interrupciones
  • Programacion de un cronometro
2.- Marco Teórico 

Un PIC es un circuito integrado programable (Programmable Integrated Circuited), el cual contiene todos los componentes para poder realizar y controlar una tarea, por lo que se denomina como un microcontrolador.Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de general instrument.






El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en general una buena CPU, ésta tenía malas prestaciones de entrada y salida, y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento del sistema quitando peso de entrada/salida a la CPU. El PIC utilizaba microcódigo simple almacenado en ROM para realizar estas tareas; y aunque el término no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del oscilador.

3.- Interrupciones de un microcontrolador

Es una de las caracterasticas de los microcontroladores, de las mas importantes que constituye la capacidad de sincronizar la ejecucion de programas con acontecimientos externos; es decir, cuando se produce una interrupcion, el micro automaticamente deja lo que esto haciendo, va a la direccion 04h de programa y ejecuta lo que encuentre a partir de alli hasta encontrarse con la instruccion RETFIE que le hara abandonar la interrupcion y volver al lugar donde se encontraba antes de producirse dicha interrupcion. Hemos de diferenciar entre dos tipos de interrupciones posibles en un PIC:




1. - Mediante una accion interna. El desbordamiento de la Pila (Stack) por una operacion indebida, por ejemplo:
  • Al completarse la escritura de datos en una EEPROM.
  • Por desbordamiento del registro TMR0 al rebasar el valor 255 (FFh) a 0.

2. - Mediante una accion externa, la mas util. Al producirse un cambio del nivel en uno de sus pines por una accion externa.
  • Estando en el modo de reposo (SLEEP), un cambio de nivel en el pin RB0/INT .
  • Un cambio de nivel en uno de los pines RB4 a RB7 estando configurados como entrada.

4.- Conexiones

En la siguiente imagen de Proteus se puede observar la estructura de sus pines.
Lo  podemos dividir en los Pines de alimentación, pines de control y los pines del bus de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los pines de Anodo de led backlight y cátodo de led backlight.




5.- Pines de alimentacion.

Vss: Gnd
Vdd: +5 voltios
Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K conectado a Vdd.




Modulo PIC





6.- Video.










7.- Observaciones 

  • Durante el presente laboratorio se aprendió el correcto funcionamiento del Timer0 en el PIC 16F877A, así como los algoritmos necesarios en relación a la programación para su adecuado manejo.
  • Tanto en un temporizador ascendente como descendente  la variable centenas debe estar siempre incrementándose y no decrementándose, ya que esta variable realiza la operación de funcionamiento del temporizador ya sea para aumentar tiempo o quitar tiempo.
  • Se utilizó una variable contador, el cual me permite saber si el temporizador ya realizó la cuenta regresiva programada y de esa manera recién hacer sonar los bips correspondientes.
  • Se utilizó la función Bip en la programación, esto con la finalidad del funcionamiento de la bocina, ya que esta trabaja no con señal continua sino con alterna; y para simularlo se utilizó un bucle for que activa y desactiva el mismo.

8.- Conclusiones
  • Para el desarrollo del problema propuesto en el laboratorio, se hizo uso de 3 pulsadores D0, E0, D1. Con el D0 y E0 podemos incrementar el cronometro en segundos y minutos respectivamente, y con el D1 podemos iniciar la cuenta regresiva de dicho temporizador.
  • Se realizó una algoritmo de programación utilizando condicionales “if”, para poder limitar la subida ascendente de los segundos, ya que al no realizarlo, aparecería en nuestro LCD 60, 61 a más segundos, lo cual sería incorrecto.
  • Para poder congelar el temporizador en cero minutos y ceros segundos se utilizó la relación condicional de que si minutos es igual a -1, se detenga el temporizador, ya que de lo contrario empezaría la cuenta otras vez en 255.
  • Se debe usar un delay  después de presionar cada pulsador, esto con la finalidad de evitar falsos disparos y hacer que nuestra configuración de segundos y minutos sea lo más precisa posible ya que de lo contrario  al presionar un pulsador, este aumentaría desproporcionalmente.

No hay comentarios:

Publicar un comentario