Palabra de configuración

8
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

Transcript of Palabra de configuración

Page 1: Palabra de configuración

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

Page 2: Palabra de configuración

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)

Page 3: Palabra de configuración

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

Page 4: Palabra de configuración

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)

Page 5: Palabra de configuración

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

Page 6: Palabra de configuración

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

Page 7: Palabra de configuración

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

Page 8: Palabra de configuración

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