jueves, 15 de marzo de 2018

LABORATORIO N° 01

HERRAMIENTAS DE PROGRAMACIÓN HARDWARE
y SOFTWARE

1. COMPETENCIA ESPECIFICA DE LA SESION
  • Listar las partes internas generales de un microcontrolador.
  • Identificar las funciones generales de un microcontrolador
  • Introducción a la programación en PIC C Compiler
  • Cómo utilizar el Entrenador

2. MARCO TEÓRICO
El PIC 16F877a es un microcontrolador de Microchip Technology fabricado en tecnología CMOS, su consumo de potencia es muy bajo y además es completamente estático (esto quiere decir que el reloj puede detenerse y los datos de la memoria no se pierden). Tiene una memoria memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje, pues permite reprogramarlo nuevamente sin ser borrado con anterioridad.
Resultado de imagen para pic16f877a

2.1. RESUMEN DE CARACTERÍSTICAS PRINCIPALES DEL PIC 16F877a
  • Memoria de programa: FLASH de 8K de instrucciones de 14 bits
  • Memorias de datos: SRAM de 512 bytes, EEPROM de 256 bytes
  • Pines I/O (Input/Output) : 6 del puerto A, 8 del puerto B, 8 del puerto C, 8 del puerto D y 3 del puerto E, además de 8 entradas analógicas.
  • Pila (Stack): 8 niveles (14 bits)
  • Fuentes de interrupción: 14
  • Instrucciones: 35
  • Compatible modo SLEEP
  • Frecuencia máxima del oscilador de 20MHz
  • Conversor Analógico/Digital de 10 bits multicanal (8 canales de entrada)
  • Corriente máxima absorbida/suministrada (sink/source) por pin: 25 mA
  • Voltaje nominal: 3 a 5.5V DC (CMOS)
  • Power On Reset
  • Power Up Timer (PWRT) 
  • Oscilador Start Up Timer (OST)
El encapsulado que he utilizado es de tipo DIP (Dual In-Line Pin) de 40 pines, aunque posee otros encapsulados (SOIC, PLCC y QFP):
Pines

2.2. ARQUITECTURA INTERNA
Este término se refiere a los bloques funcionales que componen en PIC internamente, como la memoria RAM, la memoria FLASH,  la lógica de control, etc.
El PIC 16F877 se basa en la arquitectura Harvard, en la cual el programa y los datos se pueden trabajar con buses (un bus es un conjunto de líneas que transportan información entre 2 o más módulos) y memorias separadas, lo cual permite que las instrucciones y los datos tengan longitudes diferentes.

3. EVIDENCIA DE TAREAS EN LABORATORIO

3. DIAGRAMA DE LA SIMULACIÓN DEL ENTRENADOR DE PICS EN PROTEUS


3.2. VIDEO EXPLICATIVO

4. OBSERVACIONES:
  • Al momento de realizar el programa en PIC C Compliler, debemos tener cuidado al momento de escribir las instrucciones y comandos de manera correcta; ya que podría conllevarnos a errores al momento de compilarlo.
  • Debido a que se utilizó la instrucción "#include <16f877a.h>" en el encabezado del programa, es necesario copiar el archivo "16F877A.h" en la carpeta donde se creó el programa.
  • Antes de compilar el programa en PIC C Compiler, es necesario cerrar las otras pestañas y abrirlo nuevamente para que se generen los archivos HEX y COF.
  • Al momento de realizar la simulación en Proteus y cargar el programa en el PIC, se observó que tanto el archivo HEX y COF lo ejecutan de manera correcta.
  • La instrucción “while(true)” genera un bucle infinito y de no colocar el programa dentro, este solo se ejecutará una vez.
  • Al presionar el pulsador de RESET, la ejecución del programa vuelve al inicio, sin importar dónde se quedó mientras se ejecutaba.

5. CONCLUSIONES
  • Se logró identificar las partes internas y funciones generales del microcontrolador 16F877a. Realizando además las pruebas correspondientes en el entrenador de PICs.
  • Se realizó un programa básico en PIC C Compiler para el encendido y apagado de un LED utilizando las instrucciones "while", "output_high", "output_low" y "delay_ms".
  • Se compiló el programa en PIC C Compiler a partir del cual se generaron los archivos HEX y COF para realizar la simulación en Proteus.
  • Se logró transferir el archivo generado HEX al entrenador utilizando el programa PICKIT2 y se verificó el correcto funcionamiento del mismo.
  • Se modificó el programa para diseñar un semáforo con 3 salidas (LEDs), el cual fue simulado en Proteus con éxito.
  • Se reemplazó la instrucción output_high(PIN_C0), por output_bit(PIN_C0, 1); notando que cumple una función similar poniendo el pin C0  a 1.
  • Se eliminó la instrucción “while(true)”, sin la cual ya no se generaba el bucle infinito y el pin se encendía y apagaba una sola vez.
  • Se presionó el pulsador de RESET y se observó que la ejecución del programa volvía al inicio, sin importar dónde se quedó.

6. FOTO GRUPAL


7. ANEXOS

7.1. Cuestionario 01 - Curso virtual: Simulando Sistemas Embebidos con Microcontroladores PIC









1 comentario: