44 Los Bits de Configuración del PIC16F628 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. Eduardo Romero A. Laboratorio de Sistemas Digitales III 45 Los Bits de Configuración del PIC16F628 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 VDD, 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 c) Oscilador interno Eduardo Romero A. b) EXT d) Oscilador interno con salida de CLK Laboratorio de Sistemas Digitales III 46 Los Bits de Configuración del PIC16F628 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 1 1 1 8 8 4 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 Descripción Programador compatible con WinPic800 v3.55 g. Microcontrolador PIC16F628 Microinterruptor (1P-1T) Leds o una barra de leds Resistencia de 330 Ω Resistencia de 4.7 kΩ Resistencia de 1 MΩ Resistencia de 470 kΩ Resistencia de 100 kΩ Resistencia de 47 kΩ Resistencia de 10 kΩ Resistencia de 1 kΩ Diodo zener 1N4148 Display de cátodo común. Oscilador de 4 MHz Cristal de 4 MHz Capacitores 100pF (pueden ser de 68pF, 27pF, 15pF) Push-button Tableta experimental Osciloscopio 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. Eduardo Romero A. Laboratorio de Sistemas Digitales III 47 Los Bits de Configuración del PIC16F628 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 F equ equ 0 1 pcl status porta portb cmcon equ equ equ equ equ 02h 03h 05h 06h 1fh ; 0-a, 1-b, 2-c, 3-d, 4-e, 5-f, 6-g, 7-punto org goto org 0 inicio 5 movlw movwf bsf clrw movwf decf movwf bcf movlw movwf b'00000111' cmcon status,5 movf andlw porta,w b'00000111' inicio ; comparadores apagados ; hablilita pins de i/o portb portb,w porta status,5 0xFF portb otro Eduardo Romero A. Laboratorio de Sistemas Digitales III 48 Los Bits de Configuración del PIC16F628 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 retlw retlw retlw retlw retlw retlw retlw retlw 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? ________________________________________________________________________ Eduardo Romero A. Laboratorio de Sistemas Digitales III 49 Los Bits de Configuración del PIC16F628 ________________________________________________________________________ 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. Eduardo Romero A. Laboratorio de Sistemas Digitales III 50 Los Bits de Configuración del PIC16F628 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 Frecuencia 1MΩ 470kΩ 100kΩ 47kΩ 10kΩ 1kΩ 1Ω 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: ________________________________________________________________________ ________________________________________________________________________ Eduardo Romero A. Laboratorio de Sistemas Digitales III 51 Los Bits de Configuración del PIC16F628 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. Figura 4.9: Configuración de bits del PIC para el inciso 13. ¿Qué sucede? _______________________________________________________________________ Eduardo Romero A. Laboratorio de Sistemas Digitales III 52 Los Bits de Configuración del PIC16F628 ¿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 VPP 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. Eduardo Romero A. Laboratorio de Sistemas Digitales III 53 Los Bits de Configuración del PIC16F628 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. Eduardo Romero A. Laboratorio de Sistemas Digitales III 54 Los Bits de Configuración del PIC16F628 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. Eduardo Romero A. Laboratorio de Sistemas Digitales III