Back to tutorial index

Fuses Attiny44A

Fab ISP

¿Qué son los fuses?

Hay tres bytes de almacenamiento permanente en el chip llamados 'fuse low byte', 'fuse high byte' y 'fuse extended byte'. A estos bytes se les conoce como fuses, pueden reprogramarse tantas veces como se quiera y determinan el comportamiento del microcontrolador. Para ello, su valor no se borra cuando el chip se apaga o se reprograma.

Los valores de los fuses dependen de cada modelo de microcontrolador. En este tutorial trabajaremos con los fuses del Atmel Attiny44A.

Fuses para el Attiny44A

Nombre Descripción Valor por Defecto Byte Rango de Bits Página de la Ficha Técnica
CKDIV8 La función pre-escalar puede utilizarse para cambiar el consumo de energía cuando no se requiere un alto rendimiento. Esta característica puede utilizarse con cualquier fuente de reloj. La función divide la frecuencia de reloj por un factor determinado que puede configurarse mediante el registro CLKPS(3...0) (Ficha Técnica - Tabla 6-11), siendo su valor por defecto "0011" (factor divisor de 8). 0 LOW (7) 30
CKOUT Este fuse permite utilizar el reloj del microcontrolador como fuente de reloj para otros circuitos. Cuando este bit está programado, el PIN B2 es la salida del reloj. 1 LOW (6) 30
SUT Este fuse determina los tiempos de puesta en marcha para la fuente de reloj externa. Éstos deben ser suficientemente largos para garantizar que el microcontrolador se mantiene en modo ‘reset’ mientras el reloj se está iniciando (no es estable). Su valor por defecto define el tiempo de puesta en marcha más largo. 10 LOW (5,4) 26
CKSEL El Attiny44A de AMTEL puede utilizar varias fuentes de reloj. Por defecto, el reloj utilizado es el oscilador interno de 8MHz. Las configuraciones disponibles se encuentran en la Ficha Técnica, en la Tabla 6-1. 0010 LOW (3...0) 25
RSTDISBL Cuando está programado (0), el PB3, en lugar de utilizarse como un pin reset, puede usarse como un pin I/O. 1 HIGH (7) 3
DWEN Este fuse permite la activación del modo 'debug'. Una vez programado, el pin RESET está configurado como un pin bidireccional I/O con la resistencia de Pull-up habilitada. 1 HIGH (6) 150
SPIEN Fuse que permite la programacion en serie y la descarga de datos. Una vez desprogramado el fuse, para restablecer su valor, se necesita un programador de 12V. 0 HIGH (5) 159
WDTON El watchdog timer es un mecanismo para evitar bucles cerrados y errores en el microcontrolador. Consiste en un contador decreciente. Si alcanza el valor 0, genera una señal de tiempo de espera que desencadena una acción para restaurar el sistema. Para evitar esto, el programa debe reiniciar el watchdog timer antes de que se agote el tiempo. 1 HIGH rango de bit 41
EESAVE Si está programada (0) la memoria EEPROM no se borra cuando se ejecuta la instruccion Chip Erase. 1 HIGH (4) 159
BODLEVEL Este fuse controla el detector Brown-out. Un detector Brown-out es un circuito que controla la tensión de alimentación durante el funcionamiento. Compara la tensión suministrada con un valor establecido. Si el voltaje suministrado disminuye de golpe más allá de un valor determinado (VBOT-), el Brown-out se habilita hasta que la tensión aumenta por encima de VBOT +. Entonces, se inicia un temporizador; si se acaba el tiempo, se desactiva el reinicio. Por defecto, el detector Brown-out está deshabilitado. En la tabla 20-6 de la Ficha Técnica se especifican todos los modos. 111 HIGH (2...0) 159 & 176
SELDPRGEN Este fuse, si está programado, permite al dispositivo la posibilidad de programarse a sí mismo. 1 EXTENDED (0) 152

Como se puede ver, hay un sólo bit en el 'fuse extended byte' cuyo valor cambiará el comportamiento de microcontrolador. Los bytes 7... 1 deben fijarse con un valor de 1.

Calculadora de fuses

Configuración del 'fuse HIGH byte'
Habilita la salida de reloj [PB2]
Divide reloj entre 8
Reloj
Deshabilita el reset externo
DebugWire Habilitado
Habilita la programación en serie y la descarga de datos
Watchdog Timer siempre encendido
La memoria EEPROM no se borra durante Chip Erase
Valor de activacion del detector Brown-out
Permite auto-programación

Configuración del 'fuse LOW byte'
Bit Low High Extended
7
6
5
4
3
2
1
0

Valores de los fuses
Low: 0x
High: 0x
Extended: 0x

Programacion por consola

avrdude -p t44 -P usb -c usbtiny -U lfuse:w:0x:m -U hfuse:w:0x:m -U efuse:w:0x:m