Los Bits de Configuración del PIC16F628 44 PRÁCTICA 4 LOS BITS DE CONFIGURACIÓN DEL PIC16F628 OBJETIVOS Identificar cada uno de los bits de configuración que rigen el funcionamiento del PIC16F628. Verificar funcionalmente el efecto de los bits de configuración. Configurar los puertos paralelos del PIC16F628. INTRODUCCIÓN El PIC16F628 de Microchip es un potente microcontrolador CMOS de 8 bits con arquitectura RISC capaz de operar con frecuencias de reloj hasta de 20 MHz (ciclos de instrucción de apenas 200 ns), fácil de programar (sólo 35 instrucciones) y disponible en diversos tipos de encapsulados. El PIC16F628 ha sido construido con características tales que se puede configurar para funcionar en modos de operación que no necesitan componentes externos tales como el circuito de reloj o de reset. Esto implica que además de elaborar el programa que deseamos ejecutar, también es necesario configurar su modo de operación a través de una palabra de configuración (configuration word). La palabra de configuración se encuentra mapeada en la dirección 2007h de la memoria de programa y sólo puede ser accesada durante la programación de dispositivo. Así, el WinPIC800 o el ICProg nos van a solicitar configurar dicha palabra antes de descargar y programar nuestro código al PIC. El formato de la palabra de configuración, así como el significado de cada uno de sus bits se enuncian a continuación: Figura 4.1: Bits de configuración del PIC16F628. CP1:CP0: Bits de protección de código. Los bits 13-10 son encargados de proteger la memoria de programa. CPD: Bit de protección para código de datos. 1 = Protección deshabilitada de la memoria de datos. 0 = Protección habilitada en la memoria de datos.
Los Bits de Configuración del PIC16F628 45 LVP: Habilitación de la programación por voltaje bajo. 1 = LVP habilitado, la terminal RB4/PGM tiene tal función. 0 = LVP deshabilitado, RB4/PGM es una terminal de I/O BODEN: Brown Out Detet Reset Enable bit (Bit de reset por voltaje de alimentación bajo). 1 = Reset por BOD habilitado. 0 = Reset por BOD deshabilitado. MCLRE: Habilitación de la terminal de reset. 1 = Terminal de reset (MCLR) en RA5. 0 = MCLR conectado internamente a V DD, RA5 es un pin de I/O. PWRTEN: Bit de habilitación de temporizador al energizar (Power up Timer Enable bit) 1 = PWRT habilitado. 0 = PWRT deshabilitado. WDTEN: Bit de habilitación del Watch-Dog (Watch-Dog Timer Enable Bit) 1 = WDT habilitado. 0 = WDT deshabilitado. FOSC2:FOSC1:FSC0: Bits de selección del tipo de oscilador. a) XTAL b) EXT c) Oscilador interno d) Oscilador interno con salida de CLK
Los Bits de Configuración del PIC16F628 46 e) Oscilador interno con resistor f) Oscilador interno con R y salida de CLK Figura 4.2: Configuraciones típicas de reloj para el PIC16F628. MATERIAL Y EQUIPO EMPLEADO Laboratorio equipado con computadoras que tengan instalado el MPLAB versión v7.40 o superior y el WinPic800 v3.55 g. Cantidad Descripción 1 Programador compatible con WinPic800 v3.55 g. 1 Microcontrolador PIC16F628 1 Microinterruptor (1P-1T) 8 Leds o una barra de leds 8 Resistencia de 330 Ω 4 Resistencia de 4.7 kω 1 Resistencia de 1 MΩ 1 Resistencia de 470 kω 1 Resistencia de 100 kω 1 Resistencia de 47 kω 1 Resistencia de 10 kω 1 Resistencia de 1 kω 1 Diodo zener 1N4148 1 Display de cátodo común. 1 Oscilador de 4 MHz 1 Cristal de 4 MHz 2 Capacitores 100pF (pueden ser de 68pF, 27pF, 15pF) 1 Push-button 1 Tableta experimental 1 Osciloscopio 1 Fuente de alimentación de CD Pre-reporte: Leer previamente toda la práctica. Llevar implementado en un protoboard el circuito de la figura 4.13.
Los Bits de Configuración del PIC16F628 47 DESARROLLO I. Bits de configuración del tipo de oscilador El PIC16F628 posee 8 formas de configurar al oscilador. Un circuito RC como oscilador brinda una solución económica. El tipo LP es usado en aplicaciones de bajo consumo. El modo XT es el más empleado y usa un cristal. El HS emplea cristales de alta velocidad. Por último el oscilador interno INTOSC configurable a alta o baja velocidad. Estas configuraciones hacen más flexibles las aplicaciones con este microcontrolador. 1.- Editar el siguiente programa ; Programa que despliega el valor numérico en un display list radix p=16f628 hex W equ 0 F equ 1 pcl equ 02h status equ 03h porta equ 05h portb equ 06h cmcon equ 1fh ; 0-a, 1-b, 2-c, 3-d, 4-e, 5-f, 6-g, 7-punto org 0 goto inicio org 5 inicio otro movlw b'00000111' ; comparadores apagados movwf cmcon ; hablilita pins de i/o bsf status,5 clrw movwf portb decf portb,w movwf porta bcf status,5 movlw 0xFF movwf portb movf porta,w andlw b'00000111'
Los Bits de Configuración del PIC16F628 48 call movwf comf decodifica portb portb,f ; Después de esta línea es donde se agrega la instrucción CLRWDT goto otro decodifica addwf end pcl,f b'00111111' b'00000110' b'01011011' b'01001111' b'01100110' b'01101101' b'01111101' b'00000111' 2. Modificar el circuito del pre-reporte con el circuito de reloj que se muestra en la figura 4.3. Figura 4.3: Circuito de reloj con XTAL. 3.- Al programar el microcontrolador, seleccionar los bits de configuración en la ventana del WinPic800, como lo indica la figura 4.4. Figura 4.4: Bits de configuración para el circuito de la figura 5.3. 4. Energice su circuito y verifique su funcionamiento y explique: qué es lo que hace?
Los Bits de Configuración del PIC16F628 49 5. Reprograme su PIC, pero ahora configure el oscilador con la opción LP (figura 4.5). Figura 4.5: Bits de configuración para circuito de reloj LP. Funciona el circuito? Explique: 6. Modifique su circuito como lo muestra la figura 4.6 y reprograme su PIC eligiendo EXT en configuración de oscilador. Figura 4.6: Circuito de reloj con oscilador externo. 7. Verifique el funcionamiento y explique 8. Modifique el circuito como lo indica la figura 4.7 y reprograme su PIC con la opción de oscilador RC CLKOUT.
Los Bits de Configuración del PIC16F628 50 Figura 4.7: Circuito de reloj con resistencia externa y salida de CLK. 9. Con la ayuda del osciloscopio, visualice la forma de onda en la terminal RA6/OSC2/CLKOUT, cuál es la frecuencia de la señal? _ 10. Repita el paso anterior, modificando los valores de resistencia (R1) con los de la tabla 1 y anote el valor correspondiente de frecuencia. Tabla 4.1. Valores de resistencia del oscilador vs. frecuencia de salida en RA6. Resistencias 1MΩ 470kΩ 100kΩ 47kΩ 10kΩ 1kΩ 1Ω Frecuencia 11. Elimine la resistencia y el capacitor del circuito (figura 4.8), reprograme el oscilador de su PIC a INTRC I/O. Funciona el circuito? Explique:
Los Bits de Configuración del PIC16F628 51 Figura 4.8: Circuito con oscilador interno. Mida con el osciloscopio si hay alguna señal de salida en RA6. Explique. 11. Reprograme el oscilador como INTRC CLKOUT, verifique la señal en la terminal RA6. Cuál es su frecuencia? A qué se debe esto? II. Bit de configuración del reset (MCLR) Cuando la terminal MCLR/VPP (Master Clear) tiene un nivel de tierra, todos los registros del PIC se ponen en estado conocido o en estado de reset. El arreglo típico implica conectar una resistencia de 10 kω a 5 V, un diodo y un pulsador a tierra, de tal forma que cuando se presiona el pulsador el MCU se resetea. 13. Reprograme el PIC con las opciones mostradas en la ventana de la figura 4.9. Oprima el botón del reset del circuito. Qué sucede? Figura 4.9: Configuración de bits del PIC para el inciso 13.
Los Bits de Configuración del PIC16F628 52 Por qué? 14. Reprograme el PIC pero ahora deshabilite la opción MCLR (figura 4.10). Figura 4.10: Configuración de bits del PIC para el inciso 14 15. Repita el paso 13, qué sucedió? Por qué? Es posible resetear el circuito? Explique cómo. III. Bit de configuración LVP El modo de programación de bajo voltaje (LVP) invalida el empleo de alto voltaje para la programación del PIC. Aquí, el dispositivo puede ser programado sin usar 12 V de V PP en RA5. Sin embargo, cuando se utiliza la programación del alto voltaje mientras que el MCU tiene activada la programación de la baja tensión, éste último modo no se elimina. De tal forma si RB4 pasa a alto por cualquier razón durante la programación con alto voltaje, la programación se interrumpirá. 16. Programe los bits de configuración del PIC como lo señala la figura 4.11.
Los Bits de Configuración del PIC16F628 53 Figura 4.11: Configuración de bits del PIC para el inciso 14 17. Energice su circuito y verifique funciona? Por qué? IV. Bit de configuración WDT (Watch Dog Timer) El perro-espía (Watch-dog) tiene como objetivo generar un reset a todo el sistema cuando un contador interno de un byte, que se incrementa con cada instrucción, se desborda. En la configuración por default el Watch-dog reseteará al MCU después de 18 ms transcurridos desde el inicio de ejecución del programa. Este tiempo puede incrementarse utilizando un divisor de frecuencia, con lo que se puede alcanzar rangos de hasta 2.3 segundos. Cuando el WDT está activo, es necesario recargar o reestablecer su cuenta antes de que llegue el desbordamiento y genere un reset. Esto se logra poniendo a 00h su cuenta por software por medio de las instrucciones clrwdt o sleep. 18. Programe el circuito, como se observa en la ventana de l a figura 4.12. Figura 4.12: Configuración de bits del PIC para el inciso 18.
Los Bits de Configuración del PIC16F628 54 19. Mueva los interruptores de tal forma que todos estén en 1 lógico, monte de nuevo el PIC y energice el circuito. Funcionó? Por qué? 20. Agregue la instrucción clrwdt justo arriba del goto. Ensamble el programa y descárguelo en el PIC? 21.- Repita el paso 19. Funciona el circuito? Por qué? Figura 4.13: Circuito decodificador de 7 segmentos con PIC.