Ir al contenido

Config bits y palabra de configuracion

La palabra de configuracion (tambien llamada config bits o fuses) fija opciones de hardware que el PIC aplica al encender, antes de ejecutar tu programa: que oscilador usa, si el watchdog esta activo, como se comporta MCLR, si los puertos arrancan digitales, etc.

Esta pagina cierra el bloque de Fundamentos junto con Ensamblador MPASM: alli viste CONFIG al inicio del .ASM y el estilo sandwich; aqui entiendes que es la palabra de configuracion, que significa cada bit y como se relaciona con el sistema minimo del laboratorio UNEXPO.

En el curso oiras palabra de configuracion, config bits y fuses — son la misma idea con nombres distintos: un bloque de bits fijos que le dice al PIC como arrancar antes de que corra tu programa:.

La palabra de configuracion no son instrucciones que el CPU ejecuta con MOVLW, GOTO ni CALL. Es un paquete de interruptores de hardware grabado en una zona especial del chip:

Palabra de configuracionTu programa en Flash
Que esBits de arranque (oscilador, WDT, MCLR…)Instrucciones que el CPU ejecuta
Cuando actuaAl encender o tras resetLinea por linea mientras corre
Lo defines conDirectivas CONFIG en el .ASMCodigo bajo ORG / etiquetas
Cambia en runtimeNo (salvo reprogramar el chip)Si — tu codigo modifica SFR

Piensalo como la configuracion de fabrica del escenario: el cristal, el reset y el watchdog se deciden antes del main; luego tu Ensamblador actua sobre Registros (TRISB, LATB…).

Paso 2 — La escribes con CONFIG en el .ASM

Sección titulada «Paso 2 — La escribes con CONFIG en el .ASM»

Cada linea CONFIG fija una parte de la palabra. MPASM traduce el nombre (FOSC, WDT…) y el valor (HS, OFF…) al bit concreto del PIC18F4550:

CONFIG FOSC = HS ; parte de la palabra: oscilador alta velocidad
CONFIG WDT = OFF ; parte de la palabra: watchdog apagado
CONFIG LVP = OFF ; parte de la palabra: RB5 libre

No es un literal dentro de una instruccion (como MOVLW D'10'). Es una directiva: le habla al ensamblador, no al CPU en ejecucion.

Al compilar, el .HEX lleva dos cosas:

Archivo .HEX
├── Codigo de programa (Flash ejecutable)
└── Palabra de configuracion (bits de arranque)

Por eso en MPLAB y Proteus cargas un solo .HEX: Proteus y el programador graban programa y palabra de configuracion juntos. Si falta el bloque CONFIG, el chip puede usar valores por defecto distintos a los del laboratorio.

Secuencia al aplicar 5 V:

Enciendes alimentacion (POR)
↓ PWRT (si CONFIG PWRT = ON)
El PIC lee la palabra de configuracion
↓ FOSC, WDT, PBADEN, MCLRE… quedan fijos
PC = 0000H → ejecuta ORG 0x0000
GOTO programa ; salto al main
; ...
programa: ; destino — tu codigo empieza aqui

Si el programa “no arranca”, revisa palabra + hardware antes de depurar LATB: alimentacion → cristal/FOSC → MCLR/MCLRELVP/PBADEN → recien el codigo.

ConceptoExplicacion
Palabra de configuracionEl bloque completo de bits de arranque
Config bits / fusesCada bit (o grupo) dentro de esa palabra
Directiva CONFIGComo escribes esos bits en el .ASM
Memoria de configuracionDonde se graba en el chip (no es Flash ejecutable)

Piensa en los config bits como interruptores de fabrica que eliges una vez al compilar/grabar. Si WDT = ON y tu programa nunca hace CLRWDT, el PIC se reiniciara solo aunque tu codigo no tenga errores aparentes.

Va en la capa de arriba, despues de LIST e #include, antes del vector de reset y del codigo — igual que viste en Ensamblador — anatomia:

; ══ ARRIBA — cabecera + palabra de configuracion ═══════
LIST P=18F4550
#include <P18F4550.INC>
CONFIG FOSC = HS
CONFIG WDT = OFF
CONFIG LVP = OFF
CONFIG MCLRE = ON
CONFIG PBADEN = OFF
CONFIG BOR = OFF
CONFIG PWRT = ON
; ── Vector de reset ───────────────────────────────────
ORG 0x0000
GOTO programa ; salto al main (abajo)
; ══ MEDIO — subrutinas (si las hay) ═══════════════════
; ...
; ══ ABAJO — programa principal ════════════════════════
programa:
BCF TRISB, 0
BSF LATB, 0
bucle:
GOTO bucle ; salto → destino bucle: (linea anterior)
END

En MPLAB v8 tambien puedes editarlos con Configure → Configuration Bits, pero en el curso UNEXPO lo habitual es declararlos en el .ASM para que el informe y el .HEX coincidan.

Selecciona de donde sale el reloj que marca la velocidad de ejecucion.

Valor tipicoSignificadoEn el curso
HSHigh-Speed — cristal externo (4–20 MHz+)Usar con cristal de 20 MHz
XTCristal de baja/media velocidadMenos comun en F4550
INTIO / RCOscilador internoSin cristal externo
EC / ECMClock externo por pinCasos especiales

Con FOSC = HS debes montar el cristal + condensadores del sistema minimo. Sin cristal (o mal cableado), el PIC no ejecuta instrucciones a la velocidad esperada — o no arranca.

Con cristal de 20 MHz en HS (curso UNEXPO):

MagnitudValor tipicoFormula / nota
Fosc20 MHzFrecuencia del oscilador (cristal)
Tcy (ciclo de instruccion)200 nsTcy = 4 / Fosc = 4 / 20 MHz
MIPS (orden de magnitud)~51 / Tcy en millones de instrucciones/s

Esa Fosc la fija la palabra de configuracion (FOSC = HS) y el cristal fisico — deben coincidir. En Proteus y en la placa, el reloj del PIC debe reflejar 20 MHz si usas esta plantilla.

ValorEfecto
OFFWatchdog desactivado — recomendado al aprender
ONSi no reseteas el WDT con CLRWDT a tiempo, el PIC hace reset

En practicas de aprendizaje casi siempre WDT = OFF. Si lo dejas ON y olvidas CLRWDT en bucles largos, el programa “se reinicia solo” y parece un bug misterioso.

ValorEfecto
OFFProgramacion normal; RB5 queda libre como GPIO
ONModo programacion de bajo voltaje — RB5 reservado para programar

En laboratorio UNEXPO usa LVP = OFF. Con LVP = ON, RB5 puede no comportarse como esperas en tu circuito.

ValorEfecto
ONPin MCLR activo como reset (con pull-up externo)
OFFMCLR puede funcionar como pin digital (menos comun en curso)

Con MCLRE = ON conectas 10 kΩ de MCLR a VDD y pulsador a GND para reset manual — parte del sistema minimo.

PBADEN — puertos A/B analogicos al arranque

Sección titulada «PBADEN — puertos A/B analogicos al arranque»
ValorEfecto
OFFRA0–RA3 y RB0–RB4 arrancan como digitales
ONEsos pines pueden arrancar en modo analogico

Para GPIO y primer LED usa PBADEN = OFF. Si esta ON, leer/escribir pines puede fallar hasta que configures ADCON1 — error tipico en practicas.

ValorEfecto
OFFNo reset automatico por caida de VDD
ONReset si el voltaje de alimentacion baja demasiado

En muchos montajes del curso BOR = OFF. Con ON, variaciones de la fuente 5 V pueden provocar resets inesperados.

ValorEfecto
ONRetardo corto al encender para que la alimentacion se estabilice
OFFSin retardo extra

PWRT = ON es una buena practica junto al cristal HS y condensadores de desacople.

Bloque listo para copiar en la capa superior de todos tus .ASM:

CONFIG FOSC = HS ; Cristal externo alta velocidad
CONFIG WDT = OFF ; Sin watchdog (aprendizaje)
CONFIG LVP = OFF ; RB5 libre; programacion normal
CONFIG MCLRE = ON ; Reset por MCLR habilitado
CONFIG PBADEN = OFF ; Puertos digitales al inicio
CONFIG BOR = OFF ; Sin brown-out reset
CONFIG PWRT = ON ; Retardo al encender

Sistema minimo — hardware que acompana los config bits

Sección titulada «Sistema minimo — hardware que acompana los config bits»

Los config bits no sustituyen el circuito. Con FOSC = HS y MCLRE = ON necesitas el montaje del Tema 2 (UNEXPO):

ComponenteValor tipicoFuncion
PIC18F4550Microcontrolador
Cristal20 MHzReloj principal (con FOSC = HS)
Condensadores cristalC1, C2 a tierra (consulta hoja de datos / practica)Carga del oscilador — ver diagrama del Tema 2
Pull-up MCLR10 kΩ a VDDReset estable (MCLRE = ON)
Pulsador resetEntre MCLR y GNDReset manual
Alimentacion5 V (VDD/VSS)VDD y VSS del PIC
Desacople100 nF (0,1 µF) cerca del PICFiltra ruido en VDD
Diagrama del sistema minimo PIC18F4550 del Tema 2: cristal, C1/C2, MCLR con 10 kΩ y pulsador, VDD y VSS
Sistema minimo segun la clase Tema 2: cristal entre OSC1/OSC2 con C1 y C2 a tierra, pull-up de 10 kΩ en MCLR, pulsador de reset y alimentacion +5 V en VDD/VSS. — Clase Tema 2 y 3 — Arquitectura del PIC (UNEXPO · Prof. Ing. Yoel Pire)

Relacion con Ensamblador — ejemplo LED: el .ASM configura software (TRISB, LATB); los config bits y el cristal configuran hardware para que ese software pueda ejecutarse.

Practica · UNEXPO

Pre-laboratorio Practica 1

Investiga la conexion del sistema minimo, explica los puertos del PIC18F4550 y dibuja el diagrama electronico incluyendo cristal, MCLR y condensadores antes de montar en protoboard. Anota en el diagrama que FOSC = HS y MCLRE = ON.

El PIC puede reiniciarse por varias causas. Los config bits controlan algunas; otras vienen del hardware o del codigo:

TipoCausaRelacion con config bits
Power-On Reset (POR)Se enciende VDDSiempre ocurre al alimentar
Power-up Timer (PWRT)Retardo tras PORPWRT = ON/OFF
MCLRPulso bajo en pin MCLRMCLRE = ON
Watchdog (WDT)WDT no reseteado a tiempoWDT = ON + falta de CLRWDT
Brown-Out (BOR)VDD cae bajo umbralBOR = ON/OFF
Reset por softwareInstruccion RESETDesde tu codigo

Flujo mental al encender:

Enciendes 5 V
↓ POR (+ PWRT si ON)
Config bits aplicados (FOSC, PBADEN…)
PC = 0x0000 → GOTO inicio (tu ORG)

Si el programa “no arranca”, revisa en este orden: alimentacion y desacople → cristal y FOSC → MCLR y MCLRELVP/PBADEN → recien despues el codigo en Flash.

Config bitsRegistros SFR (TRISB, INTCON…)
Cuando se aplicanAl encender / tras resetEn cada instruccion de tu programa
Donde se definenDirectivas CONFIG en .ASMInstrucciones en tiempo de ejecucion
Cambian en runtimeNo (salvo reprogramar el chip)Si, tu codigo los modifica
EjemploFOSC = HSBCF TRISB, 0

Los config bits preparan el escenario; tu programa Ensamblador actua sobre registros una vez el PIC ya esta corriendo.

Ejercicio · Parcial

Diagnostica el problema

Un companero graba este .ASM con cristal de 20 MHz montado correctamente, pero RB0 nunca cambia y el simulador en Proteus tampoco avanza bien:

CONFIG FOSC = INTIO
CONFIG WDT = ON
CONFIG PBADEN = ON

Posibles causas:

  1. FOSC = INTIO — el codigo espera cristal externo HS, pero el config dice oscilador interno → reloj incoherente con el hardware.
  2. WDT = ON — si no hay CLRWDT, reset continuo.
  3. PBADEN = ON — RB0 puede estar en modo analogico al inicio → GPIO digital falla.

Correccion tipica del curso:

CONFIG FOSC = HS
CONFIG WDT = OFF
CONFIG PBADEN = OFF
  • Olvidar el bloque CONFIG: el .HEX puede usar valores por defecto distintos a los del laboratorio.
  • FOSC incorrecto: cristal montado pero FOSC = INTIO (o al reves) → no hay reloj estable.
  • WDT = ON sin CLRWDT: el PIC se resetea solo en bucles.
  • LVP = ON: RB5 reservado para programacion — conflictos en protoboard.
  • PBADEN = ON: pines “muertos” como digital hasta configurar ADC/analogico.
  • Confundir CONFIG con codigo: las lineas CONFIG no reemplazan BCF TRISB, 0 ni encienden LEDs por si solas.
  • Cristal sin condensadores: aun con FOSC = HS, el oscilador puede no arrancar.

¿Que es la palabra de configuracion?

El bloque de bits de arranque que fija oscilador, WDT, MCLR, modo de pines al encender, etc. Se define con CONFIG en el .ASM y se graba con el .HEXno es codigo ejecutable.

¿Donde se graban los config bits?

En la memoria de configuracion del PIC, no en la zona ejecutable normal de Flash.

¿Que hace CONFIG WDT = OFF?

Desactiva el watchdog timer para que el PIC no se reinicie solo por timeout del WDT.

¿Por que FOSC = HS con cristal de 20 MHz?

Selecciona el modo de oscilador de alta velocidad para cristal externo, coherente con el sistema minimo del curso.

¿Que problema causa PBADEN = ON en un primer programa GPIO?

Varios pines de PORTA/PORTB pueden iniciar como analogicos, impidiendo lectura/escritura digital correcta.

Examen interactivo

Configuration bits

Basado en: PIC18LF4455-I-PT.PDF

0 de 0 respondidas

CONFIG WDT = OFF desactiva...
FOSC = HS selecciona oscilador...
Las directivas CONFIG en MPASM se graban en...
CONFIG LVP = OFF en el laboratorio UNEXPO permite...
CONFIG PBADEN = OFF hace que al encender...
CONFIG MCLRE = ON requiere en el sistema minimo...
Si WDT = ON y nunca ejecutas CLRWDT, el PIC...
CONFIG PWRT = ON introduce...
El cristal de 20 MHz del curso va con CONFIG...
Los config bits se aplican principalmente...
La palabra de configuracion en el .HEX es...
Con FOSC = HS y cristal de 20 MHz, un ciclo de instruccion dura aprox...