Forum: Mikrocontroller und Digitale Elektronik Oscillator Fault bei MSP430F2012


von Uhu U. (uhu)


Lesenswert?

Ich habe den 2012 im Steckbrett am eZ430-F2013-Dongle. Es ist lediglich 
die Betriebsspannung und die Pins 10 (RST) und 11 (TEST) an den Dongle 
angeschlossen.

Seltsamerweise ist schon vor Ausführung des ersten ASM-Befehls das 
OFIFG-Flag (Oscillator fault) im IFG1-Register gesetzt.

Das Flag läßt sich nicht zurücksetzen, weder im Debugger, noch per
bic.b #OFIE, IFG1

Sobald ich den OFIE-Interrupt (Oscillator Fault enable) im IE1-Register 
freigebe lande ich in der NMI-Interrupt-Service-Routine.

Was ist da los?

von Stefan (Gast)


Lesenswert?

Das gesetzte OFIFG resultiert aus einem gesetzten LFXT1OF, weil der 
LFXT1 standardmäßig nach Reset aktiv ist. Ohne 32kHz am LFXT1 kommt 
LFXT1OF-Fehler.

Siehe User-Guide "Basic-Clock_module+"

von Uhu U. (uhu)


Lesenswert?

Nur leider bekomme ich den NMI auch, wenn ich einen Uhrenquarz an die 
Pins 12 und 13 hänge. Die Einstellungen für die Lastkondensatoren habe 
ich alle durchprobiert, ohne daß sich was geändert hat.

Ist das so kritisch, daß es im Steckbrett nicht funktioniert?

von Jörg S. (joerg-s)


Lesenswert?

D.h. das Bit kommt ständig wieder?
Normalerweise musst du ja erst warten bis der Quarz richtig 
angeschwungen ist bevor das Bit nicht mehr vom MSP gesetzt wird.

Siehe User Guide:
After a PUC, the basic clock module+ uses DCOCLK for MCLK. If required,
MCLK may be sourced from LFXT1 or XT2.
The sequence to switch the MCLK source from the DCO clock to the crystal
clock (LFXT1CLK or XT2CLK) is:
1) Switch on the crystal oscillator and select appropriate mode
2) Clear the OFIFG flag
3) Wait at least 50 μs
4) Test OFIFG, and repeat steps 1-4 until OFIFG remains cleared.

von Uhu U. (uhu)


Lesenswert?

Ich habs gelöst - wenn ich ihm genug Zeit gebe, dann kann ich das 
IR-Flag zurücksetzen und bekomme dann den NMI nicht mehr.

Danke für den Anschub.

von OFIFG (Gast)


Lesenswert?

Hallo,

ich habe auch eine Frage bzgl des Oscillator-fault-Flags und den damit 
zusammenhängenden Interrupts, konkret ist mir nicht ganz klar, was ich 
eigentlich aus dieser Bedingung ableiten soll...

Wenn ich merke, dass der Oscillator instabil wird, zu langsam, zu 
schnell, oder was auch immer das Oscillator-Fault-Flag auslöst, was 
genau soll ich daraus denn nun schlussfolgern, bzw. welche Reaktion wäre 
angemessen?

In Beispiel Interrupt-Service-Routinen wird oftmals schliht das Flag 
zurückgesetzt...

Bestenfalls ist wohl die Zeitbasis zerstört.
Schlechtestenfalls hat der Controller ab Setzen des Flags noch ein oder 
zwei Takte bis er zum Stillstand übergeht...

In jedem Fall aber ist wohl bei einem Oscillator-Fehler davon 
auszugehen, dass dieser mit steter Regelmäßigkeit erneut auftreten 
wird..., sofern der Oscillator überhaupt nochmal anschwingt.

mfg

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
Noch kein Account? Hier anmelden.