Hallo! Ich stehe gerade vor einem merkwürdigem Problem. Egal ob ich den UCSI_A1 (UART-Mode) initialisiere, oder nicht, startet die MCU bei jedem Byte auf diesem Port neu. Die Versorgungsspannung ist stabil. Es besteht kein Kurzschluss zu benachbarten Leitungen. Watchdog ist aus (WDTCTL = WDTPW + WDTHOLD). Weiß jemand woran das liegen könnte? Bin für jeden Tipp dankbar! Gruß Mika
Interrupt aktiviert, kein Interrupthandler vorhanden?
Ähm!? Ich habe keine Interrupts aktiviert, dementsprechend auch keine Interrupthandler implementiert. Welche brauche ich denn!? BTW: Ist es normal, dass wenn der MSP Reseted auch die RST/NMI Pin auf Low geht!? Dieser Pin ist via Pull-Up an VCC angeschlossen und wenn die CPU reseted geht der Pin auf low für ca. 1,3ms auf Low.
Habe jetzt sogar den General Interrupt (_DINT) deaktiviert. Der Neustart erfolgt trotzdem!
Nun, dann könnte der Watchdog der schuldige sein - das kann einem passieren, wenn man nicht die zum jeweiligen MSP430-Derivat gehörende Headerdatei verwendet; die I/O-Adresse des Watchdogs ist nicht bei allen MSP430 gleich.
Hallo! Danke für deine Antwort. Momentan verwendet wird die "msp430x24x.h", so wie es auch in den Code-Beispielen von Ti der Fall ist. Und den Watchdog habe ich doch deaktiviert (WDTCTL = WDTPW + WDTHOLD). Oder ist das nicht ausreichend? Gruß Mika
Nun, das scheint die richtige Datei zu sein. Dann sollte auch Dein Deaktivieren des WD funktionieren. Du könntest natürlich zur Sicherheit mal nachsehen, wie die Adresse WDTCTL in der Headerdatei definiert ist, und das mit der Angabe im Datenblatt/User Manual abgleichen. Mehr ist ohne ein Blick auf Deinen Code nicht drin.
Du kannst ja auch nach so einem Reboot mal in das IFG1 Register gucken, ob wirklich das WDTIFG gesetzt ist. Das bleibt nach dem WDT-Reset aktiv, bis man es selbst zurück setzt. Damit kann man erkennen, ob der MSP normal gestartet oder durch den WDT zurückgesetzt wurde. Mal noch was anderes: Hast du eventuell große Arrays im RAM angelegt? Bei großen Arrays dauert das Initialisieren durch den CStartup Code nämlich länger als das WDT Intervall und der MSP startet immer wieder durch. Daher muss bei großen RAM-Arrays das Anhalten des WDT vor den StartUp Code gelegt werden.
Mika schrieb: > BTW: > Ist es normal, dass wenn der MSP Reseted auch die RST/NMI Pin auf Low > geht!? Dieser Pin ist via Pull-Up an VCC angeschlossen und wenn die CPU > reseted geht der Pin auf low für ca. 1,3ms auf Low. Hört sich nicht normal an.
Jörg S. schrieb: > Mika schrieb: >> BTW: >> Ist es normal, dass wenn der MSP Reseted auch die RST/NMI Pin auf Low >> geht!? Dieser Pin ist via Pull-Up an VCC angeschlossen und wenn die CPU >> reseted geht der Pin auf low für ca. 1,3ms auf Low. > Hört sich nicht normal an. Hört sich auch nicht normal an, dass da nur ein Widerstand dran ist. Da gehört ja eigentlich noch ein Kondensator nach Masse dran.
Hallo! Vielen Dank für eure Tipps! Hab den Fehler gefunden. Und es lag nicht am MSP. Parallel zu meinem Pull Up am Reset lag noch eine Steuerleitung von eine Adapterplatine, was ich komplett übersehen habe. Und die Adapterplatine war falsch konfiguriert und hat den MSP resetet. Komisch ist nur, dass ich der erste bin, der das festgestellt hat. Aber sei's drum. Problem gefunden und beseitigt. Auch wenn es mir jetzt schon peinlich ist diese Fehlerursache zu berichten. Hoffe ich hab draus gelernt. Aus euren Antworten nehme ich auch noch zwei Dinge mit: * den Kondensator am Reset und * die langen Arrays (Watchdog) Danke euch noch mal! Das Forum hier kann man echt weiterempfehlen! ;) Viele Grüße Mika
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.