You are on page 1of 6

Tutorial de configuracin de Fusibles para AVR.

A lo que llama ATMEL como fusibles o fuses son aquellas localidades a las que se puede acceder
para determinar ciertas caractersticas del microcontrolador, p.e:

Proteger el cdigo
Habilitar el WatchDog
Habilitar el modo de programacin
Habilitar si se va ha trabajar con cristal externo, oscilador, etc.

Antes de comenzar es preciso especificar los dos fusibles que existen Hfuse y Lfuse (High Fuse y
Low Fuse). Los cuales encontramos en las hojas de datos de cada dispositivo. En la seccin
Memory Programmin, hay dos tablas que especifican los bits de Hfuse y Lfuse, que pueden
variar entre un dispositivo y otro.
Algunos Softwares no piden el valor de Hfuse y Lfuse, en lugar de ello piden directamente el valor
de cada bit por lo que se muestran aqu los valores.
Nota: Un CERO indica que el bit esta habilitado, un UNO indica que el bit esta deshabilitado (lgica
inversa), para las casillas el CERO es y el UNO es . Y las tablas mostradas tienen los valores de
fbrica de cada dispositivo.
Los bits destacados en amarillo no es recomendable alterarlos y mas adelante se explica porque.
Para el caso del ATMEGA48,
ATMEGA88 y ATMEGA138
Bit
LowFuse
No

Para el caso del ATMEGA8, ATMEGA8515 y


ATMEGA8535
Bit
LowFuse
HighFuse
No

HighFuse

CHKDIV8

RSTDISBL

BODLEVEL

RSTDISBL/S85xxC

CKOUT

DWEN

BODEN

WDTON

SUT1

SPIEN

SUT1

SPIEN

SUT0

WDTON

SUT0

CKOPT

CKSEL3

EESAVE

CKSEL3

EESAVE

CKSEL2

BODLEVEL2

CKSEL2

BOOTSZ1

CKSEL1

BODLEVEL1

CKSEL1

BOOTSZ0

CKSEL0

BODLEVEL0

CKSEL0

BOOTRST

HFuse=0xDF
LFuse=0x62

HFuse=0xD9
LFuse=0xE1

Ntese que algunos bits de cada tabla varan, a continuacin se explican todos los bits en general
para las dos tablas. Las tablas para otro componente de la familia AVR se encuentran en sus hojas
de datos.
Pgina 1

Programar los bits de Hfuse.


El valor de los bits RSTDISBL=1 (Deshabilitado de RESET) y DWEN=1 (Debug WIRE Enable),
especificado de fbrica, si se alteran estos valores poniendo un 0, ya no se va a poder comunicar
con el microcontrolador ya que requiere un modo de programacin llamado de alto voltaje.
El pin 1, para el caso del ATMEGA8, ATMEGA48, ATMEGA88 y ATMEGA138, es pin de RESET, pero
tambin es el PC6, el cual casi nunca se utiliza como entrada o salida, su funcin normalmente es
la de RESET, si queremos utilizar este pin como parte del puerto C, entonces hay que habilitar el
RSTDISBL, con un 0 (recordemos que el cero habilita el bit), esto implica que el microcontrolador
ya no podr ser reprogramado ya que deshabilitado el RESET es imposible comunicarse con el.
El microcontrolador utiliza las terminales SPI (MOSI, MISO y SCK), para programarlo, por lo cual el
bit SPIEN=0, esto significa que esta habilitado en este modo.
WDTON (watch dog o perro guardin), es un timer de vigilancia el cual al llegar a su cuenta
mxima provoca un RESET. Entonces en el programa se ponen ciertas instrucciones de refresco las
cuales reinicializan al timer para evitar que llegue a su cuenta mxima. Este sistema se utiliza
donde existe el ruido elctrico o algn elemento que pueda ciclar al microcontrolador. El valor por
defecto de fabrica para WDTON=1, para mantenerlo deshabilitado, si cambiamos este valor
asignando un 0 y no ponemos las instrucciones de refresco el microcontrolador se estar ejecutara
un RESET constantemente.
As que el valor de WDTON=1 amenos que la aplicacin lo requiera.
El bit CKOPT=1 (Opciones del Oscilador), el valor de este bit depende de los bits CKSEL3, CKSEL2,
CKSEL1 y CKSEL0, que se encuentran en Lfuse.
El bit S85XXC (solo para el caso ATMEGA8515 y ATMEGA8535), habilita un modo de
compatibilidad con sus predecesores el AT90S8515 y el AT90S8535.
Para todas las programaciones de Hfuse debe quedar as: RSTDISBL=1, DWEN=1, SPIEN=0,
WDTON=1 (tal como se muestran los valores resaltados en amarillo), al menos en la parte alta de
Hfuse.
Al programar al microcontrolador se hace un borrado de la memoria FLASH y de la memoria
EEPROM ya que al reprogramar al microcontrolador ya no nos interesa lo que hay en ninguna de
las dos memorias, pero si queremos conservar los datos de la EEPROM entonces se debe poner el
bit EESAVE=0, el valor de fabrica en EESAVE=1.
BODLEVEL2=1, BODLEVEL1=1 y BODLEVEL0=1, (solo para el ATMEGA48, ATMEGA88 y
ATMEGA138), estos bits son para generar un RESET por bajo voltaje. Esto es muy importante
porque si el voltaje de suministro del microcontrolador baja considerablemente se pueden alterar
las localidades de la memoria EEPROM y puede provocar que se ejecute instrucciones errneas de
cdigo.

Pgina 2

Siempre es importante modificar el BODLEVEL al voltaje que mas convenga y sobretodo cuando
se este utilizando la EEPROM interna.
En la siguiente tabla se muestran los valores para modificar los bits de BODLEVEL.
BODLEVEL 2:0 Fuses
111
110
101
100
011
010
001
000

Min VBOT

Typ VBOT

1.7
2.5
4.1

1.8
2.7
4.3

Max VBOT

Units

BOD Disabled
2.0
2.9
4.5

Reserved

De la tabla anterior vemos que si estamos trabajando con 5V, nos conviene poner los valores de
los bits as: BODLEVEL2=1, BODLEVEL1=0, BODLEVEL0=0. Esto significa que habr un RESET cuando
el voltaje caiga por debajo de los 4.3V.
Los bits BOOTSZ1=0 y BOOTSZ0=0 (solo para el ATMEGA8, ATMEGA8515 y ATMEGA8535),
seleccionan el tamao del BOOTLOADER, de la siguiente tabla.

BOOT
SZ1

BOOT
SZ0

Boot
Size
128
Words
256
Words
512
Words
1024
Words

Pages
4
8
16
32

Applic.
Flash
Section
0x0000xF7F
0x0000xEFF
0x0000xDFF
0x0000xBFF

Boot Loader
Flash
Section

End
Applic.
Section

Boot Reset Address


(Start Boot Loader
Section)

0xF80-0xFFF

0xF7F

0xF80

0xF00-0xFFF

0xEFF

0xF00

0xE00-0xFFF

0xDFF

0xE00

0xC00-0xFFF

0xBFF

0xC00

Los valores de fbrica para estos bits son los que determinan el Boot Size ms grande, en la ltima
columna se muestra la direccin del RESET en caso de que BOOTRST estuviera activado.
Con esta tabla finaliza la programacin de los bits de Hfuse.

Pgina 3

Programar los bits de Lfuse.


El bit CHKDIV8=0, y el CKOUT=1, (solo para el ATMEGA48, ATMEGA88, y ATMEGA138), determinan
el comportamiento del oscilador interno, CHKDIV8 habilita el divisor interno de la seal de Reloj. El
oscilador interno RC esta calculado a 8MHZ, pero el bit CHKDIV8 esta activado por lo tanto la
frecuencia de trabajo es de 1MHZ, es posible deshabilitar este bit para aumentar la velocidad de
trabajo (evitando la divisin entre 8).
CKOUT=1, (esta deshabilitado), este bit permite sacar la seal de Reloj a travs del pin B0, esto
para sincronizarse con otro microcontrolador.
BODLEVEL=1 y BODEN=1 (solo para el ATMEGA8, ATMEGA8515 y ATMEGA8535), como ya se haba
mencionado antes BODLEVEL determina un RESET por bajo voltaje, si BODLEVEL=1, el voltaje al
que ocurre el RESET es de 2.7V, si BODLEVEL=0, este voltaje es de 4v. BOEN habilita a BODLEVEL,
el valor de fbrica es 1, desactivado.
Finalmente los bits STU1, STU0, CKSEL3, CKSEL2, CKSEL1 y CKSEL0 son los que determinan el
oscilador, que puede ser Oscilador Externo, Cristal Oscilador, Oscilador Interno, etc. A dems
sirven para asegurar un encendido correcto. Suponiendo que la fuente de alimentacin de 5V es
lenta en la respuesta de 0 a 5V en el encendido, necesitamos prepara al microcontrolador con un
Slow rising power, si la fuente es rpida en el cambio de 0 a 5V en el encendido, entonces es
necesario un Fast rising power.
Fuentes de Reloj. Normalmente con la familia de microcontroladores AVR, solo se utiliza el
oscilador interno o un cristal oscilador. La conexin del cristal oscilador es la siguiente.

En la siguiente tabla se muestran las opciones de fuente de reloj disponibles y la configuracin de


CKSEL.
Device Clocking Option

CKSEL3..0

External Crystal/Ceramic Resonator

1111 1010

External Low-frequency Crystal

1001

External RC Oscillator

1000 0101

Calibrated Internal RC Oscillator

0100 0001

External Clock

0000
Pgina 4

De la tabla anterior se obtiene que para utilizar un cristal oscilador el valor de CKSEL3:0 debe ser
de 1111 1010, el ms apropiado lo encontramos en otra tabla.

CKOPT

CKSEL3:1

Frecuency Range
(MHz)

Recommended Range for Capacitors


C1 and C2 for Use with Crystals (pF)

101

0.4 0.9

110

0.9 3.0

12 22

111

3.0 8.0

12 22

101,110,111

1.0 16.0

12 22

El ltimo valor de la tabla es el que muestra en rango mas amplio de frecuencia para trabajar con
cristal oscilador, adems nos da el valor de CKOPT de Hfuse. Ahora este dato nos ofrece tres
posibles valores para CKSEL3:1. Solo falta el valor de CKSEL0, STU1 y STU0, estos valores estn en
la siguiente tabla.

CKSEL0 STU1:0

Start-up Time from


Power-down and
Power-save

Additional Delay
from Reset
(VCC = 5.0V)

00

258 CK

4.1 ms

01

258 CK

65 ms

10

1K CK

11

1K CK

4.1 ms

00

1K Ck

65 ms

01

16K CK

10

16K CK

4.1 ms

11

16K CK

65 ms

Recommended Usage
Ceramic resonator, fast rising power
Ceramic resonator, slowly rising
power
Ceramic resonator, BOD enabled
Ceramic resonator, fast rising power
Ceramic resonator, slowly rising
power
Crystal Oscillator, BOD enabled
Crystal Oscillator, fast rising power
Crystal Oscillator, slowly rising
power

Finalmente los tres ltimos valores de la tabla nos indican el valor de CKSEL0 y STU1:0,
dependiendo si tenemos el BOD habilitado o si queremos un Fast Rising Power o Slow Rising
Power.

Pgina 5

Ejemplo: Supongamos que tenemos una aplicacin en donde se utilizara un ATMEGA8535, con un
cristal externo de 16MHZ, con una fuente que tarda en alcanzar los 5V, y no nos interesa lo que
este almacenado en la memoria EEPROM.
HFuse

S8535C

WDTON

SPIEN

CKOPT

EESAVE

BOOTSZ1

BOOTSZ0

BOOTRST

C9

LFuse

BODLEVEL

BODEN

SUT1

SUT0

CKSEL3

CKSEL2

CKSEL1

CKSEL0

FD

Ejemplo: Supongamos que tenemos una aplicacin en donde se utilizara un ATMEGA48, con un
cristal externo de 16MHZ sin divisin interna, queremos activar el RESET por bajo voltaje, no nos
interesa lo que este almacenado en la memoria EEPROM y no necesitamos sacar la seal de reloj
para sincronizar con otro dispositivo.
HFuse

RSTDISBL

DWEN

SPIEN

WDTON

EESAVE

BODLEVEL2

BODLEVEL1

BODLEVEL0

C9

LFuse

CKDIV8

CKOUT

SUT1

SUT0

CKSEL3

CKSEL2

CKSEL1

CKSEL0

DD

Pgina 6

You might also like