mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F2410: Neustart bei Daten auf UCA1RXD


Autor: Mika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interrupt aktiviert, kein Interrupthandler vorhanden?

Autor: Mika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ä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.

Autor: Mika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt sogar den General Interrupt (_DINT) deaktiviert.
Der Neustart erfolgt trotzdem!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.