MSP430F2410: XT1 32.768 kHz schwingt auf 191.192kHz

Gast #1674290
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.
Gast #1674891
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
Gast #1674898
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
Gast #1675033
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

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