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 welchenMSP430 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?
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!
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).
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?