Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice
Introduccin...............................................................................................................................................3
Fusible Alto (hfuse)....................................................................................................................................4
Fusible Bajo (lfuse)....................................................................................................................................5
Definicin de los bytes hfuse:lfuse............................................................................................................6
Hardware....................................................................................................................................................7
Programacin.............................................................................................................................................8
Compilacin...............................................................................................................................................9
Simulacin...............................................................................................................................................10
Referencias bibliogrficas........................................................................................................................11
Configuracin de un AVR con reloj externo JLB
Configuracin de un AVR con reloj externo JLB
Introduccin
Los fusibles son una parte de la memoria del microcontrolador, que son reservadas para ciertas
funciones que determinan la manera en la que trabajar el microcontrolador, por ejemplo:
Los fusibles no son accesibles por medio del programa, solamente pueden ser cambiados por un
dispositivo programador de microcontroladores. Los bits de los fusibles difieren para cada variante de
AVRs, por lo que, en este documento nos centraremos en el Atmega8.
Para explicarlo de manera simple, consideremos que slo existen dos tipos de fusibles: el fusible
alto (hfuse) y el fusible bajo (lfuse), algunos microcontroladores tienen un fusible adicional llamado
extendido (efuse). Un bit de fusible no programado tiene un estado lgico alto 1, programando el
fusible cambiar su estado a nivel bajo 0.
Configuracin de un AVR con reloj externo JLB
lfuse
Por lo tanto, la definicin de los bits tanto para el byte alto como el bajo queda como:
hfuse lfuse
1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1
Valor en hexadecimal = 0xC9 Valor en hexadecimal= 0xFF
Configuracin de un AVR con reloj externo JLB
Hardware
El cristal de cuarzo debe ser conectado como muestra la figura 11. Para lo cual requerimos,
adicionalmente de dos capacitores cermicos en el rango de valores de 12 a 22 pf. Dichos valores se
especifican en la hoja de datos del MCU y en este documento, en la tabla 4.
Si usamos el Arduino como programador, las conexiones debern realizarse como se muestra en la
tabla y en la figura de abajo.
Arduino AVR
5v Vcc
GND GND
D11 MOSI
D12 MISO
D13 SCK
D10 RESET
Programacin
Usando Arduino como programador o algn otro dispositivo para programar AVR, conectamos las
seales de la interfaz a 4 hilos (MOSI, MISO, SCK y RESET) del programador hacia el AVR y en la
lnea de comandos ejecutamos:
En este comando debemos tomar en cuenta los parmetros particulares para cada caso:
COM3: es el puerto que asigna el sistema operativo al Arduino.
ATMEGA8: es el microcontrolador al que vamos a modificar los fusibles.
Finalmente, al ejecutar el comando, los bits (fuse bits) del MCU quedarn programados para que
dicho microcontrolador funcione a 16Mhz.
Si, por alguna razn, queremos regresar a la configuracin de fbrica, es decir, oscilador interno a
1Mhz, el comando a ejecutar ser:
Tomando los valores de fbrica de las tablas 87 y 88 de este documento, a su vez, tomadas de la
hoja de datos del atmega8; los valores que de cada bit quedaran como indica la tabla:
hfuse lfuse
1 1 0 1 1 0 0 1 1 1 1 0 0 0 0 1
Valor en hexadecimal = 0xD9 Valor en hexadecimal= 0xE1
Configuracin de un AVR con reloj externo JLB
Compilacin
Cuando cambiamos la frecuencia de operacin del microcontrolador, la funcin delay incluida
en la librera del mismo nombre, ya no corresponder con el tiempo establecido; es decir si usamos la
funcin _delay_ms(200); los 200 milisegundos de retardo esperados, ya no ser dicho retardo. Para
definir la nueva frecuencia y lograr que la funcin delay mantenga la relacin de tiempo, debemos
hacer lo siguiente:
En el lado derecho de la
ventana anterior damos
click en el cono de
agregar (+), escribimos el
valor de la frecuencia y
damos OK.
Con sto queda completado el proceso para que nuestro compilador tome en cuenta el valor de la
frecuencia definida del CPU y mantenga la relacin de tiempo en la funcin delay.
Es importante recalcar que los tiempos generados por los temporizadores (TIMERs) del
microcontrolador, debern calcularse con el nuevo valor de la frecuencia.
Configuracin de un AVR con reloj externo JLB
Simulacin
Para que el simulador PROTEUS tome en cuenta el valor de la frecuencia, deben llevarse a cabo
los siguientes cambios y adiciones, adems del ya descrito en el apartado anterior para el compilador:
hfuse lfuse
1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1
Valor en hexadecimal = 0xC9 Valor en hexadecimal= 0xFF
Configuracin de un AVR con reloj externo JLB
Referencias bibliogrficas
[1] Avr Fuse Basics: Running an Avr With an External Clock: 6 Steps, Instructables.com. [En
lnea]. Disponible en: http://www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-
external-cl/. [Consultado: 02-may-2017].
[2] Atmel Coroporation, Atmega8 DataSheet. 2013.