Arduino

Dois modos de gravar o bootloader no Atmega328

Estive fazendo uns testes com um bootloader na esperança de fazer algo realmente útil e diferente, mas o resultado foi apenas bootloaders corrompidos. E recuperados, claro. Por conta disso, acabei modificando todo o artigo e deixando apenas duas coisas importantes, que são os dois modos de gravar bootloader no Arduino, ambos experimentados para fazer os testes de gravação do bootloader na placa MBZ Pro Mega RF Edition.

Gravar o Bootloader no Arduino

O Arduino possui um bootloader. O CI Atmega328 vem virgem. Se estiver adquirindo uma placa da MaxBlitz (como a da imagem de destaque), o bootloader padrão já vem gravado. Se ainda não tem a placa da MaxBlitz, dê uma passada no site e confira; é uma placa barata, incrível e você terá o prazer de montar sua própria standalone.

Optiboot

Eu não sabia, mas após iniciar as experimentações vi que o atual bootloader utilizado no Arduino UNO é o optiboot. Os bootloaders oficiais estão disponíveis dentro do diretório da sua IDE do Arduino, se quiser dar uma conferida, discorro a respeito mais adiante.

Na definição de placas também é possível ver os fuses utilizados, além do bootloader da respectiva placa. No caso do Arduino UNO:

Gravar o bootloader

Podemos gravar o bootloader de duas maneiras; utilizando um Arduino como ISP ou utilizando um USBASP conectado ao ICSP da placa que receberá o bootloader em seu Atmega.

Apenas para complementar o raciocínio, esse procedimento não é exclusivo para a placa MBZ Pro Mega RF, nem para esse bootloader. É um procedimento genérico, que daria outro artigo, inclusive. Também não precisa ter medo extremo, eu perdi o bootloader durante os testes que estava fazendo com um bootloader personalizado e com um esforço pra cá e outro pra lá, acabei conseguindo regravar; várias vezes. Em suma, se tudo der errado quando estiver fazendo experimentações, volte o bootloader padrão.

Utilizando o adaptador USBASP

Não quis desenhar e também não procurei muito, me desculpe a preguiça e por “chupinhar” a imagem abaixo, mas tenho muitas outras coisas a fazer (relacionadas aos artigos e à vida pessoal) e por isso resolvi agilizar da melhor maneira possível.

O wiring do adaptador USBASP fica assim:

USBASP wiring - gravar o bootloader

Mas como irei gravar o bootloader  na MBZ Pro Mega RF Edition, desconsiderei a ordem dos headers. Da direita e conecte-os em seus correspondentes, conforme a lindíssima imagem abaixo:

MBZ Pro Mega RF Edition - gravar o bootloader

Ainda, vou facilitar a relação entre o USBASP e o ICSP da placa na tabela abaixo. Considere os pinos da fileira superior da esquerda para a direita como sendo 1, 2, 3Então volte para a segunda fileira, da esquerda para a direita como sendo os pinos 4, 5, 6. Desse modo use como referência a seguinte relação:  Pino 4 = GND, Pino 6 = 5V.

Agora olhe para a tabela e tudo deve ficar claro:

USBASP MBZ Pro Mega RF Edition (pino)
VCC 6
MOSI 5
/RES 1
SCK 2
GND 4
MISO 3

Por fim, o exemplo de conexão é como se fosse ligado ao cabo que vai ao USBASP. Ao encaixar o cabo ao adaptador, as posições se invertem. Para evitar que alguém conecte errado e para reforçar o entendimento, eis uma foto dos jumpers conectados diretamente ao USBASP:

Jumpers encaixados no USBASP - gravar o bootloader no Arduino

Conectores paralelos

Mas depois de conectar e desconectar 10 vezes, já não é mais tão empolgante. Daí faz todo o sentido utilizar os conectores paralelos de 3 posições, vendido pelo nosso parceiro MASUGUX. Esses conectores estão disponíveis para compra através desse link. Se quiser jumpers e headers no mesmo pacote, o link é esse outro. A partir de então, a conexão com a placa é feita em segundinhos. Repare na imagem de destaque, nos jumpers do USBASP.

Utilizando Arduino como ISP

Nesse modo, utilizaremos um Arduino para gravar o bootloader invés de utilizar um adaptador USBASP.

Coloque os jumpers primeiramente em GND5V do Arduino UNO que será utilizado como ISP ao 5V e GND do MBZ Pro Mega RF. Agora siga a tabela, essa é bem fácil:

Arduino UNO MBZ Pro Mega RF
5V 5V
GND GND
10 RST
11 11
12 12
13 13

Conecte o Arduino UNO (que será o master, pois através dele o bootloader será gravado na MBZ Pro Mega RF) à porta USB do computador. Se for uma gravação de bootloader padrão (como exemplificado abaixo para USBASP), abra a IDE do Arduino, selecione a porta, selecione a placa Arduino UNO . Na Opção Programador, selecione Arduino como ISP. Em Arquivo > Exemplos selecione ArduinoISP. Faça o upload para preparar a placa para funcionar como ISP.

Após ter gravado o sketch ArduinoISP, coloque um capacitor 10uF (foi o que eu tinha) entre o  reset e o GND do Arduino UNO (que é o master). A listra branca do capacitor vai em direção ao GND.

Arduino as ISP - gravar o bootloader

No menu Ferramentas, clique em Gravar bootloader após já ter subido o sketch para que o UNO funcione como ISP. Agora repare que a gravação será feita na MBZ Pro Mega RF.

Se estivesse fazendo a gravação em um Arduino Mega por exemplo, após subir o sketch de ArduinoISP, o próximo passo seria trocar a placa para Arduino Mega na IDE do Arduino e então gravar o bootloader.

Se quiser, pode utilizar esse modo para gravar o programa no Arduino, mas remova primeiro o capacitor.

Gravar o bootloader padrão (para CI virgem) usando USBASP

Se deseja apenas gravar um bootloader padrão em um CI novo, basta seguir esse procedimento, abrindo a IDE do Arduino como root, porque o usuário padrão não tem permissão para escrever no USBASP.

Na IDE do Arduino, selecione a placa Arduino UNO para a MBZ Pro Mega, selecione a porta serial e seleciona a programadora USBASP. Ainda no menu Ferramentas, clique na opção gravar bootloader.

Feito!

One comment

Comments are closed.

%d blogueiros gostam disto: