Bits de fusível AVR ATmega16/32

Bits de fusível AVR ATmega16/32

Resumo

Atualizando-se com a era da tecnologia, o novo microcontroladores estão vindo com muitos periféricos e recursos integrados. Esses periféricos e recursos integrados não apenas reduzem o custo de circuitos adicionais a serem usados ​​com o controlador, mas também facilitam a interface de dispositivos adicionais (como modems, etc.) diretamente com o microcontrolador.

O novas gerações de microcontroladores são capazes de funcionar tanto com opção de relógio interno quanto externo. Mas então surge a questão de como podemos fazê-los funcionar na opção de relógio desejada? Como desabilitar/habilitar um determinado periférico? Como iniciante, quando você adquire um novo chip (ATmega16/32) você pode reclamar que 'PORTC do chip não está funcionando!' ou 'quando o pino de reinicialização e 6º pin do PORTC (no ATmega8) são comuns como devo selecioná-los/distinguí-los?'. Essas questões podem parecer amargas quando você tenta ignorá-las e seguir em frente, mas todos esses problemas podem ser resolvidos configurando-se adequadamente o FUSÍVEIS do seu dispositivo.

Existem poucos parâmetros no chip que são usados ​​para configurá-lo antes que ele possa ser usado em ambiente externo. Esses parâmetros são definidos com o uso de Fuse Bits. Em outras palavras, o bit fusível determina o comportamento do chip, se ele possui um boot loader, qual a velocidade e tensão em que ele funciona, a Temporizador de vigilância condições, etc. A principal vantagem dos bits fusíveis é que o microcontrolador pode ser configurado conforme a necessidade.
Uma vez o bits de fusível são definidos para uma configuração específica, o controlador pode ser usado repetidamente (o programa pode ser gravado repetidamente). Você não precisa definir os bits do fusível toda vez que estiver usando o controlador até o momento em que quiser usá-lo na mesma configuração. Fusíveis precisam ser alterados apenas caso você queira alterar a configuração inicial do controlador. Os bits do fusível são muito confusos para os iniciantes. Este tutorial irá explore os bits do fusível e também fornece uma compreensão clara de quais fusíveis você precisa configurar para o seu dispositivo.

Descrição

Descrição
Antes de configurar os fusíveis do seu dispositivo, é necessário ter um conhecimento profundo dos fusíveis, quando exatamente e como você os configuraria e quais são os fatores que podem afetar o funcionamento do dispositivo. É importante observar que as configurações do bit do fusível não são afetadas pela operação de apagamento do chip. Eles são configurados separadamente usando um programador externo.
Outro aspecto muito importante a ser observado é que os bits de fusíveis desejados devem ser programados antes de configurar os bits de bloqueio do dispositivo. Você deve ter muito cuidado ao escrever os fusíveis do dispositivo. Suponha que se você estiver usando um IPS programador/gravador para programar seu controlador e por acaso você desabilitou (desprogramou) o bit SPIEN, então o chip não pode mais ser programado. O bit SPIEN pode novamente ser habilitado (programado) usando um gravador paralelo. Se o bit for lido como lógico 0, significa que o bit está programado ou então é chamado de bit não programado.
O AVR O microcontrolador (ATmega16) consiste em dezesseis bits de fusíveis que são classificados como fusível baixo e fusível alto. Esses bits de fusível podem ser configurados para selecionar as opções de clock do microcontrolador ou para controlar alguns periféricos embutidos como JTAG, SPI etc.
Um microcontrolador novo ou virgem tem um valor padrão de bytes de fusível que é igual a 0x99E1 em hexadecimal. Para entender o significado deste valor padrão, cada bit de fusível deve ser entendido.
Bits de fusível alto:
Fusível
OCDEN
JTAGEN
ESPIÃO
CKOPT
EESAVE
BOTASZ1
BOTASZ0
BOOTRST
Pouco Não.
Parte 7
Parte 6
Parte 5
Parte 4
Parte 3
Parte 2
Parte 1
Bit 0
Padrão
valores
1
0
0
1
1
0
0
1
Bits de fusível baixo:
Fusível
NÍVEL DO CORPO
BODEN
SUT1
SUT0
CKSEL3
CKSEL2
CKSEL1
CKSEL0
Pouco Não.
Parte 7
Parte 6
Parte 5
Parte 4
Parte 3
Parte 2
Parte 1
Bit 0
Valores padrão
1
1
1
0
0
0
0
1

A ponta do fusível individual é explicada na próxima seção.

Fusíveis

CKSEL (3:0) (seleção do relógio)
Esses bits de fusível são usados ​​para selecionar diferentes opções de fonte de clock para o microcontrolador. A tabela abaixo mostra as diferentes fontes de clock do dispositivo e seus bits de fusível correspondentes.
Opção de relógio do dispositivo
CKSEL(3:0)
Ressonador externo de cristal/cerâmica
1111 – 1010
Cristal externo de baixa frequência
1001
Oscilador RC Externo
1000 – 0101
Oscilador RC interno calibrado
0100 – 0001
Relógio Externo
0000

A configuração de clock padrão para o novo controlador é CKSEL = 0001 (oscilador RC interno de 1 MHz). Geralmente, o cristal externo é usado como uma opção de relógio (portanto, o bit do fusível é definido entre o intervalo 1111-1010).

CKOPT (opção de relógio)
Existem dois modos de oscilação no microcontrolador ATmega16; o bit CKOPT seleciona um desses modos. Se o bit CKOPT estiver programado (0), o oscilador gera oscilação completa de saída trilho a trilho. Este modo possui ampla faixa de frequência. Se CKOPT não estiver programado (1), a oscilação terá menor oscilação de saída (este modo tem frequência limitada).
O Atmega16 pode ser operado em uma frequência de clock máxima de 16 MHz (16PU ou 16PI), portanto o CKOPT é programado. O bit CKOPT é combinado com bits CKSEL (3:1) para selecionar a frequência operacional e seu modo. Mesa 2 mostra a combinação de bits CKSEL(3:1) e CKOPT usada para selecionar a frequência do cristal para ATmega16. A tabela abaixo também recomenda as faixas dos capacitores conectados ao cristal.
CKOP
CKSEL(3:1)
Faixa de frequência (MHz
Faixa recomendada para capacitores (pF)
1
101*
0,4 – 0,9
1
110
0,9 – 3,0
12 – 22
1
111
3,0 – 8,0
12 – 22
0
101, 110, 111
1,0 -16,0
12 – 22
* Este modo é usado apenas para ressonador cerâmico.
Para CKOPT=0, os bits CKSEL (3:1) são selecionados da seguinte forma:
Imagem mostrando os Fusíveis selecionados
Fig. 1: Imagem mostrando os bits de fusível selecionados
Para frequência de cristal externo de 12 MHz, CKSEL (3:1) é definido como 111.

Bits fusíveis, continuação

SUT (1:0) (horário de inicialização)
Este bit é usado para definir o tempo de inicialização do ATmega16. A combinação dos bits SUT (1:0) e CKSEL0 é usada para selecionar o tempo de inicialização do controlador. A tabela abaixo mostra as combinações de bits para selecionar o tempo de inicialização.
CKSEL0
SUT(1:0)
Nº de relógios de inicialização
Atraso adicional na reinicialização
Uso recomendado
0
00
258 CK
4,1ms
Ressonador cerâmico, potência de aumento rápido
0
01
258 CK
65ms
Ressonador cerâmico, aumentando lentamente a potência
0
10
1KK
Ressonador cerâmico, BOD habilitado
0
11
1KK
4,1ms
Ressonador cerâmico, potência de aumento rápido
1
00
1KK
65ms
Ressonador cerâmico, aumentando lentamente a potência
1
01
16KK
Oscilador de cristal, BOD habilitado
1
10
16KK
4,1ms
Oscilador de cristal, rápido
poder crescente
1
11
16KK
65ms
Oscilador de cristal, aumentando lentamente a potência

BODEN (ativação de detecção de escurecimento)

ATmega16 tem uma detecção de brown-out unele monitora continuamente o nível de Vcc com nível de disparo fixo. Este fusível é usado para ativar/desativar a unidade de detecção de queda de energia. Para habilitar a unidade BOD, o bit BODEN é programado (0).

BODLEVEL (nível de detecção de escurecimento)

Esta ponta fusível é usada para definir o nível de disparo da unidade BOD. A tensão de disparo é definida como 2,7 volts, se o bit BODLEVEL não estiver programado (1). Se este bit de fusível estiver programado (0), o nível de disparo será definido como 4,0 volts.
BOOTRST (redefinição do BootLoader)
BootLoader é um pequeno programa escrito em uma área específica da memória flash. Este programa é executado no momento da inicialização do controlador. Se o bit BOOTRST estiver programado (0), o dispositivo irá saltar para o primeiro bloco do bootloader de endereço.
BOTASZ (1:0)
Este fusível é usado para definir o tamanho do bootloader. O valor padrão desses bits é '00', que define o tamanho de inicialização para 1.024 palavras. Este tamanho é alocado na memória flash. O bootloader sempre reside na parte inferior do flash.
Imagem mostrando o posicionamento do Bootloader com o programa principal

Figura 2: Imagem mostrando o posicionamento do Bootloader com o programa principal

EESAVE (Salvar EEPROM)
Este bit é usado para preservar o conteúdo da EEPROM durante o apagamento do chip. Se o fusível estiver programado (0), a EEPROM preserva seu conteúdo, caso contrário não será preservado durante o apagamento do chip.
SPIEN (habilitação de programação serial SPI)
Se este bit for programado (0), a programação serial SPI do controlador é habilitada. Para desabilitar a programação serial, este bit fica sem programação (1).
JTAGEN (habilitar JTAG)
Existe uma unidade JTAG embutida no ATmega16, que é pré-ativada no microcontrolador virgem. Para desabilitar o JTAG, o bit JTAGEN não deve ser programado (1). (Referir Como desativar o JTAG)
OCDEN (habilitação de depuração no chip)
A depuração on-chip é usada para executar o programa passo a passo no hardware para estudar o sinal interno que fornece as informações sobre o estado do processador. Este bit é usado para ativar/desativar a depuração no chip. Se este bit estiver programado (0), então a depuração on-chip está habilitada.
Existem mais alguns bits que não estão presentes no ATmega16, mas são importantes ao usar outros ICs da série AVR como o ATmega8. O bit RSTDISBL é muito importante (especialmente no caso do ATmega8). Ao programar este bit, o bit de reset é convertido em pino de E/S geral. Deve-se notar que ao usar o programador SPI, nunca se deve programar este bit. A programação deste bit desabilitaria a programação SPI, uma vez que todos os programadores SPI usam o pino RESET para programar o microcontrolador (AVR).

Configurando um novo microcontrolador

Configurando um novo microcontrolador
Um controlador de microcontrolador virgem é configurado com oscilador RC interno de 1 MHz com inicialização mais longa e JTAG pré-habilitado. Portanto, os bytes do fusível são os seguintes: Imagem mostrando o status dos Fuse Bits para microcontrolador virgem

Figura 3: Imagem mostrando o status dos Fuse Bits para microcontrolador virgem

Para configurar o microcontrolador para alta frequência externa com inicialização mais longa e JTAG desabilitado, as configurações do fusível são alteradas conforme a seguir.
Imagem mostrando o status dos Fuse Bits para alta frequência externa com inicialização mais longa e JTAG desabilitado

Figura 4: Imagem mostrando o status dos fusíveis para alto frequência externa com inicialização mais longa e JTAG desabilitado

Referir-se JTAG desabilitado no AVR aprender a operação de leitura/gravação de bytes de fusível usando AVRDUDE.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.