Translate

domingo, 16 de junho de 2013

Bootloader no Arduino Minimal Shrimp com USBAsp





Esquema para ligação do USBasp para carregamento do bootloader no ATMega328P-PU.
Utilizar os pinos 1-RESET, 8/22-GND, 7/21/20-VCC, 19-SCK, 18-MISO, 17-MOSI.



No Arduino Minimal Shrimp Simples funcionou perfeitamente.

Driver: http://www.fischl.de/usbasp/

Testado no Win 8.1
---------------

Tentando programar um ATMega8, não deu certo, de primeira. Tentarei depois. Lembrando que o USBasp é mantido por um ATMega8-16AU

---------

Consegui programar o bootloader e fazer upload do programa, tudo com o USBasp.

Ligando conforme o esquema acima, consegui carregar o bootloader com o avrdudess (http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/) uma GUI para o avrdude. Basta arrastar o bootloader (arduino-1.5.5-r2\hardware\arduino\avr\bootloaders\atmega8\ATmegaBOOT.hex) para o campo Flash), configurar programmer (USBASP), porta, baud rate (19200), bit clock (1.5), MCU (atmega8) e clicar em Program!.

Utilizando o Arduino IDE 1.5.5-r2, caso utilize  o "Carregar usando programador", ele carregará o programa sem bootloader (substituirá). Acertar a Placa para "Arduino NG or older", o processador para "atMega8", a porta para a utilizada pelo programador, o programador para "USBasp".
Caso queira carregar pelo Arquivo/Carregar, o arquivo contido no "Arquivo/Preferências/Mais preferências podem ser editadas diretamente no arquivo..." deve ser apagado para ser recriado ou corrigido. Não sei ao certo, mas aparentemente ele somente altera o parâmetro "programmer=arduino:usbasp".  Existe um problema no arquivo de configuração, que força o uso do Arduino como programador, mesmo estando o USBasp selecionado. Para corrigir, basta editar o arquivo arduino-1.5.5-r2\hardware\arduino\avr\boards.txt, localizando e alterando a linha :

...
atmegang.name=Arduino NG or older

atmegang.upload.tool=avrdude
atmegang.upload.protocol=arduino     <<<======
atmegang.upload.speed=19200

atmegang.bootloader.tool=avrdude
....

para

atmegang.upload.protocol=usbasp

Deve entrar novamente na IDE para efetivar e poderá carregar o programa.

Outra observação é que o Low fuse original (L) 0xE1 trabalha em 1 MHz, deixando o microcontrolador muiiiiitoooo lento. Alterei para 0xE4, fazendo-o  trabalhar a 8 MHz utilizando o clock interno, sem precisar de cristal. Muittooo mais rápido. Dá para notar no exemplo Blink. Caso queira utilizar um cristal externo de 16 Mhz, pode alterar para 0xEF. Outros cálculos disponíveis em http://www.engbedded.com/fusecalc. Não é simples, mas estudando um pouco se consegue usar.

====================================

Atualização: em Julho/2020 voltei a utilizar o USBasp, mas sofri um pouco para conseguir utilizá-lo no Windows 10 64 1909.

A solução foi baixar o Zadig (https://zadig.akeo.ie/) e substituir o driver do USBasp pelo libusbK, o que funcionou perfeitamente para o ATtiny85 em 19200/1.5 Mhz no AVRDudess.

Atualização: em Agosto 2020 fiz a carga do bootloader no atmega8 e atmega328p usando a protoboard da foto. Vários problemas de driver do USBasp. Vá almoçar volte e teste de novo...
Ia atualizar o firmware do USBasp, mas funcionou antes disso. Feito com Arduino IDE.


1-RESET, 8-GND, 7-VCC, 19-SCK, 18-MISO, 17-MOSI. 9 e 10 com Cristal de 16 Mhz




Nenhum comentário:

Postar um comentário