Baseado na página http://embedderslife.wordpress.com/2012/08/20/fuse-bits-arent-that-scary/ e http://www.ladyada.net/learn/avr/fuses.html, como o próprio nome diz, não deve ser tão assustador de se entender os bits de fuse dos microcontroladores AVR.
Nem vou traduzir fuse e lock porque não tem esse sentido ao pé da letra. Fuse=fusível é feito para queimar e lock seria travar. A idéia do uso não é esta. Baseado no site acima e em alguma pesquisa para confirmar a veracidade das informações, vai um resumo e algumas considerações e obsevações.
Cada modelo de AVR tem uma configuração diferente. Caso queira uma calculadora online, podemos utilizar http://www.engbedded.com/fusecalc ou http://eleccelerator.com/fusecalc/fusecalc.php (prefiro o último devido às descrições serem mais detalhadas).
Observe que são bits. Bits que configuram de alguma forma o comportamento o AVR "como acesso à memória, clock e seu divisor, as opções de inicialização, de programação e assim por diante".
Outro ponto interessante é que para ativar um item de configuração temos que zerar o bit correspondente (isto é o inverso da lógica aprendida em informática), causando muita confusão.
Os bits de fuse e lock podem variar conforme o modelo dos AVRs. É sempre importante conferir nos
datasheets de cada modelo. Abaixo estão alguns exemplos. As observações valem para qualquer modelo.
Lock bits
O ideal é evitar mexer nestes bits. Dizem respeito à bootloader, des/ativação da pinagem, etc.
lock bits do Attiny25/45/85
lock bits do Atmega328P
LB1 caso seja ativado (zero) desabilita a programação da Flash e EEPROM
LB2 caso seja ativado (zero) desabilita a programação e verificação da Flash e EEPROM
High fuse bits
Os 3 bits abaixo são os mais problemáticos quando alterados sem conhecimento:
RSTDISBL: este bit corresponde ao pino de RESET, liberando para I/O caso esteja ativado. Atenção: a maioria dos programadores de AVR utilizam este pino para fazer o upload do programa; quando ativado poderá impossibilitar a reprogramação.
DWEN: também altera o comportamento do pino de RESET. Ativa o modo DebugWire para este pino, podendo causar os mesmos problemas que em RSTDISBL.
SPIEN: desliga a programação no sistema.
Os bits abaixo afetam o comportamento dos AVRs sem tantos problemas ou bricks.
WDTON: WatchDog timer sempre ligado. Watchdog reinicia o microcontrolador quando detectado algum problema (normalmente quando não passa periodicamente por uma determinada instrução do programa, pois todo programa AVR tem um loop).
BOOTRST: controla se a execução do microcontrolador se inicia pelo programa do Flash ou pela seção de bootloader.
EESAVE: preserva o conteúdo da EEPROM mesmo que executado um Chip Erase (apagamento do chip).
Low fuse bits
CKDIV8: quando zerado causa a divisão do clock por 8; caso o clock interno de 8Mhz esteja selecionado o clock efetivo será de 1Mhz;
CKOUT: permite usar o clock para dispositivos externos quando necessário.
SUT1,0: definem o tempo de startup - inicialização:
Atmega328P tempo de startup
Attiny25/45/85 tempo de startup
CKSEL3,2,1: definem a faixa do clock a ser utilizado e quais capacitores de cerâmica a serem utilizados.
CKSEL0: juntamente com SUT1,0 definem o tipo de crystal e tempo de startup
CKSEL0 + SUT1,0 - Attiny25/45/85
(valores para Atmega328P são bem próximos)
Extended fuse bits - também e melhor não alterar
BODLEVEL0, 1, 2: (Brown-out Detect) em alguns modelos podem fazer parte do high fuse bits. São usados para configuração da tensão interna de desligamento do AVR. Caso a tensão caia muito o chip se desligará até a normalização, evitando erros de memória, tempo, etc.
SELFPRGEN: habilitação da programação pelos próximos 4 ciclos de clock. Ele se auto-limpa após esse período.
Dica: sempre que possível, leia os valores dos fuse bits (o AVRDudess consegue), transfira o valor para uma das calculadoras de fuse bits, altere o que for necessário e transfira o valor para o o aplicativo que consiga gravar (o AVRDudess também faz isso)