Eu tenho o meu Arduino Uno em tijolos? Problemas com o upload para o embarque


86

Não consigo enviar esboços para o meu Arduino Uno.

  • Eu "emparedou" isso?
  • Que medidas posso tomar para descobrir o que está errado?
  • O que posso fazer para corrigi-lo?

7
Para quem se pergunta, essa não é uma pergunta real! É mais uma pergunta de referência. A questão em si é ampliada de propósito. A resposta, no entanto, é muito detalhada e, portanto, essa pergunta pode ser usada como referência.
Paulo

2
É mais uma pergunta de referência. Muito correto. Consulte Não há problema em fazer e responder suas próprias perguntas .
Nick Gammon

@Nick_Gammon Sim. Mas eu sinto que você de alguma forma deveria ter notado isso em algum lugar. À primeira vista, fiquei (um pouco) irritado pelo fato de a pergunta ser tão ampla e parecer que você não fez nenhuma pesquisa. Mas quando vi sua resposta, tudo fez sentido. Além disso, (quando você puder), não se esqueça de aceitar sua própria resposta, para que outras pessoas que estão tentando ajudar não comecem a responder, pesquisar ou comentar perguntas sobre isso (o que realmente não ajudaria, pois você já encontrou uma maneira bastante boa de depurar esse problema).
Paulo

Obrigado pelo feedback. Inicialmente, pensei em postar a pergunta com uma nota de que iria postar minha própria resposta, mas depois vi a caixa de seleção "responder sua própria pergunta", então marquei essa opção. Quanto a aceitá-lo, não tenho permissão para 20 horas. Pareceu-me um pouco estranho aceitar sua própria resposta, mas certamente posso fazer isso quando me for permitido. Fiz uma pergunta no Meta Arduino O que é uma pergunta canônica exatamente? para tentar descobrir o procedimento correto, mas não obteve respostas.
Nick Gammon

@FuaZe e Nick Gammon: Isso parece ótimo em geral, a única sugestão que eu faria seria tornar o assunto mais sugestivo sobre o que realmente é a pergunta e a resposta. Como é, acho que poderia ter sido tentado a fazê-lo parecer muito vago. Talvez o título possa ser "Como posso solucionar problemas de uploads com falha?"
DLU

Respostas:


115

Provavelmente não é emparedado

Eu tenho muitos Arduinos e, nos últimos anos, apenas um "empedrado", e acho que isso foi causado por zapping com eletricidade estática. Infelizmente, aquele em particular tinha um chip de processador SMD (montado na superfície), por isso não é fácil tentar trocá-lo por outro chip.

Mantenha a calma e tente as seguintes etapas ...


Quadro de exemplo

Um "Arduino Uno" não é apenas uma coisa que pode falhar. Possui vários componentes principais e, possivelmente, apenas um falhou (se houver). Veja esta fotografia de referência:

Componentes principais do Arduino Uno

Os principais componentes são:

  • Processador Atmega16U2 - trata da interface com a conexão USB
  • Processador Atmega328P - este é o processador "principal" que contém seu esboço
  • Regulador de tensão - converte a energia recebida do conector de força em 5 V
  • LED de energia (verde) - marcado "Ligado"
  • LED indicador (amarelo) marcado com "L" - conectado via um amplificador operacional ao pino digital 13
  • LEDs Rx e Tx (amarelo) - indicam se o chip USB (Atmega16U2) está recebendo ou transmitindo

Observe que os LEDs Rx e Tx não estão conectados diretamente aos pinos digitais 0 e 1 na placa (marcados como Rx e Tx). Eles só acendem se você estiver fazendo comunicações seriais via USB , e não se houver algo (como um GPS) conectado diretamente nos pinos digitais 0 e 1.

Observe também que, como o LED "L" é conectado via um amplificador operacional, ele pode acender se o pino 13 estiver definido como uma entrada em seu esboço. Isto é normal. Isso não significa que algo está enviando dados erroneamente.


Verifique o poder

Alimentação USB

  • Conecte a placa ao computador com o cabo USB e verifique se o LED verde "On" acende.

  • Use um multímetro e duas ligações em ponte para testar entre o pino de 5V e o pino GND (seta na parte inferior). Você deve obter uma leitura de cerca de 5,0 V (eu tenho 5,04 V no meu).

(Você pode comprar um multímetro barato por cerca de US $ 10, se não tiver um, mas é melhor comprá-lo por US $ 50 - verifique todos os sites e lojas de eletrônicos.)

  • Teste também entre o pino de 3,3 V e o pino GND - você deve obter 3,3 V.

Se você não receber 5 V com o cabo USB conectado, verifique se a outra extremidade está conectada ao seu computador. Tente também um cabo diferente.

Tomada de força

  • Se você estiver usando ou planejando usar, o conector de força (marcado com "entrada de energia" na foto) desconecte o USB e conecte uma fonte de alimentação - que deve ser de 7 a 12 V DC com positivo no pino central .

  • Meça os pinos de 5 V e 3,3 V como acima. Você ainda deve ver as mesmas tensões neles.

Se você obtiver 5 V com o USB conectado, mas não com a fonte de alimentação, o regulador de tensão (marcado na foto) provavelmente está danificado. Ou, possivelmente, a fonte de alimentação falhou. Tente uma fonte de alimentação diferente para confirmar qual é.


Verifique o flash do LED de inicialização

Se você tiver o carregador de inicialização Optiboot (o Uno normalmente é fornecido com ele), se você pressionar e soltar o botão Redefinir, ou desconectar e conectar novamente o cabo USB ou de alimentação, o LED "L" piscará rapidamente três vezes. Os tempos "ligado" e "desligado" são de 50 ms cada, os três flashes devem terminar em cerca de 1/3 de segundo.

Caso contrário, você pode ter um problema com o carregador de inicialização ou com o chip do processador principal (Atmega328P).


Tente fazer o upload de um esboço

Importante: Se estiver com problemas para fazer upload de esboços, remova todos os dispositivos conectados (como blindagens). Remova também os fios dos jumpers conectados aos soquetes da placa. Em particular, não deve haver nada conectado aos pinos digitais 0 e 1 (Rx e Tx), pois isso interferirá na comunicação com o computador que está carregando.

Escolha um dos esboços de exemplo simples (por exemplo, Blink) e tente carregá-lo. Isto é o que você deve ver:

  • O LED "L" deve piscar 3 vezes. Isso ocorre porque o chip principal está sendo redefinido por um comando do processo de upload.

  • O LED "Rx" deve piscar rapidamente. Estas são as instruções do processo de upload tentando ativar o carregador de inicialização.

  • O LED "Tx" deve piscar rapidamente. Este é o processador que reconhece os dados carregados.

Você pode ver o acima, mesmo se o processo de upload falhar. Isso pode ocorrer porque o tipo de placa incorreto está selecionado.

Se apenas o LED "Rx" piscar, pode ser um problema com o carregador de inicialização ou com o chip do processador principal (Atmega328P). Alguém está batendo, mas ninguém está em casa!

Verifique o tipo de placa

Se os LEDs piscarem, mas você receber uma mensagem como esta:

avrdude: stk500_recv(): programmer is not responding

Verifique o tipo de quadro:

Menu Tipo de quadro

Se você tiver selecionado o tipo de placa errado, provavelmente enviará as instruções de upload incorretas e ocorrerá um tempo limite ou falha. Se você é como eu e tem pranchas diferentes, é fácil esquecer que o último upload feito foi para um tipo de prancha diferente.

Verifique a porta de comunicação

Se os LEDs não piscarem, você pode ter a porta de comunicação errada selecionada.

Verifique a porta de comunicação:

Menu da porta de comunicação

Tente outro PC / Mac, se possível

Experimente o seu Arduino em um PC / Mac diferente, se você tiver um em mãos. Isso pode diminuir se você tem ou não um problema com o computador específico em que o conectou ou com os computadores em geral.

Faça um teste de loopback

  • Desconecte todas as blindagens e outros fios
  • Remova a placa da energia
  • Conecte um fio de ponte de RESET ao GND (fio laranja na foto)
  • Conecte um fio de ponte de Rx a Tx (fio branco na foto)

Fiação:

Teste de loopback

  • Conecte o cabo USB e inicie um programa de terminal - como o Monitor de Terminal no IDE do Arduino. Digite algo e envie-o (por exemplo, pressione Enter no Terminal Monitor).
  • Tudo o que você digita deve ser repetido.

Se tudo voltar ao eco: Isso confirma que você possui a porta de comunicação correta, o cabo USB está OK e o chip de interface USB (Atmega16U2) provavelmente está OK.

Se nada for repetido, verifique:

  • Você tem a porta de comunicação correta.
  • Tente um cabo diferente. Alguns cabos USB baratos possuem apenas fios de energia e não de dados.
  • Verifique se o driver do dispositivo está instalado no Arduino. Você provavelmente não precisará fazer isso se a placa funcionou anteriormente neste computador, mas pode valer a pena fazer se for a primeira vez que você a conectar a este computador.

Teste o chip Atmega16U2

Se a sua placa falhar no teste de loopback e você tiver certeza de que o cabo USB está OK, poderá testar o próprio chip Atmega16U2. Há um cabeçalho ICSP (Programação em série em circuito) na placa, adjacente ao chip Atmega16U2 e próximo ao soquete USB.

Desconecte a energia primeiro (desconecte o cabo USB e qualquer cabo de energia).

Em seguida, você pode conectar o cabeçalho ICSP através de 6 fios de jumper a um Uno em bom estado, conforme mostrado na foto:

Teste o chip Atmega16U2

As pinagens para o cabeçalho ICSP são (de cima):

Cabeçalho ICSP

O pino 1 no cabeçalho ICSP próximo ao chip Atmega16U2 é marcado com um pequeno ponto branco, próximo ao "F" em "AREF". O pino 1 no cabeçalho ICSP, próximo ao chip ATmega328P, é marcado com um pequeno ponto branco, abaixo do "N" em "ON".

Conecte-se:

Good board         Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Verifique duas vezes sua fiação.

Em seguida, na placa "conhecido", instale o esboço "Atmega_Board_Detector", conforme descrito na página do programador do gerenciador de inicialização Atmega . O código está no GitHub - nickgammon / arduino_sketches . Se você clicar no botão Download nessa página, receberá vários esboços úteis. O que você deseja é chamado "Atmega_Board_Detector".

Depois de instalado, abra o monitor serial, defina-o para 115200 baud e você verá algo assim:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xEF
HFuse = 0xD9
EFuse = 0xF4
Lock byte = 0xCF
Clock calibration = 0x51
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0x4B 0xC0 0x00 0x00 0x64 0xC0 0x00 0x00 0x62 0xC0 0x00 0x00 0x60 0xC0 0x00 0x00
3010: 0x5E 0xC0 0x00 0x00 0x5C 0xC0 0x00 0x00 0x5A 0xC0 0x00 0x00 0x58 0xC0 0x00 0x00
3020: 0x56 0xC0 0x00 0x00 0x54 0xC0 0x00 0x00 0x52 0xC0 0x00 0x00 0xEE 0xC4 0x00 0x00
...
3FE0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
3FF0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

MD5 sum of bootloader = 0xD8 0x8C 0x70 0x6D 0xFE 0x1F 0xDC 0x38 0x82 0x1E 0xCE 0xAE 0x23 0xB2 0xE6 0xE7
Bootloader name: Arduino-dfu-usbserial-atmega16u2-Uno-Rev3

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00
...

No entanto, se você receber uma mensagem como esta:

"Failed to enter programming mode. Double-check wiring!"

Isso parece indicar que seu ATmega16U2 não está funcionando.


Teste o chip ATmega328P

Desconecte a energia do "bem conhecido" do Arduino Uno e reconecte os jumpers do ICSP conforme esta foto, para conectá-los ao processador "principal" do seu Uno:

Teste o chip ATmega328P

As pinagens para o cabeçalho ICSP são (de cima):

Cabeçalho ICSP

O pino 1 no cabeçalho ICSP, próximo ao chip ATmega328P, é marcado com um pequeno ponto branco, abaixo do "N" em "ON".

A fiação é a mesma de antes, exceto que você está se conectando ao outro cabeçalho ICSP - aquele no final da placa, mais distante do soquete USB.

Good board       Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Depois de conectado, abra o monitor serial, defina-o para 115200 baud e você verá algo assim:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00

Bootloader:

7E00: 0x11 0x24 0x84 0xB7 0x14 0xBE 0x81 0xFF 0xF0 0xD0 0x85 0xE0 0x80 0x93 0x81 0x00
7E10: 0x82 0xE0 0x80 0x93 0xC0 0x00 0x88 0xE1 0x80 0x93 0xC1 0x00 0x86 0xE0 0x80 0x93
...

MD5 sum of bootloader = 0xFB 0xF4 0x9B 0x7B 0x59 0x73 0x7F 0x65 0xE8 0xD0 0xF8 0xA5 0x08 0x12 0xE7 0x9F
Bootloader name: optiboot_atmega328

First 256 bytes of program memory:

0: 0x0C 0x94 0x35 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
10: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
20: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
30: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
...

Nesse caso, ele confirma que o processador principal está funcionando e possui o carregador de inicialização Optiboot.


Coisas que você pode consertar

Regulador de tensão com falha

Isso não é fácil de substituir, mas é necessário apenas se você usar o conector de força. Se você usa USB, isso não é necessário. Como alternativa, você pode providenciar um fornecimento de 4 a 5 V (por exemplo, 3 pilhas AA) e conectá-los diretamente ao soquete de 5 V na placa.


Falha no chip ATmega16U2

Isso é necessário apenas para o upload de esboços via porta USB e depuração serial. Não é particularmente fácil de substituir porque é um SMD (dispositivo montado na superfície). No entanto, você pode gerenciar sem ele.

Você pode fazer o upload de esboços através do cabeçalho do ICSP, se adquirir um dispositivo de programação ICSP.

Exemplos desses dispositivos conectados ao soquete ICSP:

USBtinyISP

AVRISP

(Essas fotos foram tiradas de um Ruggeduino, mas o conceito é o mesmo).


Você também pode obter um cabo FTDI, assim:

Conectar FTDI ao Arduino

Conecte-o às portas seriais da sua placa assim:

Cabo FTDI

FTDI    Arduino Uno

GND       GND  (black wire on FTDI cable, blue jumper wire)
CTS       not connected
VCC       5V
TxD       D0 (RX)
RxD       D1 (TX)
RTS       To RESET with a 0.1 µF capacitor in series with it (green wire)

Agora você pode enviar esboços diretamente para o processador principal, ignorando o chip USB.


Você também pode usar meu programador autônomo de chip Atmega para fazer upload de arquivos .hex - isso permite copiar o arquivo .hex para um esboço em um cartão SD e depois programar a placa através do cabeçalho ICSP.


Falha no chip ATmega328P

O processador principal pode ser substituído com bastante facilidade se estiver montado em um soquete. Adquira um chip de substituição de algum lugar como Adafruit por cerca de US $ 6. Como alternativa, tente o eBay. Tente obter um chip que já tenha o carregador de inicialização Optiboot, para evitar problemas.

Retire cuidadosamente o chip existente do soquete e instale o novo, anotando a localização do pino 1. O pino 1 possui um entalhe no chip e sua orientação correta é observada na primeira foto deste post com uma cor amarela. ponto (mais próximo da borda do quadro). Você provavelmente precisará endireitar as pernas levemente. Segure o chip pelas extremidades e empurre-o suavemente sobre uma superfície plana, como uma mesa, até que eles sejam empurrados um pouco para dentro. Tente não tocar nos pinos de metal, pois pode danificá-los com eletricidade estática.


ATmega328P responde mas não possui gerenciador de inicialização

Eu tenho um esboço no programador do gerenciador de inicialização Atmega que substituirá o gerenciador de inicialização Optiboot. A fiação é a mesma do esboço do detector de chip. O código está no GitHub - nickgammon / arduino_sketches . Se você clicar no botão Download nessa página, receberá vários esboços úteis. O que você deseja é chamado "Atmega_Board_Programmer".

Instale o esboço no seu Uno "conhecido" e conecte-o à placa de destino com a fiação mostrada anteriormente.

Teste o chip ATmega328P

Abra o Serial Monitor no seu "bom" Uno e você deverá ver o seguinte:

Atmega chip programmer.
Written by Nick Gammon.
Version 1.35
Compiled on Jul  9 2015 at 15:06:58 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...

Digite "U" para o carregador Uno (Optiboot).

Using Uno Optiboot 16 MHz loader.
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'Q' to quit, 'V' to verify, or 'G' to program the chip with the bootloader ...

Digite "G" para programar o chip.

Você deveria ver:

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Done.
Programming mode off.
Type 'C' when ready to continue with another chip ...

Isso leva cerca de um segundo. Agora o carregador de inicialização está instalado.


Problemas com o cronômetro do Watchdog

O cronômetro do watchdog (desativado por padrão) pode ser configurado para redefinir o processador após um certo tempo. A intenção é recuperar de um "travar" para um processador implantado no campo. No entanto, se o timer for definido por um curto período (como 16 ms), o processador poderá reiniciar novamente antes que o carregador de inicialização tenha a chance de fazer qualquer coisa.

Os sintomas são que você não pode carregar novos esboços. Alguns gerenciadores de inicialização modernos (como Optiboot) tomam medidas para interromper esse problema como uma das primeiras coisas que eles fazem. No entanto, outros não.

Isso pode ser difícil de recuperar, porque, uma vez que o esboço é executado, você tem o problema de redefinir e, se tiver o problema, não pode substituir o esboço. As pessoas costumam relatar que precisam gravar um novo gerenciador de inicialização para se recuperar. No entanto, isso ocorre apenas porque, como efeito colateral, a gravação de um carregador de inicialização apaga o esboço atual.

Não é uma maneira de recuperar. Siga estes passos:

  • Desligue completamente a placa (remova o cabo USB).
  • Mantenha pressionado o botão Redefinir e mantenha-o pressionado (ou, passe um fio de ponte do pino RESET ao pino GND). Isso interrompe o início do esboço do problema e, assim, a ativação do cronômetro do watchdog
  • Ainda pressionando Redefinir, reconecte o cabo USB.
  • Comece a enviar um esboço que não tem esse problema (por exemplo, piscar)
  • Depois que o IDE relatar "Upload", solte o botão Redefinir (ou remova o fio do jumper).
  • Agora ele deve carregar OK - pois o esboço que ativou o timer do watchdog nunca foi iniciado.

Problemas com o carregamento do Mega2560

Menciono isso aqui, mesmo que este post seja realmente direcionado ao quadro Uno, porque é bastante comum.

Algumas versões do gerenciador de inicialização Mega2560 procuram por "!!!" no upload recebido do PC e, se o virem, entre no modo de depuração. Isso faz com que o upload falhe.

Código de exemplo:

Serial.println ("Furnace overheating!!!");

Soluções:

  • Instale um carregador de inicialização mais recente. Meu esboço "carregador de carregador de inicialização" mencionado anteriormente nesta resposta deve instalar um carregador de inicialização que não tenha esse problema.

Ou (mais simplesmente):

  • Não use "!!!" no seu desenho.

Problemas no upload para o Leonardo / Micro / Esplora etc.

Placas com o ATmega32u4 como seu principal (e único) processador podem ser mais difíceis de carregar. Isso ocorre porque o mesmo chip precisa lidar com envios e também executar seu código.

Há uma pequena janela de oportunidade, após o quadro ser redefinido, quando ele procura um novo esboço a ser carregado. A técnica para fazer upload nessas placas é:

  • Compile seu esboço sem erros.
  • Iniciar o upload
  • Assim que o IDE relatar "Upload", pressione e solte o botão Redefinir.

Você tem apenas um segundo para fazer isso, antes que o esboço antigo comece a ser executado. Não desanime se precisar repetir esse processo algumas vezes. Isso é normal.


Referências


5
Uau. Esta é uma grande grande grande resposta
rpax

1
Essa é uma resposta maravilhosa, senhor.
Mert Gülsoy

"Se você obtiver 5 V com o USB conectado, mas não com a fonte de alimentação, o regulador de voltagem (marcado na foto) provavelmente está danificado. Ou, possivelmente, a fonte de alimentação falhou. Tente uma fonte de alimentação diferente para confirmar qual é a fonte de alimentação. . " - por que isso impediria o upload de esboços?
user2813274

Você está certo, não seria. No entanto, a lista de verificação deveria ser uma lista geral de falhas. Nesse caso, seria mais parecido com "Eu posso enviar um esboço, mas quando implantado no campo, com uma fonte de alimentação (verruga), não funciona".
Nick Gammon

1
Recentemente, tive um problema com os novos drivers FTDI que chips "chineses" chineses "compatíveis com FTDI" (bem, você poderia dizer imitação). Eles colocam o PID do dispositivo em 0x0000, o que tornará os drivers inválidos. Você pode optar por alterar o PID novamente com a ferramenta M_PROG no FTDI ou alterar os drivers (e configurar as janelas para permitir drivers não verificados).
Paul

14

Pelo menos - como eu assumo que você carregou seu sketch via avrdude - forneça mais informações sobre a falha no upload (por exemplo, saída do carregador de esboços) para que as pessoas aqui possam ajudá-lo melhor.

Além da ótima resposta de Nick Gammon, pesquise pontos de exclamação no seu esboço. Se o seu esboço contiver uma sequência com mais de ou igual a 3 pontos de exclamação, o upload falhará, pois as versões antigas do Arduino Bootloader interpretarão esses pontos de exclamação como outra função e o upload será interrompido.

Um exemplo para parar o upload:

char* test = "This will stop the upload!!!";

Veja o problema do código do Google .


1
Bom ponto. Isso se aplica principalmente ao Mega2560, mas admito que o omiti. :)
Nick Gammon

1
Adicionada uma seção para lidar com esse problema.
Nick Gammon

2

Tenho 2x ATMega328P emparelhado na minha placa Arduino Uno devido à estática (eu acho).

A estática parece ter matado o pino TX e, portanto, o programa não pode ser baixado usando o cabo USB.

A solução mais fácil é substituir o microcontrolador. Você pode comprar um novo DIP ATMega328P programado com o gerenciador de inicialização Arduino ( como este da Adafruit ) e está pronto para começar novamente.

Como alternativa, você ainda pode programar os ATMega328P usando o programador AVRISPmkII. Quando você faz isso, todos, exceto o pino Tx, funcionam bem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.