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!!!
Heinz Erhard schrieb: > Problem: Mein uC benötigt einen Takt von 3.6864MHz (Baudratenquarz) Nein. Die UARTs selbst so alter MSP430-Varianten wie 'F16x sind in der Lage, vernünftige Baudraten auch aus nicht-Baudraten-Quarzen zu erzeugen, selbst wenn diese relativ niedrige Frequenzen haben. Exakt welchen MSP430 verwendest Du?
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.
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?
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?
Ach nee - Kommando zurück! Ich benötige noch stabile 460.8kHz - und die bekomme ich aus den 3.6864MHz halt exakt raus...ganz vergessen.
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.
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!
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 | }
|
OK - 1. Zeile Kommentar ist momentan natürlich 3.6468MHz!
Wieso schreib ich eigentlich die ganze Zeit VLL???!!! Ich meine natürlich FLL!!!
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?
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.
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?
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.
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?
Also laut dem Datenblatt vom 2418 geht bis 4MHz ja sogar mit XT2S_0...aber der Strom sinkt im Vergleich zum _1 nicht weiter...
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.