Eine besonders irritierende Art von Fehlern in einem mikroprozessorgesteuerten System besteht darin, dass der Mikroprozessor unerwartet zurückgesetzt wird. Ein wichtiges Tool zum Debuggen solcher Probleme ist eine Liste möglicher Ursachen. Was kann dazu führen, dass ein Mikrocontroller unerwartet zurückgesetzt wird?
microcontroller
microprocessor
reset
debugging
Stephen Collings
quelle
quelle
Antworten:
Bei PIC- und dsPIC-Chips habe ich die folgenden Ursachen für ein unerwartetes Zurücksetzen festgestellt.
Hardware:
Software:
Auf einigen dsPICs speichert das RCON-Register Bits, die die Ursache für das Zurücksetzen angeben. Dies kann beim Debuggen sehr hilfreich sein.
quelle
Der RESET-Pin muss ordnungsgemäß von einem Reset-Schaltkreis angesteuert werden, der die Über- / Unterspannung überwacht und ein ausreichend langes Reset-Signal erzeugt. Vor diesem Hintergrund kommen meine Erfahrungen mit einem unkontrollierten Hardware-Reset von:
quelle
Eine weitere Möglichkeit, die ich in dieser Liste nicht gesehen habe, ist ein Gerät, das ICSP unterstützt. Wenn für Leitungen, die im seriellen Schaltungsprogrammiermodus ausgelöst werden, nicht genügend Pull-ups verwendet werden, kann dieser Modus manchmal zufällig aufgerufen werden. Dies führt kurze Zeit später zu einem Reset, wenn keine Programmaktualisierung an die vorgesehenen seriellen Empfängerleitungen gesendet wird. Ich vermute, dass ein interner Watchdog-Timer das Zurücksetzen erzwingt, wenn ICSP gestartet und keine Programmierdaten gesendet werden. Dies ist ein Fehler, den ich gemacht und viel Zeit damit verbracht habe, mit einem 16F876 zu suchen.
quelle
Stellen Sie bei Verwendung von CMOS- oder TTL-Logik-Chips in Ihrer Schaltung sicher, dass diese über ausreichende Entkopplungskondensatoren zwischen Vdd und Masse verfügen (normalerweise 0,1 uF). Ich habe einen CD4021 in einem Design verwendet, und als er verwendet wurde, verursachte er anscheinend einen Spitzenwert, der den Neustart des Mikroprozessors verursachte. Dann würde sich der Zyklus wiederholen. Aus diesem Grund ist es auch eine gute Idee, eine offensichtliche Testsequenz (z. B. ein paar Mal das Blinken einer LED) am Anfang Ihres Codes zu platzieren, damit Sie wissen, dass der Mikroprozessor arbeitet und Code ausführt.
quelle
Dies ist eines der seltenen Dinge, die auftauchen könnten:
Ich hatte ein Projekt mit einem Mikrocontroller, der sich sporadisch selbst zurücksetzte. Lange Rede kurzer Sinn, es stellte sich heraus, dass eine Option aktiviert oder deaktiviert werden musste, damit es nicht zu Rücksetzungen kam. Das habe ich erst herausgefunden, als ich die Errata gelesen habe, nachdem ich auf alles andere verzichtet hatte.
Jetzt mache ich es mir zur Gewohnheit, die Errata zu lesen, bevor ich mich dazu entscheide, einen Chip zu verwenden, um zu wissen, worauf ich mich einlasse und ob ich damit fertig werde. Unglücklicherweise hatte ich nach meinem Abschluss niemanden, der mich über die gängigen Praktiken aufklären konnte, so sehr war mein Lernen in der realen Welt durch Misserfolg und Frustration geprägt.
quelle