Comment déterminez-vous si un nouveau microcontrôleur est défectueux?

11

Je n'ai jamais eu affaire à des pièces défectueuses du digikey, mais 3 nouveaux Atmel ATmega164A que j'ai reçus ont présenté un comportement extrêmement étrange.

Je l'ai réduit à quelque chose à voir avec l'horloge et il s'est avéré que le signal d'horloge résultant de l'oscillateur interne soi-disant "calibré en usine" oscillait entre 650 et 700 kHz au lieu du 1 MHz solide qu'il est censé être. J'ai pu écrire dans l'octet d'étalonnage pour obtenir ce très proche de 1 MHz (toujours avec une gigue) et la plupart des choses fonctionnent mais les UART ne se comportent pas correctement, ils semblent produire un flux continu d'impulsions courtes, peu importe ce que vous leur demandez de faire.

J'ai traité la version basse consommation de ce microcontrôleur auparavant (164P) avec aucun problème et j'ai décidé de le laisser en place et de vérifier la sortie d'horloge à ce sujet, et c'est un solide 1 MHz sans gigue. Je penche vers la conclusion que ces puces 164A sont défectueuses, mais y aurait-il d'autres tests que je pourrais essayer de confirmer?


Edit: Je pensais juste que je décrirais le processus par lequel je mesure l'horloge. J'ai activé le bit de fusible de sortie d'horloge et mesuré la broche appropriée avec un échantillonnage d'analyseur logique à un taux très élevé. J'ai un programme qui écrit dans le registre d'étalonnage OSCCALet j'ai pu faire des essais et des erreurs sur 1 MHz.


Edit # 2: Après une enquête plus approfondie, il semble que le microcontrôleur commence à agir après une certaine taille de programmeseuil. Un projet simple avec un fichier source unique faisant clignoter une LED semble être OK, mais la compilation et la liaison dans l'un de mes autres fichiers (par exemple la bibliothèque UART ou autre) sans même appeler de fonction à ces méthodes fait que le microcontrôleur se comporte le comportement décrit ci-dessus. Les connexions électriques sont correctes et un découplage correct a été effectué. Je n'ai pas le temps de déboguer davantage pour le moment, nous avons donc plutôt opté pour la version basse consommation. Je ne sais pas exactement où le problème pourrait être soit 1) 164A et 164P ne sont pas compatibles avec le code 2) La procédure de programmation est différente pour ces deux uC 3) Les unités sont défectueuses. Je suis confiant dans la conception de notre carte et exclurais les problèmes d'alimentation. Malheureusement, je ne peux pas vraiment choisir une bonne réponse, je vais donc laisser cette question telle quelle - peut-être que je ' Je reviendrai sur le problème à l'avenir. Merci à tous ceux qui ont fourni des commentaires ou des réponses perspicaces, ils pourraient être utiles à quelqu'un d'autre avec des problèmes uC prêts à l'emploi.

Jon L
la source
Pas directement lié à votre question, mais mérite d'être mentionné. De nombreux fabricants de circuits intégrés ont une page d'errata qu'ils publient lorsqu'ils trouvent des bogues dans certaines révisions de silicium. J'ai été attrapé plusieurs fois par un bug connu qui se trouvait dans l'errata que je n'ai jamais vérifié. Ce ne sont généralement pas des choses aussi grosses qu'une horloge qui ne fonctionne pas et ont généralement du travail. Mais dans votre cas, il n'y a pas d'errata connu.
Kellenjb
1
@jon, si la version de puissance supérieure est défectueuse et que la version de puissance inférieure fonctionne, il y a une chance que vous ne découpliez pas bien votre circuit et qu'il ait des problèmes d'intégrité de l'alimentation.
Kortuk
@Kellenjb, "Aucun errata connu" pour ce modèle dans la fiche technique (dernière fiche technique apparue, 06/11). Cela vaut certainement la peine d'être mentionné, mais merci.
Jon L
@ Jon Ouais, c'est ce que je voulais dire par "Mais dans votre cas, il n'y a pas d'errata connu."
Kellenjb
1
J'appuie ce que Kortuk a dit. Cela me sent comme un problème d'alimentation ou de découplage.
Olin Lathrop

Réponses:

3

Il est rare d'avoir ce genre d'échec. Vous pourriez vous attendre à voir un peu plus de bruit sur une broche, ou avoir cette broche complètement non fonctionnelle. Mais le faire "fonctionner quelque peu, mais pas de manière utile" est rare. Je soupçonne que des problèmes de conception sont à l'origine des problèmes et ont quelque chose à voir avec une différence entre le 164A et le 164P. Étant donné que la gigue est élevée, je regarderais les choses liées au pouvoir. Toutes les broches d'alimentation / gnd sont-elles connectées? Les broches d'E / S sont-elles entraînées ou tirées haut ou bas? Etc.

Mais il reste toujours la possibilité que les pièces soient mauvaises. C'est rare, mais pas inconnu. La seule vraie façon de le savoir est d'obtenir des pièces supplémentaires d'un autre fournisseur et de les essayer. S'ils fonctionnent, alors vous devez enquêter davantage et voir si vous les avez tués lors de la manipulation / soudure ou s'ils venaient vraiment de Digikey.


la source
2
Je vérifierai tout lorsque j'en aurai l'occasion. Moi aussi, je suis sceptique quant à ma propre conclusion, l'idée que cela ne serait pas pris à l'usine ou la chance qu'il ait été endommagé pendant la transition semble très peu probable ... rendra compte.
Jon L
en ce qui concerne les connexions, tout est vérifié. Je vais modifier la question pour fournir plus de détails ...
Jon L
2

J'ai eu une fois un problème très similaire avec les pièces de base de Microchip. Nous gâchions la programmation ICSP et trouvions un moyen d'effacer le trim de l'oscillateur, provoquant des erreurs grossières dans la précision de l'horloge interne. Assurez-vous que votre appareil de programmation et / ou vos outils de programmation sont correctement connectés et sont utilisés correctement.

Il n'y a pas de moyen facile de vérifier la précision de l'oscillateur sans programmer les pièces, donc j'écrirais simplement un programme de bascule de port trivial (un qui ne fait rien mais agiter une ligne d'E / S) et demander à quelqu'un d'autre de programmer le pièces, de préférence avec un matériel de programmation différent. Une fois que vous avez vérifié la manœuvre, vous pouvez reflasher avec votre propre code et voir si le problème persiste.

Adam Lawrence
la source
J'ai activé le bit de fusible de sortie d'horloge et il met le signal d'horloge sur une broche sur PORTB. C'est ce que j'échantillonne pour déterminer la précision de l'oscillateur / horloge. Je vais vérifier le processus de programmation et les outils, merci.
Jon L