MSP430 Clock Module und TimerB

Gast #1608979
Lesenswert?

Hallo Zusammen,

Ich habe da gerade ein Problem, bei dem ich nicht weiterkomme:

Mein µC (MSP430F2617) wird mit einem externen Oszillator (8Mhz) am XIN 
betrieben. Das Clockmodul initialisiere ich folgendermaßen:
1
// wait till oscillator runs    
2
     BCSCTL1 |= XTS;
3
     BCSCTL3 |= LFXT1S1;
4
     _BIS_SR(OSCOFF);
5
     do{
6
       IFG1 &= ~OFIFG;
7
       for(counter = 0xff; counter > 0; counter --);
8
     }
9
     while((IFG1 & OFIFG) != 0);
10
     
11
  // Clock Source einstellen 
12
       BCSCTL1 |= XTS + XT2OFF;                                                // externen Oszillator nutzen (8MHz)  
13
       BCSCTL2 |= SELM0 + SELM1 + DIVM0 + DIVS0 + DIVS1 + SELS;                // MCLK (4MHz) + SMCLK (1 MHz)

Nun will ich meinen TimerB aus der SMCLK "versorgen" und testweise 
hochzählen lassen:
1
TBCTL |= TBSSEL1 + ID0 + ID1;           // clock source SMCLK (1MHz) 
2
                                        // divide SMCLK by 8 (125 kHz)
3

4
TBCTL |= MC1;                           // start with continous mode


Wenn ich mir im Debug das TBR Zählregister ansehe, tut sich jedoch nix. 
Sobald ich auf ACLK als Quelle umschalte oder den DCO anstatt des 
externen Oszillators an den SMCLK usw. hänge, wird im TBR hochgezählt. 
Nun hatte ich die Vermutung, dass der externe Oszillator nicht 
anschwingt. Aus diesem Grund habe ich das entsprechende Flag abgefragt 
(s.o.), aber es trat keine Besserung ein.
Auf dem Oszi kann ich den Ausgang des Oszillators sehen (8Mhz). Ist 
einer von Reichelt: XO91 mit 8MHz.

Entweder stehe ich aufm Schlauch oder irgendwo wurde ein Hund begraben. 
Danke schonmal für eure Hilfe.

Grüße
Seb
Gast #1609086
Lesenswert?

Hi Rufus,

Das mit dem Abwarten habe ich auch erst reingenommen, als mir nichts 
anderes mehr eingefallen ist ;)

Deine Fragen sollten sich aus den obrigen Registereinstellungen 
beantworten lassen:

MCLK wird aus dem LFXT1CLK mit einem Teiler 2 gespeist.

Der ACLK sollte seinen Takt auch von dort bekommen, wenn XTS gesetzt 
ist. Vollkommen sicher bin ich mir aber gerade nicht.
#1609124
Lesenswert?

Rufus t. Firefly schrieb:
> Du verwendest einen externen Oszillator, daher ist der Code zum Warten
> auf das Einschwingen des Oszillators unnötig.
Öhhh, kann es sein das diese Aussage nicht so ganz korrekt ist, oder 
übersehe ich was? Wenn der interte DCO benutzt wird muss normalerweise 
NICHT gewartet werden, bei externen Quarzen etc. MUSS gewartet werden.
Gast #1609131
Lesenswert?

Jau, dieses Thema gab es auch schon in anderen Threads. Ich nutze ja 
einen externen Oszillator und keinen Quarz. Deswegen muss ich ja 
eigentlich nicht warten bis der interne Oszi eingeschwungen ist. Es gibt 
jedoch Leute, die eine andere Meinung vertreten.

Mein externer Oszi zappelt ja fröhlich im Rechteck. Ich würde gerne 
wissen, warum mein MSP so rumzickt und keinen SMCLK draus erzeugen kann. 
Sonst würde mein Timer ja hochlaufen. Habe ich in den Registern 
irgendetwas übersehen?
Gast #1609232
Lesenswert?

Habe die obige Initialisierung nun auf einem anderen MSP mit Oszilllator 
am XIN getestet und da wird der TBR auch nicht hochgezählt. Es ist also 
wahrscheinlich, dass irgendeine Registereinstellung nicht stimmt.

Gibt es denn da draußen jemanden, der schon einmal einen Oszillator am 
XIN betrieben hat?
Gast #1609447
Lesenswert?

Ok, diesen Satz habe ich heute schon ein paar Mal durchgelesen, aber 
erst jetzt wird mir die Tragweite bewusst. Ich kann den SMCLK gar nicht 
aus dem XIN Eingang speisen, wenn mein MSP einen XT2 auf dem Chip hat. 
Es besteht keine Hardwareverbindung zwischen den Anschlüssen.

Dann werde ich mich wohl oder übel an den Lötkolben setzen und die Sache 
ändern. Danke für den Augenöffner.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren