Forum: Mikrocontroller und Digitale Elektronik MSP430F2410: XT1 32.768 kHz schwingt auf 191.192kHz


von Mika (Gast)


Lesenswert?

Hallo!

Ich habe an meinem MSP430F2410 einen 32.768 kHz an XT1 und einen 8MHz an 
XT2 angeschlossen. Der 8 MHz schwingt perfekt.
Der Uhrenquarz allerdings auf 191..192kHz was ja nicht mal eine 
Oberwelle ist (n=6: 196,608 kHz). Egal ob ich die interen 
Ziehkapazitäten des MSP oder interne (12,5pf) verwende. Also Quarz kommt 
dieser zum Einsatz: 
http://de.rs-online.com/web/search/searchBrowseAction.html?method=searchProducts&searchTerm=547-6979
Initialisiert wird das ganze so:
1
  // enable Low-frequency oscillator LFXT1
2
  BCSCTL1                         =      XTS | DIVA_0 | XT2OFF;
3
  
4
  // enable High-frequency oscillator XT2
5
  BCSCTL1                         &= ~XT2OFF;
6
  
7
  //setup ACLK source and parameters, external crystal XT1 is 32.768 kHz (internal 12,5pF), XT2 is 8MHz 
8
  BCSCTL3                         =       LFXT1S_0 | XT2S_1 | XCAP_3;
9
  
10
  do
11
  {
12
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
13
    for (osc_time = 0xFF; osc_time > 0; osc_time--);             // Time for flag to set
14
  }
15
  while (IFG1 & OFIFG);                     // OSCFault flag still set?
16
  
17
  BCSCTL2 |= SELM_2 + DIVM_0;               // MCLK = XT2 HF XTAL (safe) + Divider for MCLK = 0
18
  BCSCTL2 |= SELS + DIVS_0;                 // SMCLK = XT2 HF XTAL (safe) + Divider for SMCLK = 0

Hat jemand eine Ahnung, wieso der Quarz auf 192kHz schwingt?!?

Danke für jeden Tipp!

Viele Grüße
Mika

P.S.:
Diese Frequenz ist auf beiden aufgebauten Boards und mit ausgetauschtem 
Quarz.

von Jörg S. (joerg-s)


Lesenswert?

Wie misst du eigentlich die Frequenz?

von Mika (Gast)


Lesenswert?

Hallo!

Mit dem Oszilloskop ...
Tektronix TDS 3014B
1:10 Tastkopf
1Meg Einggangswiderstand

So messe ich auch den 8MHz Quarz und der schwingt "schön".

von siegmar (Gast)


Lesenswert?

Hallo,

um einen Meßfehler auszuschließen, würde ich einfach die 32khz auf ein 
Port leiten und dort messen.
Stimmt dein Layout mit den Empfehlungen von Ti überein ?
Ansonsten mal einen Quarz nehmen, den Ti in einem Referenz Design 
empfiehlt.
Noch einen schönen Tag
Gruß
Siegmar

von Jörg S. (joerg-s)


Lesenswert?

>um einen Meßfehler auszuschließen, würde ich einfach die 32khz auf ein
>Port leiten und dort messen.
Ja, das wäre besser.

von Dennis (Gast)


Lesenswert?

Mika schrieb:
> BCSCTL1                         =      XTS | DIVA_0 | XT2OFF;

XTS steht für die Aktivierung des "High frequency modes" von LFXT1! Das 
ist aber ein Low Frequency Quarz!

Initialisiere das mal so:

// BCSCTL1: BASIC CLOCK SYSTEM CONTROL REGISTER 1
// XT2OFF:  XT2 Oscillator (Bit geloescht: XT2 ist an)
  BCSCTL1 &= ~XT2OFF;

// BCSCTL3: BASIC CLOCK SYSTEM CONTROL REGISTER 3
// XT2Sx:   XT2 Range Select (hier SELM_1: 3-16 MHz)
// XCAPx:   Oscillator Capacitor Selection (hier: ~12,5pF)
  BCSCTL3 = XT2S_2 + XCAP_3;

// BCSCTL2: BASIC CLOCK SYSTEM CONTROL REGISTER 2
// SELMx:   Select MCLK (hier SELM_2: XT2CLK)
// SELS:    Select SMCLK (Bit gesetzt: XT2CLK)
  BCSCTL2 = SELM_2 + SELS;


Gruß, Dennis

von Dennis (Gast)


Lesenswert?

Dann machste mal:

P5SEL |= 0x50;    // P5.4 MCLK, P5.6 ACLK
P5DIR |= 0x50;    // P5.4 und P5.6 als Ausgang

Dann kannste die Frequenzen messen.


Gruß, Dennis

von Dennis (Gast)


Lesenswert?

Dennis schrieb:
> // XT2Sx:   XT2 Range Select (hier SELM_1: 3-16 MHz)

Sorry, Tippfehler! Auch wenn es nur Kommentar ist.

Muss natürlich heißen:

// XT2Sx:   XT2 Range Select (hier XT2S_2: 3-16 MHz)

von Mika (Gast)


Lesenswert?

Hallo!

Danke für den Tipp!
Es lag wirklich an dem XTS!
Allerdings muss im BCSCTL1 dir range Select Bits auf 0 gesetzt werden.
Mit deinem Code steht im BCSCTL1 0x07 und mit dieser Einstellung kommt 
ich aus dieser Überwachungsroutine nicht raus
1
  do
2
  {
3
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
4
    for (osc_time = 0xFF; osc_time > 0; osc_time--);             // Time for flag to set
5
  }
6
  while (IFG1 & OFIFG);                     // OSCFault flag still set?

Egal, es geht jetzt! Dank dir!

Gruß
Mika

P.S.:
Das ich XT2S_1 statt XT2S_2 verwendet habe ist mir gar nicht aufgefallen 
... Hat aber auch so funktioniert. :P

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.