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
Sind die internen Lastkapazitäten auch wirklich deaktiviert?
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....
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.....
Hihi, würde mich bei der Angelika nicht wundern. Kein Multimeter mit Kapazitäts-Schätzung zur Hand?
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....
Habe neue SMD-Kondensatoren besorgt (diesmal 47pF) und jetzt tut alles. Es lag also vermutlich an den 33pF Kondensatoren, die gar keine waren....
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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.