Forum: Mikrocontroller und Digitale Elektronik Lastkapazitäten für 16MHz-Quarz am MSP430F2131


von odic (Gast)


Lesenswert?

Hallo zusammen,

ich habe derzeit Probleme mit einem 16MHz Quarz am MSP430F2131, welche 
ich mir nicht erklären kann. Der Quarz sitzt auf dem PCB ca. 1,5 cm vom 
µC entfernt. Lastkapazität laut Datenblatt sollte 32pF sein, was 
rechnerisch ca. 2 * 60pF ergibt. Das ungewöhnliche ist nur, daß der 
Quarz OHNE Lastkondensatoren problemlos und zuverlässig schwingt, wenn 
ich aber 2 * 33pF dran hänge (habe gerade nichts anderes zwischen 33pF 
und 100pF greifbar), läuft der MSP nicht an.

Kann mir das jemand zufällig erklären?


Beste Grüße,
odic

von Christian R. (supachris)


Lesenswert?

Sind die internen Lastkapazitäten auch wirklich deaktiviert?

von odic (Gast)


Lesenswert?

Ja

von Christian R. (supachris)


Lesenswert?

Dann weiß ich es aucvh nicht. So viel parasitäre Kapazität ist schon 
bissl viel, denke ich. Aber möglich ist alles. Kannst du ein Bild des 
Layouts aus dem entsprechenden Bereich posten? An den alten F16x 
funktionieren externe HF-Quarze nur mit 2x 33pF bis 2x 56pF, je nach 
Quarz. Ohne Cs schwingt da nix....

von odic (Gast)


Lesenswert?

Mittlerweile habe ich eine Vermutung woran es liegt. Nach Austausch der 
SMD-Kondensatoren gegen bedrahtete mit ebenfalls 33pF läuft das Ganze. 
Eventuell sind das, was mir Reichelt als 33pF verkauft hat, doch etwas 
mehr.

Danke jedenfalls fürs Mitsuchen.....

von Christian R. (supachris)


Lesenswert?

Hihi, würde mich bei der Angelika nicht wundern. Kein Multimeter mit 
Kapazitäts-Schätzung zur Hand?

von odic (Gast)


Lesenswert?

Sie wird ja die Kommissionierung doch wohl nicht selbst gemacht 
haben.... ;-)

Nee, momentan leider nicht. Ich werde ihn mal grob in einem RC-Glied 
abschätzen....

von odic (Gast)


Lesenswert?

Habe neue SMD-Kondensatoren besorgt (diesmal 47pF) und jetzt tut alles. 
Es lag also vermutlich an den 33pF Kondensatoren, die gar keine 
waren....

von Peter Diener (Gast)


Lesenswert?

Hallo,

ich kann mir (ohne dein Design genauer zu kennen) nicht vorstellen, dass 
so viel Kapazität notwendig ist. Ich komme bei Standardquarzen bei 
meinem aktuellen MSP430F247 auf 2x 12 pF notwendige Außenbeschaltung. 
Ich habe 2x 10pF eingebaut und damit schwingt der Oszillator einwandfrei 
und mit allen Werten innerhalb der spec.

Zur vorherigen Frage, ob die richtige Lastkapazität intern eingestellt 
ist, muss ich sagen, dass das nur für den Niederfrequenzoszillator beim 
MSP gilt. Diese Einstellung wird im HF-Mode (der hoffentlich eingestellt 
ist) ignoriert.

Grüße,

Peter

von odic (Gast)


Lesenswert?

Hallo Peter,

mein Quarz möchte 32pF sehen, 2x 47pF sind demnach genau genommen sogar 
zu wenig. Der Quarz schwingt allerdings auch ohne.

Woher hast du die Info, daß die internen Lastkapazitäten bei HF 
deaktiviert sind? Im Datenblatt finde ich nichts dergleichen.

Grüße,
odic

von Peter Diener (Gast)


Lesenswert?

Hallo,

hier her hab ich diese Info:

"
The software-selectable
XCAPx bits configure the internally provided load capacitance for the 
LFXT1
crystal in LF mode. This capacitance can be selected as 1pF, 6pF, 10pF 
or
12.5pF typical.
"

Family User's Guide MSP430x2 Seite 290. Man beachte: In LF mode.

"
Oscillator capacitor selection. These bits select the effective 
capacitance
seen by the LFXT1 crystal when XTS = 0. If XTS = 1 or if LFCT1Sx = 11
XCAPx should be 00.
"

User's Guide Seite 301. Man beachte: when XTS = 0.

"
XTS Bit 6 LFXT1 mode select.
0 Low frequency mode
1 High frequency mode
"

Seite 299. Man beachte: XTS = 0 entspricht nicht HF.

Hast du auch das folgende richtig eingestellt?

When LFXT1 is in HF mode, the LFXT1Sx bits select the range
of operation.

Um dir schnell zu helfen, prüf doch mal, ob deine Initialisierung 
korrekt ist. Hier ist eine von mir, die ist für einen 2er MSP430 und 
sollte auf deinem auch laufen. Sie konfiguriert den XT1 Oszillator für 
die Verwendung von einem 16 MHz Quarz.
1
  volatile int oscDelay;
2
3
  //Initialize clock generation system
4
  
5
  _BIC_SR(CPUOFF);                //Turn on Oscillator
6
  DCOCTL = 0x00;  //0b00000000;    //lowest DCO frequency, no modulation
7
  BCSCTL1 = 0xC0; //0b11000000;    //XT2 off, HF mode, ACLK not divided, DCO lowest freq.
8
  BCSCTL3 = 0x20; //0b00100000;    //XT2 range low freq., 3-16MHz XT1
9
  do
10
  {
11
    IFG1 &= 0xFD;                  //Clear Oscillator Interrupt Flag
12
  for(oscDelay = 0; oscDelay < 150; oscDelay++);    //wait some time
13
  
14
  }while (IFG1 & 0x02);            //test Oscillator fault flag and wait again if fault
15
  BCSCTL2 = 0xC8;  //0b11001000;  //XT1 as source for MCLK, do not divide MCLK, SMCLK source is XT2 (not present, so 0 Hz), do not divide SMCLK, internal DCO resistor
16
  
17
  //CPU should now be running on XT1 Crystal Clock source; attention: this consumes a lot of current

Viele Grüße,

Peter

von Peter Diener (Gast)


Lesenswert?

kleiner Fehler, es muss in der ersten Zeile heißen:
1
_BIC_SR(OSCOFF);  //Turn on Oscillator

also nicht CPUOFF sondern OSCOFF. Das ist mir gerade aufgefallen. Es hat 
aber auch anders funktioniert.

von odic (Gast)


Lesenswert?

Hallo Peter,

vielen Dank für die ausführliche Beschreibung. Allerdings waren mir die 
entsprechenden Stellen des Datasheet bereits bekannt und ich denke auch, 
daß die Initialisierung bei mir korrekt ist.

"If XTS = 1 or if LFCT1Sx = 11 XCAPx should be 00."

Ich vermute mal wir interpretieren das Wörtchen "should" 
unterschiedlich.

Ich denke daß im HF mode durch entsprechende initialisierung manuell 
dafür gesorgt werden muß, daß die internen C's deaktiviert sind. (Was 
bei mir auch der Fall ist.)

Von einer automatischen Daktivierung im HF mode (du schreibst sie würden 
"ignoriert") habe ich nichts gesehen...

Grüße,
odic

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.