MSP430: 3.6864MHz Quarz vs. VLL + 32kHz Quarz

Gast #2013903
Lesenswert?

Einen wunderschönen guten Abend!

Ich hoffe, ich finde hier jemanden, der auch schonmal mit ähnlichem zu 
tun hatte.

Problem: Mein uC benötigt einen Takt von 3.6864MHz (Baudratenquarz)
Der MSP soll ja eigentlich ein Stromsparer sein, aber das kann ich 
irgendwie nicht bestätigen...benutze ich nur den Quarz für diese 
Frequenz, so verbraucht der Controller knapp 3 mA - mit 2MHz (anderer 
Quarz) immernoch knapp 2 mA.

Da mir das zu viel ist, habe ich mal testweise aus den Code-Examples den 
VLL-Oszillator ausprobiert. Dieser arbeitet mit einem 32kHz Uhrenquarz 
und vergleicht in einem Timer-Interrupt stets die Abweichung von einem 
errechneten Delta zwischen Quarz und Systemtakt und passt diesen ggf. 
an.

So...wenn ich nun auf 3.6864MHz justiere, dann verbraucht der MSP 
nurnoch knapp 600uA!!!!

So weit so gut, aber: Als wirklich genau kann man den Takt nicht 
betrachten - auf dem Oszilloskop springt dieser zwischen 3.6 und 3.8MHz 
- das ist für eine UART-Übertragung ja nun nicht gerade prickelnd.

Weiteres Problem: Schließe ich den 3.6864MHz-Quarz an und habe 
zusätzlich noch den Uhrenquarz, so liegt der Stromverbrauch bei rund 
3.6mA!!!

Auch komisch: Mit normalem DCO-Betrieb und nur Uhrenquarz ist der Strom 
auch bei über 2mA. Das kann doch irgendwie alles nicht sein.

Da stimmt doch was nicht. Nur im VLL-Modus ist er ein echter 
Stromsparer.

Hat jemand schonmal diesen VLL-Modus benutzt und kann mir sagen, wie ich 
den möglichst genau bekomme?

Weiß jemand einen Grund, warum der Stromverbrauch so hoch sein könnte?


Besten Dank für jeden Tip!!!
Gast #2013932
Lesenswert?

Rufus Τ. Firefly schrieb:
> Exakt welchen MSP430 verwendest Du?

Hallo und danke schonmal für die Antwort!

Ich verwende einen MSP430F2418.
Klar kann ich auch aus anderen "geraden" Quarzen eine gescheite Baudrate 
einstellen, aber ich war der Meinung, 3 oder knapp 4MHz müssten ja wohl 
drin sein. Und da bot der Quarz sich halt an, weil er auch noch exakt 
teilbar ist.

Mich wundert ja nur, wo der ganze Strom hinfließt! Ist der Oszillator 
für die externen Quarze so stromhungrig? So ein Uhrenquarz allein 
verbraucht doch grad mal nen uW oder so...irgendwas stimmt da halt 
nicht. Nur VLL ist wirklich LOW-POWER.
Persönliche Seite #2013982
Lesenswert?

Dieses Codebeispiel ist nicht für die Erzeugung von Baudraten geeignet. 
Der Takt ist im Durchschnitt zwar genau, aber er wabert halt um den 
gewünschten Wert herum. Damit kann man z.B. eine einfache Uhr 
implementieren, aber nichts, was im Kurzzeitbereich präzise ist.

Hast Du mal reinen DCO-Betrieb ausprobiert? Sofern Du nicht mit sehr 
hohen Baudraten arbeitest, könnte der für sich schon ausreichend genau 
sein.

Kalibrierdaten für definierte Frequenzen sollten im Info-Memory bzw. in 
einem Flash-Segment zu finden sein.
(Im User's Guide sind Informationen darüber im Abschnitt "TLV" zu 
finden).

Allerdings macht mich die hohe Stromaufnahme bei Nutzung eines extern 
angeschlossen Quarzes stutzig.
Wie initialisierst Du den dafür zuständigen Oszillator XT2?
Gast #2013986
Lesenswert?

Rufus Τ. Firefly schrieb:
> selbst wenn diese relativ niedrige Frequenzen haben

Oder meinst du aus dem 32k die Baudrate erzeugen? Das ginge natürlich 
auch. Der Systemtakt wäre dann egal ob stabil, oder nicht...

Aber trotzdem die Frage: Wieso braucht der externe Quarz, der DCO und 
Kombination DCO + Uhrenquarz und HF Quarz + LF Quarz soviel Strom? Und 
nur LF Quarz + VLL nicht?
Persönliche Seite #2013998
Lesenswert?

Nun gut, nun wäre noch interessant, wie exakt Du die verschiedenen 
Oszillatoren etc. initialisiert hast.

Sieh Dir mal im Datenblatt das Diagramm 24 auf Seite 52 an. Da ist die 
Stromaufnahme des XT bei verschiedenen Betriebsarten beschrieben. Bei 4 
MHz Takt kann dessen Stromaufnahme wahlweise bei 100 µA, 150 µA oder 1 
mA liegen.

Die zugehörigen Parameter sind auf der vorhergehenden Seite beschrieben.
Gast #2014008
Lesenswert?

Ja genau wegen diesen Bildern Wunder ich mich ja so!

Benutzt du auch MSPs und hast schonmal zwei Quarze gleichzeitig 
verwendet?
Wenn ja, kannst du mir evtl. mal deine Initialisierung posten? Ich weiß 
langsam nicht mehr weiter!
Gast #2014023
Lesenswert?

Meine ist so:
1
void configure_clock_module (void)
2
{
3
  // Initialization of clock source - Crystal 1.8432 MHz
4
  
5
  // BCSCTL1: BASIC CLOCK SYSTEM CONTROL REGISTER 1
6
  // XT2OFF:  XT2 oscillator (bit cleared: XT2 is now active)
7
  BCSCTL1 &= ~XT2OFF;
8
  
9
  // BCSCTL3: BASIC CLOCK SYSTEM CONTROL REGISTER 3
10
  // XT2Sx:   XT2 range select (XT2S_2: 3-16 MHz)
11
  // XCAPx:   Oscillator capacitor selection (XCAP_1: ~6pF)
12
  BCSCTL3 = ( XT2S_2 | XCAP_1 );
13
  
14
  do
15
  {
16
    volatile uint16_t i = 0;
17
    IFG1 &= ~ OFIFG;            // Clear oscillator-fault-flag
18
    for (i = 0xFF; i > 0; i--)  // Time to get stable
19
    {}                          // Loop
20
  } while (IFG1 & OFIFG);       // Do, until no fault present
21
  
22
  // BCSCTL2: BASIC CLOCK SYSTEM CONTROL REGISTER 2
23
  // SELMx:   Select MCLK (SELM_2: XT2CLK)
24
  // SELS:    Select SMCLK
25
  BCSCTL2 = ( SELM_2 | SELS)
26
}
Persönliche Seite #2014403
Lesenswert?

FLL ist es auch nicht, das ist ein Hardwaremodul, das Dein MSP430 nicht 
besitzt.

>   // XT2Sx:   XT2 range select (XT2S_2: 3-16 MHz)

Das könnte das Problem sein. Dem Datenblatt zufolge ist das der 
stromfressende Oszillatorbetrieb.

Sieh Dir noch mal im Datenblatt die Seiten 53 und 54 an.

Denen zufolge sind die Werte für XT2Sx anders zu interpretieren als bei 
der Beschreibung im User's Guide (Seite 301 / 5-16, BCSCTL3).
1
  Wert   User's Guide     Datenblatt     Datenblatt     Datenblatt
2
                          S. 53          S. 54          S. 54
3
   0     0.4 - 1 MHz      0.4 - 1 MHz    bis 4 MHz      < 100 µA  
4
   1     1 - 3 MHz        1 - 4 MHz      bis 8 MHz      < 200 µA
5
   2     3 - 16 MHz       2 - 16 MHz     bis 16 MHz     > 1100 µA bei 4 MHz

Das ist ein wenig irritierend. Probier mal Modus 1 aus.

>  // XCAPx:   Oscillator capacitor selection (XCAP_1: ~6pF)

Dem User's Guide zufolge bezieht sich das auf die internen Kondensatoren 
am Oszillator XT1, die von XT2 sind nicht konfigurierbar.
Was hast Du da angeschlossen?
Gast #2014455
Lesenswert?

Rufus Τ. Firefly schrieb:
> Das ist ein wenig irritierend.

Das ist es wirklich - ich dachte, ich setze da den XT2S_ für den 
Frequenzbereich, in dem mein Quarz liegt. Was soll denn das sonst 
heißen?

Rufus Τ. Firefly schrieb:
> Dem User's Guide zufolge bezieht sich das auf die internen Kondensatoren
> am Oszillator XT1, die von XT2 sind nicht konfigurierbar.
> Was hast Du da angeschlossen?

Nee, die Cs sind für den XT1, da hängt ein Uhrenquarz dran.
Persönliche Seite #2014457
Lesenswert?

Heinz Erhard schrieb:
> ich dachte, ich setze da den XT2S_ für den
> Frequenzbereich, in dem mein Quarz liegt.

Das schon, nur weichen die Angaben über die nutzbaren Frequenzbereiche 
zwischen Datenblatt und User's Guide voneinander ab.
Wer lügt besser?

Heinz Erhard schrieb:
> Nee, die Cs sind für den XT1, da hängt ein Uhrenquarz dran.

Der dann ACLK speist?
Gast #2014486
Lesenswert?

OK, mit XT2S_1 liege ich nun mit beiden Quarzen bei 2,8mA...schonmal ne 
Steigerung, aber immernoch nicht wenig, oder?

OK, da steht, der Oszillator braucht so und so viel Strom...der 
Controller an sich ja auch - im Moment läuft mein Programm so:
1
while (1) {}

:) mehr macht es nicht, also auch keine anderen Sachen am laufen.
Gast #2014503
Lesenswert?

Jetzt seh ich grad was anderes...der schwingt nicht an, wenn ich nur den 
HF Quarz drin hab und den LF weglasse...bis ich den ACLK auf VLOCLK 
setze. Muss der immer mitlaufen?

Wenn ich den MSP ohne Taktinitialisierung benutze, ist der ACLK dann 
automatisch auf VLOCLK? Geht es nicht ohne ACLK?

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