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.
Que es la palabra de configuracion
Sección titulada «Que es la palabra de configuracion»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:.
Paso 1 — Un grupo de bits, no un programa
Sección titulada «Paso 1 — Un grupo de bits, no un 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 configuracion | Tu programa en Flash | |
|---|---|---|
| Que es | Bits de arranque (oscilador, WDT, MCLR…) | Instrucciones que el CPU ejecuta |
| Cuando actua | Al encender o tras reset | Linea por linea mientras corre |
| Lo defines con | Directivas CONFIG en el .ASM | Codigo bajo ORG / etiquetas |
| Cambia en runtime | No (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 libreNo es un literal dentro de una instruccion (como MOVLW D'10'). Es una directiva: le habla al ensamblador, no al CPU en ejecucion.
Paso 3 — MPASM la empaqueta en el .HEX
Sección titulada «Paso 3 — MPASM la empaqueta en el .HEX»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.
Paso 4 — El PIC la aplica al encender
Sección titulada «Paso 4 — El PIC la aplica al encender»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 aquiSi el programa “no arranca”, revisa palabra + hardware antes de depurar LATB: alimentacion → cristal/FOSC → MCLR/MCLRE → LVP/PBADEN → recien el codigo.
Conceptos clave — nombres equivalentes
Sección titulada «Conceptos clave — nombres equivalentes»| Concepto | Explicacion |
|---|---|
| Palabra de configuracion | El bloque completo de bits de arranque |
| Config bits / fuses | Cada bit (o grupo) dentro de esa palabra |
Directiva CONFIG | Como escribes esos bits en el .ASM |
| Memoria de configuracion | Donde 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.
Donde va en el estilo sandwich del .ASM
Sección titulada «Donde va en el estilo sandwich del .ASM»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, 0bucle: GOTO bucle ; salto → destino bucle: (linea anterior)
ENDEn 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.
Cada config bit en detalle
Sección titulada «Cada config bit en detalle»FOSC — fuente de reloj (oscilador)
Sección titulada «FOSC — fuente de reloj (oscilador)»Selecciona de donde sale el reloj que marca la velocidad de ejecucion.
| Valor tipico | Significado | En el curso |
|---|---|---|
HS | High-Speed — cristal externo (4–20 MHz+) | Usar con cristal de 20 MHz |
XT | Cristal de baja/media velocidad | Menos comun en F4550 |
INTIO / RC | Oscilador interno | Sin cristal externo |
EC / ECM | Clock externo por pin | Casos 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):
| Magnitud | Valor tipico | Formula / nota |
|---|---|---|
| Fosc | 20 MHz | Frecuencia del oscilador (cristal) |
| Tcy (ciclo de instruccion) | 200 ns | Tcy = 4 / Fosc = 4 / 20 MHz |
| MIPS (orden de magnitud) | ~5 | 1 / 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.
WDT — Watchdog Timer
Sección titulada «WDT — Watchdog Timer»| Valor | Efecto |
|---|---|
OFF | Watchdog desactivado — recomendado al aprender |
ON | Si 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.
LVP — Low Voltage Programming
Sección titulada «LVP — Low Voltage Programming»| Valor | Efecto |
|---|---|
OFF | Programacion normal; RB5 queda libre como GPIO |
ON | Modo 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.
MCLRE — pin MCLR / reset
Sección titulada «MCLRE — pin MCLR / reset»| Valor | Efecto |
|---|---|
ON | Pin MCLR activo como reset (con pull-up externo) |
OFF | MCLR 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»| Valor | Efecto |
|---|---|
OFF | RA0–RA3 y RB0–RB4 arrancan como digitales |
ON | Esos 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.
BOR — Brown-Out Reset
Sección titulada «BOR — Brown-Out Reset»| Valor | Efecto |
|---|---|
OFF | No reset automatico por caida de VDD |
ON | Reset 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.
PWRT — Power-up Timer
Sección titulada «PWRT — Power-up Timer»| Valor | Efecto |
|---|---|
ON | Retardo corto al encender para que la alimentacion se estabilice |
OFF | Sin retardo extra |
PWRT = ON es una buena practica junto al cristal HS y condensadores de desacople.
Resumen — plantilla del curso (20 MHz)
Sección titulada «Resumen — plantilla del curso (20 MHz)»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 encenderSistema 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):
| Componente | Valor tipico | Funcion |
|---|---|---|
| PIC18F4550 | — | Microcontrolador |
| Cristal | 20 MHz | Reloj principal (con FOSC = HS) |
| Condensadores cristal | C1, C2 a tierra (consulta hoja de datos / practica) | Carga del oscilador — ver diagrama del Tema 2 |
| Pull-up MCLR | 10 kΩ a VDD | Reset estable (MCLRE = ON) |
| Pulsador reset | Entre MCLR y GND | Reset manual |
| Alimentacion | 5 V (VDD/VSS) | VDD y VSS del PIC |
| Desacople | 100 nF (0,1 µF) cerca del PIC | Filtra ruido en VDD |
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.
Tipos de reset en el PIC18
Sección titulada «Tipos de reset en el PIC18»El PIC puede reiniciarse por varias causas. Los config bits controlan algunas; otras vienen del hardware o del codigo:
| Tipo | Causa | Relacion con config bits |
|---|---|---|
| Power-On Reset (POR) | Se enciende VDD | Siempre ocurre al alimentar |
| Power-up Timer (PWRT) | Retardo tras POR | PWRT = ON/OFF |
| MCLR | Pulso bajo en pin MCLR | MCLRE = ON |
| Watchdog (WDT) | WDT no reseteado a tiempo | WDT = ON + falta de CLRWDT |
| Brown-Out (BOR) | VDD cae bajo umbral | BOR = ON/OFF |
| Reset por software | Instruccion RESET | Desde 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 MCLRE → LVP/PBADEN → recien despues el codigo en Flash.
Config bits vs registros SFR
Sección titulada «Config bits vs registros SFR»| Config bits | Registros SFR (TRISB, INTCON…) | |
|---|---|---|
| Cuando se aplican | Al encender / tras reset | En cada instruccion de tu programa |
| Donde se definen | Directivas CONFIG en .ASM | Instrucciones en tiempo de ejecucion |
| Cambian en runtime | No (salvo reprogramar el chip) | Si, tu codigo los modifica |
| Ejemplo | FOSC = HS | BCF 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 = ONPosibles causas:
FOSC = INTIO— el codigo espera cristal externo HS, pero el config dice oscilador interno → reloj incoherente con el hardware.WDT = ON— si no hayCLRWDT, reset continuo.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 = OFFErrores comunes
Sección titulada «Errores comunes»- Olvidar el bloque
CONFIG: el.HEXpuede usar valores por defecto distintos a los del laboratorio. FOSCincorrecto: cristal montado peroFOSC = INTIO(o al reves) → no hay reloj estable.WDT = ONsinCLRWDT: 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
CONFIGno reemplazanBCF TRISB, 0ni encienden LEDs por si solas. - Cristal sin condensadores: aun con
FOSC = HS, el oscilador puede no arrancar.
Preguntas tipo parcial
Sección titulada «Preguntas tipo parcial»¿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 .HEX — no 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.
Configuration bits
Basado en: PIC18LF4455-I-PT.PDF
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS