Dans le passé, je brûlais des chargeurs de démarrage sur un nouveau lot de quatre ATmega328-PU en utilisant l'IDE Arduino (remarquez qu'il n'y a pas de P après 328 - c'est la version non picopower légèrement moins chère du MCU, à ne pas confondre avec l' ATmega328P- PU avec un P ), et a été surpris par le message suivant d'avrdude:
avrdude: Device signature = 0x1e950F
avrdude: Expected signature for ATMEGA328 is 1E 95 14
Double check chip, or use -F to override this check.
Cela signifie qu'avrdude pensait que la puce n'était pas ce que son étiquette disait. Ensuite, j'ai changé le type de puce de mon Arduino IDE en ATmega328P-PU et avrdude a brûlé le chargeur de démarrage sans se plaindre. Cela signifie que la puce a été étiquetée comme un MCU et en interne, elle a répondu comme un autre, légèrement différente.
Ce que j'aimerais savoir c'est:
Quelle est la rareté de cet événement? Quelqu'un a-t-il eu une expérience similaire?( Question originale, hors sujet )Est-il possible de réparer ça? Comment puis-je fixer la signature afin que avrdude reconnaisse correctement la puce?
C'est un cross-post de EE.SE . J'ai posté cette question là, mais n'a pas attiré beaucoup d'attention, donc je voulais voir si quelqu'un de notre communauté avait une expérience similaire.
Réponses:
En parcourant sparkfun, j'ai trouvé plusieurs articles de presse qui montrent leur lutte avec les puces mal étiquetées. Voici quelques-uns:
Sparkfun avait reçu un envoi douteux de circuits intégrés d'un nouveau vendeur en Chine. Ils ont décidé de les tester avant de les envoyer en production, et aucun de leurs panneaux de test n'a fonctionné. À l'aide d'acide nitrique, ils ont pu retirer le boîtier des circuits intégrés et former un gros morceau de métal qui ressemblait à du cuivre.
Dans un autre article, ils ont disséqué des circuits intégrés suspects d'Atmel et ont trouvé une plaquette de silicium semi-conducteur ON à l'intérieur. Les puces n'étaient pas des ATmegas fonctionnels, mais elles avaient du silicium, contrairement aux autres.
la source
Ce n'est pas le moyen préféré de réparer les choses et certainement pas la première solution à considérer, mais vous pouvez envisager de programmer les octets de signature. Avant de tenter cela, assurez-vous absolument que vous voulez vraiment le faire et que vous avez étudié ce qui est impliqué pour l'annuler. Cela peut impliquer de modifier les fichiers de configuration sur votre ordinateur ...
Quoi qu'il en soit, la façon de définir les octets de signature du contrôleur est la suivante (non testé, je n'ai pas d'AVR de rechange):
la source
avrdude: writing signature (3 bytes)
- mais elle n'a pas réussi:avrdude: verification error, first mismatch at byte 0x0002: 0x14 != 0x0f