Wie stellen Sie fest, ob ein neuer Mikrocontroller defekt ist?


11

Ich habe mich noch nie mit Teilen befasst, die von Digikey defekt sind, aber 3 neue Atmel ATmega164A, die ich erhalten habe, zeigten ein äußerst merkwürdiges Verhalten.

Ich habe es auf etwas eingegrenzt, das mit der Uhr zu tun hat, und es stellte sich heraus, dass das resultierende Taktsignal des angeblich "werkseitig kalibrierten" internen Oszillators zwischen 650 und 700 kHz jitterte, anstatt der soliden 1 MHz, die es sein sollte. Ich konnte in das Kalibrierungsbyte schreiben, um dies sehr nahe an 1 MHz zu bringen (immer noch mit etwas Jitter), und die meisten Dinge funktionieren, aber die UARTs verhalten sich einfach nicht richtig, sie scheinen einen kontinuierlichen Strom von kurzen Impulsen auszugeben, egal was Sie von ihnen verlangen.

Ich habe mich zuvor mit der Low-Power-Version dieses Mikrocontrollers (164P) ohne Probleme befasst und beschlossen, sie an Ort und Stelle zu platzieren und die Taktausgabe zu überprüfen, und es ist eine solide 1 MHz ohne Jitter. Ich neige zu dem Schluss, dass diese 164A-Chips defekt sind, aber würde es andere Tests geben, die ich versuchen könnte, dies zu bestätigen?


Edit: Ich dachte nur, ich würde den Prozess beschreiben, mit dem ich die Uhr messe. Ich habe das Sicherungsbit für den Taktausgang aktiviert und den entsprechenden Pin mit einem Logikanalysator gemessen, der mit einer sehr hohen Rate abtastet. Ich habe ein Programm, das in das Kalibrierungsregister schreibt, OSCCALund ich konnte meinen Weg auf 1 MHz ausprobieren.


Edit # 2: Nach weiteren Untersuchungen scheint der Mikrocontroller nach einer bestimmten Programmgröße zu funktionierenSchwelle. Ein Bare-Bones-Projekt mit einer einzelnen Quelldatei, in der eine LED blinkt, scheint in Ordnung zu sein, aber das Kompilieren und Verknüpfen einer meiner anderen Dateien (z. B. UART-Bibliothek oder was auch immer) ohne einen Funktionsaufruf für diese Methoden führt dazu, dass sich der Mikrocontroller verhält das oben beschriebene Verhalten. Die Stromanschlüsse sind in Ordnung und es wurde eine ordnungsgemäße Entkopplung durchgeführt. Ich habe im Moment keine Zeit, dies weiter zu debuggen, daher haben wir stattdessen die Low-Power-Version verwendet. Ich bin mir nicht sicher, wo genau das Problem liegen könnte. 1) 164A und 164P sind nicht codekompatibel. 2) Das Programmierverfahren ist für diese beiden uCs unterschiedlich. 3) Die Einheiten sind defekt. Ich bin zuversichtlich in unser Board-Design und würde Stromprobleme ausschließen. Leider kann ich keine richtige Antwort finden, also lasse ich diese Frage so wie sie ist - vielleicht bin ich ' Ich werde in Zukunft noch einmal auf das Problem zurückkommen. Dank an alle, die aufschlussreiche Kommentare oder Antworten gegeben haben, können sie anderen Personen mit sofort einsatzbereiten uC-Problemen nützlich sein.


Nicht direkt mit Ihrer Frage verbunden, aber erwähnenswert. Viele IC-Hersteller haben eine Errata-Seite, die sie veröffentlichen, wenn sie Fehler in bestimmten Silizium-Revisionen finden. Ich bin einige Male von einem bekannten Fehler in den Errata erwischt worden, den ich nie überprüft habe. Dies sind normalerweise keine Dinge, die so groß sind wie eine Uhr, die nicht funktioniert, und es wird normalerweise etwas Arbeit angeboten. In Ihrem Fall sind jedoch keine Errata bekannt.
Kellenjb

1
@jon, wenn die Version mit höherer Leistung defekt ist und die Version mit niedrigerer Leistung funktioniert, besteht die Möglichkeit, dass Sie Ihre Schaltung nicht gut entkoppeln und Probleme mit der Energieintegrität auftreten.
Kortuk

@Kellenjb, "Keine bekannten Errata" für dieses Modell im Datenblatt (aktuelles Datenblatt erscheint, 06/11). Auf jeden Fall erwähnenswert, danke.
Jon L

@ Jon Ja, das habe ich mit "Aber in deinem Fall sind keine Errata bekannt."
Kellenjb

1
Ich werde dem zustimmen, was Kortuk gesagt hat. Das riecht für mich nach einem Netzteil- oder Entkopplungsproblem.
Olin Lathrop

Antworten:


3

Es ist selten, dass diese Art von Versagen auftritt. Es ist zu erwarten, dass ein Pin etwas mehr Rauschen aufweist oder dass dieser Pin nicht mehr funktioniert. Aber es "etwas funktionieren zu lassen, aber nicht auf nützliche Weise", ist selten. Ich würde vermuten, dass es Designprobleme gibt, die die Probleme verursachen und etwas mit einem Unterschied zwischen dem 164A und dem 164P zu tun haben. Da der Jitter hoch ist, würde ich mir leistungsbezogene Dinge ansehen. Sind alle Power / Gnd-Pins angeschlossen? Werden die E / A-Pins entweder angesteuert oder hoch oder niedrig gezogen? Etc.

Es bleibt jedoch die Möglichkeit, dass die Teile schlecht sind. Es ist selten, aber nicht ungewöhnlich. Die einzige Möglichkeit, dies festzustellen, besteht darin, weitere Teile von einem anderen Lieferanten zu beziehen und diese auszuprobieren. Wenn sie funktionieren, müssen Sie weitere Untersuchungen durchführen und feststellen, ob Sie sie beim Umgang / Löten getötet haben oder ob sie wirklich schlecht von Digikey stammen.


2
Ich werde alles dreimal überprüfen, wenn ich die Chance dazu bekomme. Auch ich bin skeptisch gegenüber meiner eigenen Schlussfolgerung, dass die Idee, dass dies nicht in der Fabrik aufgefangen wird oder dass es beim Übergang beschädigt wurde, höchst unwahrscheinlich erscheint ... wird zurückmelden.
Jon L

In Bezug auf die Verbindungen wird alles überprüft. Ich werde die Frage bearbeiten, um weitere Details bereitzustellen ...
Jon L

2

Ich hatte einmal ein sehr ähnliches Problem mit Microchip-Basisteilen. Wir haben die ICSP-Programmierung durcheinander gebracht und einen Weg gefunden, die Oszillator-Trimmung zu löschen, was zu groben Fehlern bei der Genauigkeit der internen Uhr führte. Stellen Sie sicher, dass Ihr Programmiergerät und / oder Ihre Programmierwerkzeuge richtig angeschlossen sind und richtig verwendet werden.

Es gibt keine einfache Möglichkeit, die Genauigkeit des Oszillators zu überprüfen, ohne die Teile zu programmieren. Ich würde also einfach ein triviales Port-Toggle-Programm schreiben (eines, das nichts anderes tut, als eine E / A-Leitung zu wackeln) und das Programm von jemand anderem programmieren lassen Teile, vorzugsweise mit unterschiedlicher Programmierhardware. Sobald Sie das Wackeln überprüft haben, können Sie mit Ihrem eigenen Code erneut flashen und prüfen, ob das Problem weiterhin besteht.


Ich habe das Sicherungsbit für den Taktausgang aktiviert und es setzt das Taktsignal an einen Pin am PORTB. Dies ist, was ich abtaste, um die Oszillator- / Taktgenauigkeit zu bestimmen. Ich werde den Programmierprozess und die Tools überprüfen, danke.
Jon L
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.