Recebi um ATmega328-PU com assinatura incorreta. Como posso consertar isso?

12

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.

Ricardo
fonte
1
Parece que seu fornecedor simplesmente classificou incorretamente alguns 328Ps (que é o que essa assinatura representa) como 328s.
microtherion

Respostas:

4

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.

O médico
fonte
3
Você pode elaborar essa resposta um pouco? Resumir os artigos aos quais você vinculou seria um bom começo - agora, se o sparkfun cair por qualquer motivo, sua resposta será inútil.
Shog9
@ Shog9 Por quê? A questão está muito fora da base. Esta resposta é um resumo de instâncias de pessoas que recebem chips com etiquetas incorretas ( essencialmente pessoas que compartilham experiências ). Quem isso vai ajudar?
asheeshr
Eu poderia perguntar o mesmo, @AsheeshR - por que se preocupar com uma resposta quando a pergunta é o problema? De qualquer forma, obrigado por adicionar os detalhes, TheDoctor.
Shog9
3

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):

avrdude -p atmega328 -c arduino -P /dev/ttyUSB003 -b 19200 -v -U signature:w:0x1E,0x95,0x14:m
jippie
fonte
2
Sei que é muito tarde, mas não acho que seja uma boa idéia deixar isso como a resposta aceita sem contestação: a assinatura em um atmega328 não é gravável e, pelo que sei, a assinatura não é gravável em QUALQUER atmega ou atento.
microtherion
2
Por interesse, tentei a abordagem acima, que a avrdude aceitou em certo sentido: avrdude: writing signature (3 bytes)- no entanto, falhou em fazê-lo:avrdude: verification error, first mismatch at byte 0x0002: 0x14 != 0x0f
Nick Gammon