Post on 19-Jul-2015
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 1
Palabra de configuración
Cuando programamos un microcontrolador debemos indicarle si vamos a utilizar las siguientes
condiciones.
1. Tipo de reloj:
Cristal de baja, media o alta frecuencia conocidos como: LP, XT y HS respectivamente.
Red RC.
Ninguno de los anteriores, valido en el 628A.
2. El uso del WDTE (Watch Dog Timer Enable), me indica si una rutina se cicla de manera infinita y por la habilitación de este, el microcontrolador se activa el reset.
3. El uso de PWRTE (Power up Timer Enable) para que se obligue al reset activarse al alimentarse el microcontrolador.
4. El CP (Code Protection), que sirve para proteger la memoria de programa y no pueda leerse su
contenido.
En ambos microcontroladores existe una dirección de memoria en la que se almacena esta
configuración y es conocida como Configuration Word. A continuación se describe el uso de las
hojas de datos de ambos micros para entender su código resultante.
Abrimos la hoja de datos del 84A y en buscar colocamos PIC16F84A CONFIGURATION WORD
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 2
A continuación aparece lo siguiente:
Es el registro de configuración y la posición de los bits para encontrar la palabra que permita al
micro funcionar de una manera adecuada a nuestras necesidades. La ubicación en la memoria de
programa es la dirección 2007H.
Esto se resume de la siguiente manera, si coloco la palabra 0x3FF1 como configuración del micro,
significa que…
Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1 1 1 1 1 1 1 1 1 1 0 0 0 1
3
F
F
1
Bit’s 4-13 para protección de código, en este caso deshabilitado con 1
Bit 3 para PWRTE, en este caso habilitado con 0
Bit 2 para el WDTE, en este caso deshabilitado con 0
Bit’s 1 y 0 contienen 0 y 1 respectivamente, indicando el uso de un XT de mediana velocidad
100KHz-4MHz (ver hoja de datos)
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 3
Así, el micro utilizará un cristal de 4MHz de velocidad, no está protegido su programa, no está habilitado el perro guardián y cada vez que se energice se resetea el micro.
Pero ¿Cómo coloco esa palabra de configuración en el micro?
Existen dos formas, una es por medio del programa fuente y la otra en el programador.
Programa fuente
Después de radix coloque __config 0x3FF9
Ejemplo:
List p=16f84a ; indica librería del micro utilizado
radix hex ; indica que se utilizará sistema hexadecimal
__config 0x3FF1
Palabra de configuración del micro utilizando cristal de 4 MHz, Watchdog y protección de código
deshabilitados y Power up Timer habilitado
Programador
El programa fuente al no contener palabra de configuración puede marcar error o warning al leer su
código.hex. No pasa nada, lo único que hay que hacer es lo siguiente:
Abrir el cargador de programa y ver la siguiente interfaz (Win Pic800)
Dar click en config
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 4
A continuación aparecerá la siguiente ventana.
Seleccionamos para habilitar XT y PWRT, la palabra config es 0x3FF1.
Ahora lo haremos para el 628A. Repetimos el procedimiento de la hoja de datos y el registro de configuración.( en buscar colocar
CONFIGURATION WORD REGISTER)
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 5
A detalle el registro indica.
La palabra de configuración es diferente, indicando además de los del 84A : CP, LVP,BOREN y MCLREN
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 6
Esto se resume de la siguiente manera, si coloco la palabra 0x3F18 como configuración del micro, significa que… Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1 1 1 1 1 1 0 0 0 1 1 0 0 0
3
F
1
8
Bit 13 para protección de código, en este caso deshabilitado con 1
Bit 12-9 se leen como 0, no importa escribir 1’s o 0’s no están implementados
Bit 8 Data Code Protection bitDTE, en este caso deshabilitado con 1
Bit 7 Low Voltage Programming Enable bit tiene 0, indica que RB4 funciona como entrada y salida
digital y un voltaje de programación alto voltaje es aplicado a la entrada MCLR.
Bit 6 Brown out Reset Enable es un nivel de referencia de voltaje sobre el que se compara con el Vdd, si Vdd cae debajo de BOR el micro se resetea y se mantendrá así hasta 72 ms después que el Vdd suba el BOR. En este caso BOREN esta deshabilitado con 0.
Bit 5 MCLRE en 0 permite que RA5 sea una entrada digital e internamente el MCLR esta conectado a Vdd.
Bit 3 PWRT esta deshabilitado con 1
Bit 2 WDTE esta deshabilitado con 0
Bit’s 4,1 y 0 tienen 100 indicando que utilizaremos el reloj interno del micro a 4MHz permite además que RA6 Y RA7 funcionen como entrada y salida digital.
Programa fuente Agregar __config 0x3F18
Programador
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 7
Anexo 1
Con el PICKit 2 programmer
Cibernética y Mecatrónica Microcontroladores Escuela de Ingeniería Ing. Rafael Durán Campoamor
Universidad La Salle Cuernavaca 25/07/2011 Página 8
Anexo 2
Ejemplo de programa
list P=16f628a radix hex __config 0x3F18 ;palabra de configuracion del micro para trabajar sin xtal cmcon equ 0x1f ;registro que configura pines del ptoa como I/O estado equ 0x03 ;estado=STATUS=03h porta equ 0x05 ;porta=PORTA=05h trisa equ 0x05 ;trisa=TRISA=05h reg1 equ 0x20 ;reg1=0Ch reg2 equ 0x21 ;reg2=0Dh reg3 equ 0x22 ;reg3=0Eh ;-------condicion del vector de reset---------------------- reset org 0x00 ;indicamos vector de reset en dirección 0000h goto inicio ;indicamos salto a inicio de programa org 0x05 ;inicio de programa en 0x05 ;-------inicio del programa-------------------------------- inicio movlw 0x07 ;dato a cargar en w movwf cmcon ;mueve el dato de w a registro cmcon bsf estado,5 ;cambia al banco 1 de la memoria de datos bcf trisa,1 ;configura puerto RA0 como salida bcf estado,5 ;regresa al banco 0 de la memoria de datos clrf porta ;inicializa el pto A en 0 ciclo bsf porta,1 ;pone el bit 1 del pto A a 1 RA1=1 call retardo ;llama a retardo bcf porta,1 ;pone el bit 1 del pto A a 0 RA1=0 call retardo ;llama a retardo goto ciclo ;regresa a ciclo ;-----retardo de 500 ms para completar revolución retardo movlw 0x05 ; mueve el 5 al w movwf reg1 ; mueve el contenido de w a reg1 del3 movlw 0x79 ; mueve 79h a w movwf reg2 ; mueve w a reg2 del2 movlw 0xff ; mueve ffh a w movwf reg3 ; mueve w a reg3 del1 decfsz reg3,1 ;decrementa en 1 a reg3 y lo almacena ahí verificando si es 0 goto del1 ;si reg3 no es 0 ejecuta esta línea decfsz reg2,1 ; si reg3 es 0 ejecuta esta línea y hace lo mismo que a reg3 goto del2 ;si reg2 no es 0 ejecuta esta línea decfsz reg1,1 ; si reg2 es 0 ejecuta esta línea y hace lo mismo que a reg3 goto del3 ; si reg1 no es 0 ejecuta esta línea return ; si reg1 es 0 ejecuta esta línea y sale de la subrutina retardo end