www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Clock Module und TimerB


Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
// wait till oscillator runs    
     BCSCTL1 |= XTS;
     BCSCTL3 |= LFXT1S1;
     _BIS_SR(OSCOFF);
     do{
       IFG1 &= ~OFIFG;
       for(counter = 0xff; counter > 0; counter --);
     }
     while((IFG1 & OFIFG) != 0);
     
  // Clock Source einstellen 
       BCSCTL1 |= XTS + XT2OFF;                                                // externen Oszillator nutzen (8MHz)  
       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:
TBCTL |= TBSSEL1 + ID0 + ID1;           // clock source SMCLK (1MHz) 
                                        // divide SMCLK by 8 (125 kHz)

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

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrektur: XO53 mit 8MHz.

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

Bewertung
0 lesenswert
nicht lesenswert
Du verwendest einen externen Oszillator, daher ist der Code zum Warten 
auf das Einschwingen des Oszillators unnötig. Den brauchst Du nur, wenn 
Du den Oszillator im MSP430 selbst nutzt und einen externen Quarz 
angeschlossen hast.

Woraus speist Du ACLK und MCLK?

Autor: Seb (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
_BIS_SR(OSCOFF);

Du meinst wohl eher:
_BIC_SR(OSCOFF);

Ausserdem bei 'nem ext. Oszillator LFXT1S3

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider hat sich bisher keine Besserung eingestellt. Der TimerB will mit 
dem SMCLK nicht hochzählen. So langsam bin ich mir nicht sicher, ob ich 
den Oszillator am XIN anschließen kann.

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

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

Autor: Seb (Gast)
Datum:

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

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

Bewertung
0 lesenswert
nicht lesenswert
Ahh, ein QuarzOSZILLATOR, jetzt is klar :) Auf den muss man natürlich 
nicht warten...

Autor: Seb (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es ist also wahrscheinlich, dass irgendeine Registereinstellung
>nicht stimmt.
Meinen Tip von 12:28Uhr schonmal beherzigt?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zweiter Tip:

SELS = LFXT1CLK, if XT2 not present !!!

Autor: Seb (Gast)
Datum:

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

Autor: Seb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quick'n'dirty umgelötet/programmiert auf XT2IN und siehe da...

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.