Forum: Mikrocontroller und Digitale Elektronik MSP430F147 Clock


von Peter Lang (Gast)


Lesenswert?

Hallo

Ich arbeite mit einem MSP430F147 mit externem 4MHz Quarz an XIN & XOUT. 
Den ACLK habe ich auf Pin20 (P2.0) ausgegeben und messe meine 4MHz 
(Divider = 1).
Dasselbe habe ich für den MCLK gemacht, messe an Pin48 (P5.4) aber nur 
etwas über 100kHz, obwohl meiner Meinung nach die Initilisierung korrekt 
ist:

*** Code ***

do
    {
    IFG1 &= ~OFIFG;                     // Clear OSCFault flag
    for (int i = 0xFF; i > 0; --i);     // Time for flag to set
    }
  while ((IFG1 & OFIFG));               // OSCFault flag still set?

  BCSCTL1 =  XT2OFF                     // Oscillator XT2 off, only XT1 
used
           + XTS                        // XT1 in high frequency mode 
(Quarz =        4MHz)
           + DIVA_0;                    // Divider ACLK = 1 (ACLK = XT1)
//  IE1 = OFIE;                           // enable osc. fault interrupt
  BCSCTL2 =  SELM_3                     // MCLK source = XT1
           + DIVM_0;                     // Divider MCLK = 1

***********

Kann mir da jemand weiterhelfen?

Gruess Peter

von Msp 4. (msp430_crew)


Lesenswert?

Hallo Peter!

Du kannst wirklich an P2.0 4MHz messen ohne das OSCOFF gelöscht wird?
Ansonsten sieht der Code in Ordnung aus!
Hast Du P5.4 als Ausgang mit Zweitfunktion deklariert?

von Peter Lang (Gast)


Lesenswert?

Hallo!

Ich hab P5.4 folgendermassen initalisiert:

*** Code ***

P5OUT = 0x00;
P5DIR = 0xFA;
P5SEL = 0x70;

************

An P5.6 kann ich ebenfalls meine 4MHz messen....

Gruss Peter

von Stefan (Gast)


Lesenswert?

Ich hoffe sehr, dass ich mit meiner Vermutung falsch liege...
... aber mir kommt es so vor, als ob hier ein Code-Bsp von TI 
hergenommen wird, ein paar Änderungen eingebaut werden und die 
Forums-Gemeinde dann auf Fehlersuch geschickt wird...

Wie gesagt, in der Annahme, dass meine Vermutung falsch ist, hier ein 
paar Anmerkungen zu dem Problem:

1.) Du solltest mal debuggen, ob die do-while-Schleife überhaupt 
verlassen wird. Den Konstrukt "--i" habe ich so noch nie verwendet und 
weiß deshalb auch nicht, ob das funktioniert. Eigentlich nimmt man "i--"

2.) Die Prüfung des OSCFault-Flags ist eigentlich anders gedacht (s. 
auch die Beispiele von TI)
Zunächst aktiviert man nämlich XT1 (oder XT2) und wartet DANN bis 
OSCFault nicht mehr gesetzt ist. So ist sichergestellt, dass der Quarz 
oder Oszillator eingeschwungen ist. Erst dann wechselt man MCLK von DCO 
auf XT1 (XT2).

Vielleicht löst das ja Dein Problem?!

von Peter Lang (Gast)


Lesenswert?

Hallo Stefan!

Muss dich leider enttäuschen mit deiner Vermutung, ich schicke hier 
nicht aus purer Langeweile die Forum-Gemeinde auf die Fehlersuche. Zudem 
denke ich dass jeder der sich in einem Forum aufhält dies freiwillig 
tut...aber egal

Vielen Dank für deine Anmerkungen. Meine Applikation läuft nun :-) Das 
Problem war wirklich, dass ich die Initialisierung nach der Prüfung des 
OSC Fault Flags gemacht habe, was natürlich Käse ist.

Vielen Dank!

Gruss Peter

von Stefan (Gast)


Lesenswert?

>Muss dich leider enttäuschen mit deiner Vermutung
Ich bin nicht enttäuscht, ganz im Gegenteil!
Der Glauben an die Menschheit lebt weiter... :-)

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.