Introdução

Nesse post eu vou ensinar como atualizar o firmware do conversor USB serial utilizado nos Arduinos UNO e MEGA, esse conversor utiliza o microcontrolador MEGA16U2 ou MEGA8U2, para realizar a comunicação entre o Arduino e o seu PC.

Algumas vezes podem o ocorrer erros na gravação do Sketch ou mesmo você tentou usar o modo DFU, mas houve algum problema na hora de gravar seu firmware no MEGA16U2,  agora sua placa não é reconhecida como uma porta serial, COMx no Windows ou /dev/ttyACMx, no Linux, vou explicar como resolver esse problema.

Para executar esse tutorial é necessário ter um gravador externo, aqui eu vou utilizar o USBASP, já fiz uma explicação sobre esse gravador aqui, estou considerando que o avrdude, esteja instalado no computador, no momento estou utilizando Linux, para escrever esse tutorial.

Erro que pode ocorrer:

Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
avrdude done. Thank you.
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

Localizando o conversor USB-serial

O conversor USB-serial é um pequeno chip SMD, que está localizado próximo ao conector USB, seu respectivo conector para gravação  está localizado bem ao lado.

localiza_con_usb_serial

Localização do conector de gravação do MEGA16U2 e descrição do pinos

Para realizar todo esse procedimento recomento comprar um adaptador de 10 pinos para 6 pinos.

Com esse adaptador basta inserir nos pinos indicados na imagem acima, observando a posição do pino 1.

14002621_thumb_G_1365774927308

Adaptador de 10 para 6 pinos

 

Caso se sinta seguro, você pode utilizar 6 fios e realizar a ligação entre os conectores, observando a função de cada pino.

Localizando o novo firmware no MEGA16U2

A partir do local de instalação da IDE do Arduino procure pelo seguinte caminho

<caminho_instalacao>/hardware/arduino/avr/firmwares/atmegaxxu2

Dentro dessa pasta estão os arquivos pré compilados para o MEGA16U2.

 

Gravando o firmware

Com o gravador conectado na placa, no conector do MEGA16U2.

Abra um terminal e navegue até a pasta que contem os firmwares, dentro dela digite:

Para o Arduino UNO

avrdude -c usbasp -p atmega16u2 -P usb -U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

Para o Arduino Mega

avrdude -c usbasp -p atmega16u2 -U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

Com o gravador conectado na placa, no conector do MEGA8U2. (Caso sua placa seja R2).

Use outro caminho.

<caminho_instalacao>/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial

Abra um terminal e navegue até a pasta que contem os firmwares, dentro dela digite:

Para o Arduino Uno

avrdude -c usbasp -p atmega8u2 -P usb -U flash:w:Arduino-usbserial-uno.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

Para o Arduino Mega

avrdude -c usbasp -p atmega8u2 -P usb -U flash:w:Arduino-usbserial-mega.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

Dicas

Dica, no linux talvez seja necessário usar como sudo, para execura o avrdude.

Se sua versão do avrdude for antiga, e não conter o atmega8u2 ou atmega16u2, será necessário usar o seguinte parâmetro -p at90usb82 -F

avrdude -c usbasp -p at90usb82 -F

Caso o avrdude não esteja instalada e acessível na PATH do sistema, será necessário passar todo o caminho até onde está o executável do avrdude ou o caminho do arquivo HEX.

Na IDE do Arduino, o avrdude está localizado no seguinte caminho

<caminho_instalacao>/hardware/tools/avr/bin

Abra o terminal no caminho acima.

Para o Arduino UNO com MEGA8U2, vai ficar assim, no Linux:

avrdude -c usbasp -p atmega8u2 -P usb -U flash:w:../../../arduino/avr/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

 

 

Anúncios