Arduino – Como gravar/regravar o bootloader (Com UNO no MEGA)

Para os que não sabem o que é bootloader, trata-se de um pequeno programa que permite que a programação do microcontrolador (ATmega2560 ou outro) através de uma porta que tenha mais facilidade de uso, como no caso do Arduino é a serial, adaptada para a porta USB.

A necessidade de gravação ou regravação do bootloader, pode ocorrer quando o microcontrolador ainda estiver “virgem”, ou seja ainda não tem um programa em sua memória, ou então se o programa residente corrompeu-se.

Na realidade o ATmega já tem gravado uma rotina (antes mesmo de gravar o bootloader) que permite a programação via porta SPI, no entanto esta programação pode ser alterada, se for corrompida, o microcontrolador só vai poder ser regravado com um gravador que usa várias vias de acesso e para um gravador ISP (SPI) vai ficar aparentemente morto, sem resposta alguma, eu já vi até pessoas jogarem o microcontrolador no lixo por causa disso.

Um modo de fazer acontecer o bloqueio do bootloader é ativar o WDT (contador de auto reset) e deixar ele com um tempo de contagem muito pequeno, com isso não vai dar tempo de zerar a contagem do WDT e o uC (microcontrolador) vai ficar reiniciando sem parar, e com isso não dá nem para fazer um novo “Upload” de outro programa na sua memória.

Isso pode acontecer com qualquer uC com WDT, como os da família PIC.

Para saber se é necessário gravar o firmware no Arduino, basta tentar fazer um programa e fazer o “Upload”, se der algum erro em relação ao reconhecimento do Arduino, então vai ter que regravar o bootloader. Claro que a versão da placa tem que estar corretamente selecionada na IDE (interface) do Arduino, assim como a porta serial (COM).

Devido a facilidade da IDE de gravar o bootloader, que pode usar até um Arduino para gravar outro, todo processo é feito sem muita complicação.

Observando a imagem acima, nota-se um cabo que está fazendo a ligação entre as duas placas, note também que um UNO está gravando um MEGA, e pode ser feito entre outros ou inverso.

Para isso é preciso conectar a porta ISP de um Arduino no outro, porém o Arduino que vai ser gravado, tem que receber um pulso de RESET, então é apenas este fio (via) que não é conectada pino a pino.

Veja ainda na imagem acima, a tabela de conexão de uma placa para outra.

Para facilitar a localização dos pinos segue abaixo as imagens das placas.

Para o Arduino MEGA, note a descrição dos pinos do conector ISP, ao lado esquerdo.

Já para o UNO, a descrição do conector está na parte inferior da imagem.

 

Para facilitar ainda mais o entendimento, abaixo está uma imagem de dois UNO conectados com fios de uma via, note que o UNO que está sendo usado como gravador é o que tem o cabo USB conectado, e o UNO que vai ser gravado está com o fio verde conectado no RESET. Os outros fios estão ligados pino a pino.

 

Estando já conectado os fios e com a IDE já podendo gravar o Arduino normalmente (o UNO que vai ser usado como gravador), então deve abrir o programa Arduino ISP e fazer o “Upload” para a placa com o cabo USB. Para este caso, tem que selecionar a versão da placa para UNO.

 

passo2

Carregue o programa Arduino ISP, que está na lista dos exemplos

 

passo3

Não esqueça de selecionar a porta serial correta para comunicar-se com o Arduino (Gravador)

 

passo4

Clique em Upload.

Depois de fazer o “Upload” do Arduino ISP, deve selecionar o gravador como Arduino ISP.

passo5

Então selecione a versão de placa que vai ser gravada o bootloader, no caso, este post foi feito inicialmente baseado no UNO como gravador e com o MEGA para ser gravado.

passo6

Vai ficar mostrando na parte inferior da IDE a versão da placa que vai ser gravada, pode ser um pouco confuso, mas é assim mesmo.

Agora basta clicar em Burn Bootloader

passo7

 

Caso aconteça erro ao tentar fazer o Burn Bootloader, como aconteceu comigo, pode tentar fazer a gravação de um programa diretamente no uC (microcontrolador) da placa que está sendo gravada.

Para isso selecione um programa, eu fiz com o Digital > Button, gravei e com isso fiz com que o reinício (RESET automático fosse reprogramado, permitindo gravar depois o Bootloader.

Pois se gravar diretamente o programa pode apagar o Bootloader, assim para voltar a ter acesso pela IDE do Arduino no modo simples, precisa gravar o Bootloader novamente.

extra1

 

extra2

Então é isso, se for fazer de placa para placa. Mas também dá para fazer sem a placa, eu por exemplo comprei um uC ATmega328 já com o Bootloader, fora da placa, é bem mais barato que a placa inteira, claro, e para fazer funcionar basta apenas um cristal com os capacitores e um resistor no pino de RESET.

Para conectar na USB eu usei um cabo de USB para serial e um chip MAX232.

Foi assim que eu consegui regravar o Arduino Mega 2560, e voltar a fazer o tão esperado “Upload”.

Mas caso isso não dê certo então revise as conexões, se tudo estiver correto, só resta tentar com um gravador “paralelo” não quero dizer de porta paralela de computador, mas sim que a conexão entre o uC e o gravador se faz com várias vias.

Uma vez eu encontrei um esquema de gravador “caseiro” que tinha este tipo de conexão “paralela” com o uC feito com um ATmega16.

Boa sorte!

 

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: