Deixo aqui uma explicação de como recarregar o bootloader do duelaminove com o ATmega328p.
Não me responsabilizo por qualquer dano efectuado nos vossos arduinos.
É chamado de "BitBang Mode" e dá para fazer o Burn dos seguintes modelos:
Arduino NG, Arduino Duemilanove e/com ATMega328P.
Atenção para fazer isto convém ser com o Windows, para fazer com outros sistemas operativos tem que se alterar o Patch, reconfigurar e compilar.Primeiro vamos modificar o arduino tirando a solda destes 4 pinos do X3:
e soldando um "header" no local:
Após isto fazemos o download dos ficheiros que vamos utilizar:
->
serjtag-0.3.zip->
avrdude.conf->
avrdude-GUI-1.0.5.zipNota:O avrdude-GUI requer no minimo o Microsoft .Net Framework 2.0 para quem não tem aqui fica o link:
-
Microsoft .Net Framework 2.01.
Instalaçãoa)
-Extrair o "serjtag-03.zip" e copiar a pasta "avrdude-serjtag" para C:/Programas
-Na pasta "avrdude-serjtag" apagar a pasta "src".
b)
-Substituir o "avrdude.conf" que está dentro da pasta "C:/Programas/avrdude-serjtag/binary/" pelo avrdude.conf descarregado aqui...
c)
-Extrair o "avrdude-GUI-1.0.5.zip" para "C:/Programas"
(Relembro que precisa do .Net Framework 2.0 ou superior)
2.
Configurar o Avrdude-GUIa)
-Abrir o "C:/Programas/avrdude-GUI-1.0.5/avrdude-GUI.exe"
b)
i)-
avrdude.exe file-Selecionar o "avrdude.exe" da pasta C:/Programas/avrdude-serjtag/binary/avrdude.exe"
ii)-
Programmer-Selecionar "FT232R Synchronous BitBang (diecimila)"
iii)-
Device-Selecionar "ATmega328p (m328p)"
iv)-
Command line option-Escrever "-P ft0 -B 4800"
Nota: Explicação
-> "-P ft0" ->Configurações da porta
-> "-B 4800" -> Configurações de Clock em modo "Slow"(lento)
-
Manter o campo "Port" Vazio!.Nota: Após isto fechar o avrdude-GUI!
3.
Ligar os fiosa)
Ligar deste modo os fios:
b)
-Conectar o cabo USB ao arduino e ao PC
-Abrir o "avrdude-GUI" em C:/Programas/avrdude-GUI-1.0.5
-Verificar se os campos estão preenchidos com as configurações do Passo 2.
c)
-Após isto, vamos ler os "Fuse Bits" em modo "Slow"
-E deve aparecer algo assim:
-Se os "Fuse-Bits" forem lidos é porque está a funcionar.
-Caso não esteja a funcionar consultar os
Erros no fim deste tutorial.
NOTA:Estes bits diferenciam consoante o ATmega que está a ser usado.
d) Agora vamos ler em modo "Fast" (Rapido) apagando no "Command line Option" o "-B 4800".
-Façam Read novamente nos "Fuse-Bits". E se os Fuse-Bits foram lidos com sucesso com o mesmo resultado anterior é porque está a funcionar em modo "fast clock". Porreiro!
4.
Burna)
-No "Command line Option" coloquem em "Slow Clock" ou seja escrevam novamente o "-B 4800".
Atenção- Se for um chip novo (virgem) que queiram programar pela primeira vez o bootloader, não podem fazer o burn em modo "Fast Clock"-1º Cliquem no "Chip Erase"
-2º Depois cliquem em "Read" e deve aparecer algo como "0F" no caso do ATmega328p.
b)
-Reescrever os Fuse-Bits, escrever os valores como veem na imagem
SOMENTE SE FOR O ATmega328p, caso seja outro ATmega consultar no fim os valores.-Depois de preencher os campos dos fuse-bits clicar em "Write".
-Mudar para "Fast Clock", apagar o "-B 4800" e cliquem em "Read" e vejam se os valores aparecem, caso não apareçam é porque foram mal inseridos, nesse caso voltem a "Slow Clock" e insiram novamente os valores e cliquem em "Write" e façam o mesmo processo.
c)
-Preparar o ficheiro .hex.
-No campo "Flash" selecionar o ficheiro .hex em "C:/Programas/arduino-0022/hardware/bootloaders/ATmegaBOOT_168_atmega328.hex"
-Clicar em "Erase-Write-Verify".
d)
-Escrever o "Lock-Bit" como está na figura..
Pronto e terminamos o nosso Burn.
Agora é so confirmar se tudo está a funcionar.
-Tirar o cabo USB do PC
-Tirar os fios que ligam o ICSP ao X3
-Conectar novamente o Cabo USB ao PC
-Clicar no botão de Reset do arduino.
-Abrir o IDE do arduino
-Fazer o upload de um programa exemplo tipo o "Blink" e verificar se o Led do arduino "L" pisca...
-------------------------------------------//----------------------------------------
->
Configurações para outros ATmegasATmega8
Fuse-bits hfuse = CA
lfuse = DF
Lock-bitunlock = 3F
lock = 0F
ATmega168
Fuse-bitshFuse = DD
LFuse = FF
eFuse = 00
Lock-bitlock = 0F
-------------------------------------------//----------------------------------------
-
ErrosSe for um erro deste genero:
avrdude.exe: ft0 open failed
Verifica se as ligações estão bem feitas e se o arduino está realmente ligado ao pc com os drivers FTDI. Para isso basta ir ao Gestor de Dispositivos e verificar se aparece "FTDI UART" com um ponto de interrogação amarelo, isso significa que os drivers do arduino não estão instalados.
Basta ir ao site do Arduino e fazer o download do software e depois instalar os drivers.
Se for um erro deste tipo:
avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude.exe: drain OK
ft245r: bitclk 230400 -> ft baud 115200
avrdude.exe: ft245r_program_enable: failed
avrdude.exe: initialization failed, rc=-1
É necessário rever as conexões, e tentar novamente, ou usar o -F para substituir essa verificação.
Se for um erro deste tipo:
avrdude.exe done. Thank you.
Primeiro verificar as ligações dos fios no arduino.
Depois de verificar que as ligações estão correctas, tentar novamente a operação mas com o comando "-B 4800" no Command line Option caso ainda não esteja lá.
Se estamos a tentar escrever alguma coisa para o chip e aparece um erro similar a este:
avrdude.exe: verification error, first mismatch at byte 0x0000
0xff != 0x3f
Significa que tem que se clicar no "Erase Chip" antes de escrever algo para o chip.
Se foi feito o burn ao bootloader com sucesso mas não se vê o LED a piscar, ou então o arduino não faz o upload, é necessário tirar o cabo USB do PC e tornar a liga-lo.
Bibliografia:
http://www.geocities.jp/arduino_diecimila/bootloader/index_en.htmlhttp://www.instructables.com/id/Programming-Arduino-Bootloader-without-External-Pr/step10/Troubleshooting/Agradecimentos ao user Senso que me forneceu o link com o tutorial.
Cumprimentos,
André Carvalho.