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, OSCCAL
und 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.