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.
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.
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 |
avrdude -p t44 -P usb -c usbtiny -U lfuse:w:0x:m -U hfuse:w:0x:m -U efuse:w:0x:m