Índice:
- Etapa 1: Configurações a serem feitas:
- Etapa 2: Definir o tipo de dispositivo
- Etapa 3: Emita um READ ALL ou READ FLASH
- Etapa 4: Grave no Flash (seu arquivo hexadecimal flashed em ROM no chip)
- Etapa 5: FUSÍVEIS: Como colocá-los no queimador extremo
- Etapa 6: Configuração de fusíveis usando a calculadora de fusíveis do queimador EXtreme
- Etapa 7: Valor final dos bits do fusível
- Etapa 8: Concluir
Vídeo: USANDO EXtreme Burner para programação de microcontrolador AVR: 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Todos vocês, fraternidade de usuários de AVR, e aqueles que estão apenas entrando no stream, Alguns de vocês começaram com microcontroladores PIC e alguns começaram com AVRs ATMEL, isto foi escrito para vocês!
Então você comprou um USBASP porque é barato e eficaz para atualizar a ROM em seu dispositivo Atmega, ou talvez a gama ATTINY. Eles podem ser obtidos por menos de 5 $, como clones chineses do Open source USB-ASP! AVRdude é o software para programá-los.
Você sem dúvida sabe como gerar um arquivo Hex usando o Atmel Studio (eu ainda uso o AVR Studio v4.19 em vez do v7 mais recente porque é mais ágil e rápido no meu laptop com CPU de núcleo único leve) / Netbook e WINAVR instalam se você estiver lendo isto. Qualquer coisa escrita em DotNet roda LENTA! e as versões posteriores são projetadas para fazer seu laptop funcionar como uma tartaruga! Você pode usar o Studio v4.19, a melhor versão do Studio da ATMEL para microcontroladores AVR, mudando para a versão 7 quando realmente precisar para os chips posteriores e tornar o seu tempo no laptop mais produtivo, trabalhando em vez de esperar! Isso é o que eu recomendo.
Uma linha de comando típica do AVR dude para programar um Atmega com um arquivo Hex funciona assim:
ESCREVER NO FLASH: AVRdude -s -c avrisp -p t44 -P usb -U "flash: w: D: / ARDUINO / pwmeg1.hex: a"
aqui pwmeg1.hex é o arquivo hex da Intel a ser "queimado" ou "flashed" no "MCU alvo" no microcontrolador Lingo
Isso é um bocado para lembrar! Você pode escrever um arquivo em lote e executá-lo na linha de comando do Windows, nomeando-o write_flash.bat. Da mesma forma, para ler os fusíveis, outro bocado de uma linha para lembrar! Isso fica entediante.
para ler flash + eeprom: AVRdude -s -c avrisp -p t44 -P usb -U "flash: r: D: / ARDUINO / pwmeg1.hex: i" -U "eeprom: r:: i"
A solução é usar uma das ferramentas de interface de usuário amigável para AVRdude como o Bitburner, programador Khazama, que são quase semelhantes em mérito. eXtreme Burner. Tenho usado bastante a ferramenta de uso gratuito: eXtreme Burner, é versátil, confiável, e este tutorial é sobre isso. Ele não pode apenas atualizar seu arquivo / programa hexadecimal para o MPU, usando comandos emitidos para o AVRdude em segundo plano, mas também pode ajudá-lo a definir os FUSÍVEIS, que é um assunto complicado que muitas vezes confunde os iniciantes na programação de AVR. Aqui está um link para um excelente tutorial sobre o assunto FUSES que você pode ler ou aperfeiçoar. Uma palavra de cautela: ATMEL usa o estado '1' de um bit FUSE para indicar seu estado 'padrão' (estado não configurado ou não programado) e '0' para indicar seu estado programado ou configurado ou ativado! Isso é exatamente o oposto do que você faz com bits FUSE em um microcontrolador PIC. Tenha cuidado ao modificar os bits do fusível do relógio, como fazer com que o relógio RC interno mude para cristal externo, porque isso criará problemas na conexão com o chip sem uma configuração de cristal externo. Da mesma forma, tenha cuidado ao alterar o estado de bits de fusível críticos como SPIEN e RESET DISABLE (estes devem ser sempre definidos como SPIEN = 0 e RESET DISABLE = 1 se você deseja continuar a se comunicar com o MCU com seu USB-ASP no modo ISP / SPI ! Se você errar, precisará de um programador de alta voltagem para 'desembrulhar' seu AVR.
Se você está se perguntando "o que diabos são fusíveis" e "o que eles fazem"? Leia este excelente artigo:
Outro tópico relacionado é como definir a velocidade do relógio do seu AVR MPU, que é capaz de atingir velocidades de 1Mhz até 16 ou 20Mhz. Há também uma opção de cristal de baixa frequência de baixa frequência de potência especial de 31,25 kHz que, se projetada corretamente, pode fazer seu AVR funcionar com baterias AA por 3 meses!
Ambos os bits do fusível do relógio (frequência e tipo de relógio RC interno / cristal externo e outros bits do fusível) podem ser configurados na guia FUSES no queimador eXtreme. Primeiro, mostraremos a você a leitura da ROM e, a seguir, como fazer o flash do arquivo hex usando o eXtreme Burner. Claro, você também pode usar os sites de fusíveis AVR online, mas a opção que explico também pode ser usada quando você estiver offline, em qualquer lugar.
Etapa 1: Configurações a serem feitas:
As imagens mostram as CONFIGURAÇÕES a serem feitas antes de você iniciar seu trabalho. (é apenas uma vez). No item de submenu 'Configurações de hardware', selecionamos 375Hz porque a maioria do MCU de fábrica da ATMEL são configurados para as configurações padrão de relógio da CPU de 1 Mhz no oscilador RC interno. A velocidade do ISP é um quarto de F_cpu. Isso nos dá 375 Khz da velocidade mais próxima, você poderia ir para uma velocidade mais baixa também, não fará muita diferença. Você pode tentar conectar deixando o padrão e emitir um 'ler tudo', se falhar, você pode vir aqui e alterar a velocidade, diminuindo-a.
Porque se você não consegue se conectar (a mensagem seria dada na janela do programador "impossível se comunicar com o chip, não é possível SCK" significa que o sinal do relógio do seu PC não conseguiu sincronizar com o chip que você está tentando ler ou)., você não conseguiria alterar a velocidade do relógio da CPU ou alterar sua velocidade e tipo! Portanto, conectar-se é a base de tudo! É como "PRIMEIRO CONTATO", como você vê nos filmes de Spielberg. Se você conseguir isso, você sempre pode aumentar a velocidade do clock de seu MCU programando os fusíveis de acordo e, mais tarde, usar uma velocidade mais alta para conectar.
Portanto, vá até os instantâneos de configurações de hardware fornecidos aqui e, em seguida, defina o tipo de dispositivo também (o chip que você está tentando programar, seu número de modelo).
Etapa 2: Definir o tipo de dispositivo
veja a imagem, Figura 1, definimos "ATTINY44A". Este é um microcontrolador de 14 pinos sem UART. Eu tenho usado isso recentemente, a versão SSU. Se você instalou a versão de estoque do Extreme burner, você não verá Attiny44A na lista suspensa de seleção de dispositivo, você verá um Attiny44 que, para todos os fins, podemos usar para programar Attiny44A também, para apresentar qualquer dispositivo não listado nesta lista suspensa, leia meu outro instrutível "Hacking eXtreme Burner".
Tenho usado o Atmega88PA-AU também com o eXtreme Burner, mas neste Instructable mencionamos "Attiny44A" em todos os lugares. Agora, como você faz uma versão protoboard do minúsculo chip SMD quadrado de 7 mm e o testa com seus programas? (veja as fotos que indicam o tamanho do chip), para isso, veja meu outro instrutível onde demonstro como fazer Módulos Plug-in adequados para Breadboard usando Attiny44A-SSU e ATmega88PA-AU
Depois de aprender esta técnica, você poderá verificar qualquer chip que estiver curioso para mexer, seja seu pacote SMD ou DIL. Por exemplo, eu até usei um chip SMD que vem em um pacote Quad de 0,8 mm de 32 pinos (Atmega88A) de maneira semelhante!
. Ou você pode apenas usar a versão DIL de 28 pinos do Attiny44A para este Instructable ou qualquer AVR que você esteja usando no momento para experimentar eXtreme Burner para programação AVR.
Etapa 3: Emita um READ ALL ou READ FLASH
Conecte seu USBasp à porta USB do seu laptop, suponho que você já carregou os drivers corretos que vieram com o seu programador e que foram detectados corretamente. Ele deve aparecer em 'Dispositivos e impressoras' no menu iniciar do Windows, se estiver, assim que for conectado à porta USB! Conecte seu chip de destino em sua placa com seu USBasp (pinos SDI // ISP relevantes usando um cabo de 6 ou 10 pinos deve ser conectado entre os dois, ou seja, os pinos: MOSI, RESET, MISO, SCK, Vcc, Terra).
Emita um READ ALL do MENU do Xtreme Burner. Veja as fotos e mensagens que obtivemos. Inicialmente sua tela mostrava 'FF' para ROM na Primeira TAB do gravador, depois de ler tudo mostrará o conteúdo real da ROM no chip. Se você usasse um chip novo de fábrica ou um chip apagado, veria FF no conteúdo depois de "Ler tudo". Um chip não programado mostrará 'FF' em sua memória, assim como uma EEPROM (segunda guia no programador), a última guia mostra os FUSÍVEIS.
Depois de READ ALL, as 3 guias mostram as informações corretas contidas no chip. Antes disso, não seria, portanto, emita um Leia tudo primeiro assim que conectar tudo.
Etapa 4: Grave no Flash (seu arquivo hexadecimal flashed em ROM no chip)
Selecione um arquivo usando a caixa de diálogo Navegar que abre quando você clica no primeiro ícone na barra de MENU acima. Selecionamos um arquivo como você vê na foto. Depois de selecionar o arquivo hexadecimal (formato hexadecimal), a barra de menus que exibia "nenhum arquivo carregado" mudou para o nome do arquivo que você carregou.
Agora emita um Write Flash no menu do software. As mensagens mostrarão o que está acontecendo. veja as fotos.
Após uma gravação bem-sucedida, você veria o 'FF' que marca uma alteração de ROM nova ou apagada no que seu programa ou arquivo hexadecimal contém. O tamanho ou o número de bytes que seu arquivo ocupa na ROM também é conhecido por você olhando para esta tela, que mostra o conteúdo real da ROM do chip de destino que você acabou de ver.
A etapa de verificação também é feita pela leitura do chip, conforme as CONFIGURAÇÕES que fizemos na primeira etapa. Isso é visto nas mensagens de que a verificação também foi bem-sucedida.
Etapa 5: FUSÍVEIS: Como colocá-los no queimador extremo
Quando você emitiu um READ ALL, os fusíveis foram lidos no chip. Essa é a PRIMEIRA foto mostrada por fuses.jpg.
Agora, talvez você precise alterá-los para outra coisa. Os fusíveis consistem em 4 caixas na última TAB na tela do seu eXtreme Burner. Nomeadamente, LOW FUSE BYTE, HIGH FUSE BYTE, EXTENDED FUSE BYTE, LOCK FUSE BYTE e CALIBRATION BYTE. nessa ordem eles são mostrados.
Você pode simplesmente usar uma calculadora de fusíveis ONLINE e preenchê-los. Como aquele em
eleccelerator.com/fusecalc/fusecalc.php?
Ou você pode usar o gravador eXtreme para fazer isso por você. off-line a qualquer momento: Selecione na lista suspensa que aparece quando você clica no botão DETALHES que está abaixo de cada tipo de byte de fusível. Basta clicar duas vezes em qualquer linha na tela DETALHES e vê-la mudar de SET para CLEARED e alternar seu estado com o clique do mouse em cada linha. O Fuse Byte na caixa acima mudaria de acordo.
Se você está se perguntando "o que diabos são fusíveis" e "o que eles fazem"? Leia este excelente artigo:
www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/
Etapa 6: Configuração de fusíveis usando a calculadora de fusíveis do queimador EXtreme
Você pode ver a tela de detalhes que aparece para cada um dos bytes do fusível (LOW, HIGH, EXTENDED, LOCK e Calibration). O byte de calibração deve ser deixado inalterado, pois mostra o byte de dados de calibração no AVR que se aplica ao oscilador RC interno. O byte LOCK normalmente é apenas FF (não discutido nas fotos acima), pois você não bloquearia o Flash ou EEPROM durante o estágio de aprendizagem. Você mudaria apenas os bytes LOW, HIGH e EXTENDED. Tome cuidado !
Se você alterar o bit SPIEN para 1 (o estado não programado é 1 em microcontroladores AVR), você não conseguirá se comunicar com seu chip usando USBASP ou qualquer programador! O estado padrão também é mostrado na tela para cada bit de fusível. Isso alerta que o padrão do SPIEN é sempre 0 (estado programado) para permitir que você use o modo SPI para a programação do ISP. O bit de depuração ou DW é sempre deixado 1 (não programado) quando SPIEN é definido como 0. Este também é seu estado padrão. Além disso, em bits de fusível estendido, 'Habilitar auto-programação deve ser' 1 '(não programado) se você estiver usando seu USB-ASP para programar o chip de destino (não usando o bootloader ROM como no ARDUINO).
Você pode alterar os bits de CLOCK (3 em número) para selecionar RC interno ou cristal externo. Eu normalmente deixo para RC interno, o que permite que você obtenha 2 pinos extras que liberam o cristal externo para usar como pinos de PORT para seus projetos AVR. Normalmente, o cristal externo é necessário quando você precisa de um tempo de alta precisão em seu projeto. Para os alunos, o RC interno é o suficiente.
Normalmente, depois de escolher alguma combinação de fusíveis, você não a mudará. Seria uma vez. Você estaria apenas atualizando a ROM ou às vezes a EEPROM também. Para Flashing, o arquivo EEPROM.eep separado é gerado pelo seu estúdio WINAVR / ATMEL se o seu programa usar a EEPROM para armazenar dados. Caso contrário, a EEPROM é deixada sem uso, preenchida com os dados 'FF' que mostram 'estado SEM DADOS' da EEPROM.
Etapa 7: Valor final dos bits do fusível
Depois de definir todos os bits Fuse, e fechar as caixas DETALHES que você usou, você pode ver o valor dos bits Fuse conforme calculado pelo programa (ver foto). Tudo o que resta é emitir um "Gravar fusíveis" usando o menu. E olhar as mensagens que relatam uma gravação bem-sucedida. Posteriormente, você também pode emitir um READ ALL do menu e verificar se os fusíveis lidos na última TAB da tela do gravador coincidem com o que você deseja gravar no chip. (Verificação do fusível).
Você notaria que no início deste Instructable quando fizemos um READ FUSES, a tela mostra os mesmos valores de FUSE que vemos aqui! Isso porque esses são os fusíveis que uso com frequência e raramente os troco depois de configurá-los em meu MCU, a menos que mude a frequência de 1 MHz para 4 MHz para alguns projetos. O AVR pode ser definido para 20Mhz no máximo (alguns chips apenas até 16Mhz). A frequência que você define para F_cpu também depende da tensão que você fornece ao chip! Por exemplo, se seu chip opera de 1,8 V de Vcc até 5,5 V de Vcc (consulte a planilha de dados), você não esperaria operar seu Chip a 20 mhz se você fornecesse apenas 1,8 V a ele! você está esperando muito dele! Uma tabela na planilha de dados informa em qual tensão a frequência atinge o máximo em qual valor. Quanto mais alta a frequência de operação do chip, mais calor e mais energia ele consome. Pense na frequência como o batimento cardíaco de um animal. Um beija-flor com uma alta taxa de batimento cardíaco teria uma maior queima de energia por minuto em comparação com uma baleia ou elefante com um batimento cardíaco muito mais baixo! Mas então ele pode fazer muito mais em menos tempo. O MCU é assim mesmo.
Etapa 8: Concluir
Agora que você completou todas as etapas no queimador eXtreme, leu a ROM de um chip, ou abriu um arquivo HEX e o transferiu para o chip e verificou se o flash estava OK, você também aprendeu como ajustar os fusíveis e transferi-los para o chip.
Se você tiver alguma dúvida, terei prazer em responder ou modificar o tutorial para torná-lo mais claro.
Para alguns chips, você pode descobrir que sua entrada está faltando na lista suspensa de seleção de chips no menu. Ou você pode enfrentar erros de gravação e verificar erros. Nesses casos, leia meu outro Instructable "Hacking eXtreme Burner" para resolver o problema.
Boa programação.
Recomendado:
Hackeando o EXtreme Burner para a programação de dispositivos AVR Atmega: 7 etapas
Hackeando EXtreme Burner para programação de dispositivos AVR Atmega: Este é o meu primeiro instrutível neste site! Todos vocês, pessoal bom, postaram muitas coisas neste site, muitas ideias e interesses bizarros e estranhos também! Muitos dos quais leio de vez em quando, e você me inspirou a retribuir à Comunidade! Alth
Microcontrolador AVR. Alterne os LEDs usando um botão de pressão. Botão Debouncing: 4 etapas
Microcontrolador AVR. Alterne os LEDs usando uma chave de botão. Push Button Debouncing: Nesta seção, aprenderemos como fazer o código do programa C para ATMega328PU para alternar o status dos três LEDs de acordo com a entrada de uma chave de botão. Além disso, exploramos uma solução para o problema de ‘Switch Bounce’. Como de costume, nós teremos
Microcontrolador AVR. LEDs pisca-pisca usando temporizador. Interrupções dos temporizadores. Modo CTC do temporizador: 6 etapas
Microcontrolador AVR. LEDs pisca-pisca usando temporizador. Interrupções dos temporizadores. Modo CTC do temporizador: Olá a todos! Os temporizadores são um conceito importante no campo da eletrônica. Cada componente eletrônico funciona em uma base de tempo. Essa base de tempo ajuda a manter todo o trabalho sincronizado. Todos os microcontroladores funcionam em alguma frequência de relógio predefinida, o
Configuração de bits de fusível do microcontrolador AVR. Criando e enviando na memória flash do microcontrolador o programa de LED piscando: 5 etapas
Configuração de bits de fusível do microcontrolador AVR. Criando e Carregando na Memória Flash do Microcontrolador o Programa de LED Piscando .: Neste caso iremos criar um programa simples em código C e gravá-lo na memória do microcontrolador. Vamos escrever nosso próprio programa e compilar o arquivo hex, usando o Atmel Studio como plataforma de desenvolvimento integrada. Vamos configurar o fusível bi
Como fazer um robô controlado por celular. Baseado em DTMF - Sem microcontrolador e programação - Controle de qualquer lugar do mundo - RoboGeeks: 15 etapas
Como fazer um robô controlado por celular. Baseado em DTMF | Sem microcontrolador e programação | Controle de qualquer lugar do mundo | RoboGeeks: Quer fazer um robô que possa ser controlado de qualquer lugar do mundo, vamos fazer isso