Em algum momento no passado, eu estava queimando bootloaders em um novo lote de quatro ATmega328-PU usando o Arduino IDE (observe que não há P após 328 - é a versão um pouco mais barata e sem picopower do MCU, que não deve ser confundida com o ATmega328P- PU com um P ) e ficou surpreso com a seguinte mensagem da avrdude:
avrdude: Device signature = 0x1e950F
avrdude: Expected signature for ATMEGA328 is 1E 95 14
Double check chip, or use -F to override this check.
Isso significa que a avrdude achou que o chip não era o que seu rótulo dizia. Depois mudei o tipo de chip no meu Arduino IDE para ATmega328P-PU e avrdude queimei o gerenciador de inicialização sem queixas. O que isso significa é que o chip foi rotulado como um MCU e, internamente, respondeu como outro, um pouco diferente.
O que eu gostaria de saber é:
Quão raro é este evento? Alguém já teve uma experiência similar?( Pergunta original, fora do tópico )É possível consertar isso? Como posso corrigir a assinatura para que o avrdude reconheça o chip corretamente?
Este é um cross-post de EE.SE . Eu postei essa pergunta lá, mas não atraí muita atenção, então queria ver se alguém da nossa comunidade teve uma experiência semelhante.
Respostas:
Enquanto navega no sparkfun, encontrei várias postagens de notícias que mostram sua luta com chips errados. Aqui estão alguns:
Sparkfun recebeu uma remessa questionável se os CIs de um novo vendedor na China. Eles decidiram testá-los antes de enviá-los à produção, e nenhum de seus painéis de teste funcionou. Usando ácido nítrico, eles foram capazes de remover o gabinete dos CIs e formar um pedaço de metal que parecia cobre.
Em outro artigo, eles dissecaram alguns CIs suspeitos da Atmel e encontraram uma pastilha de silicone semicondutor ON dentro. Os chips não eram ATmegas funcionais, mas tinham silício, ao contrário dos outros.
fonte
Não é a maneira preferida de consertar as coisas e certamente não é a primeira solução a considerar, mas você pode considerar programar os bytes da assinatura. Antes de tentar isso, tenha certeza absoluta de que realmente deseja fazer isso e investigou o que está envolvido para desfazer isso. Isso pode envolver a alteração dos arquivos de configuração no seu computador ...
De qualquer forma, a maneira de definir os bytes de assinatura do controlador é a seguinte (não testado, não tenho um AVR disponível):
fonte
avrdude: writing signature (3 bytes)
- no entanto, falhou em fazê-lo:avrdude: verification error, first mismatch at byte 0x0002: 0x14 != 0x0f