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?
arduino-uno
uploading
atmega328
icsp
Nick Gammon
fonte
fonte
Respostas:
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:
Os principais componentes são:
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.)
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:
Verifique o 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:
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
Fiação:
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:
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:
As pinagens para o cabeçalho ICSP são (de cima):
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:
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:
No entanto, se você receber uma mensagem como esta:
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:
As pinagens para o cabeçalho ICSP são (de cima):
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.
Depois de conectado, abra o monitor serial, defina-o para 115200 baud e você verá algo assim:
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:
(Essas fotos foram tiradas de um Ruggeduino, mas o conceito é o mesmo).
Você também pode obter um cabo FTDI, assim:
Conecte-o às portas seriais da sua placa assim:
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.
Abra o Serial Monitor no seu "bom" Uno e você deverá ver o seguinte:
Digite "U" para o carregador Uno (Optiboot).
Digite "G" para programar o chip.
Você deveria ver:
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:
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:
Soluções:
Ou (mais simplesmente):
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 é:
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
fonte
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:
Veja o problema do código do Google .
fonte
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.
fonte