Forum: Mikrocontroller und Digitale Elektronik MSP430 Modes


von Enno (Gast)


Lesenswert?

Hi,

eine kleine Frage an alle, die sich ein bischen mit den Modes des
MPS430 auskennen:

Ich will eine extrem stromsparende Controllerauswertung machen, hab
aber mit den LowPowerModes und auch dem MSP430 noch keine Erfahrungen.

Also, ich möchte Probemessungen im Tastverhältnis 1/40 (10ms irgendeine
Pinabfrage/400ms Ruhemodus)durchführen. In den 10ms muss das Ding
active sein, da ich bei dieser Zeit eine Auswertung der abgefragten
Pins machen möchte. Im Ruhemodus soll der uC eigentlich nur die Zeit
überbrücken, und das so stromsparend wie möglich.

Also müsste ich ja sicherlich dann bloss mein Register setzen, 400ms
zählen lassen und den Registerüberlauf nutzen um das Ding wieder active
zu schalten, oder?
Mein Bild von "CPU is disabled" ist noch ein wenig schwammig.
Aber es müsste ja eingentlich möglich sein mit den Registerflags wieder
in den Active-Mode zurückzukehren, oder?

Ist schon schlimm genug, dass 160uA Dauerstrom bei mir schon zuviel
sind ;)

THX

von Uwe Borowski (Gast)


Angehängte Dateien:

Lesenswert?

Hab Dir mal einen kurzen Quellcode angehängt! Dabei kannst Du einfach
über die Angabe der gewünschten Wartezeit (in Takten) die Funktion
aufrufen und der Controller geht dann für diese Zeit in den Ruhemodus
(LPM0). Der Code wurde mit dem IAR-Studio erstellt und benötigt einen
eingebundenen Hardwareheader (bei mir den msp430x14x.h)!

(Die LPMs des MSP430 sind wirklich unglaublich praktisch!)

Grüße - Uwe.

von Uwe Borowski (Gast)


Angehängte Dateien:

Lesenswert?

Natürlich braucht es auch einen Interrupt für den Timer - hab ihn mit in
den Sourcefile eingefügt!

Sorry - Uwe.

von Alf Jäger (Gast)


Lesenswert?

Hi Uwe,

wenn ich das Datenblatt der MSP nicht nur überflogen habe, ist LPM0
"wach", d.h. der Prozessor arbeitet. Übliches Schlafen ist LPM3, hier
arbeitet nur noch der langsame Oszillator (32-kHz-Quarz) und kann einen
Interrupt auslösen, der dem Prozessor wieder nach LPM0 verhilft.

Gruß, ALF

von Uwe Borowski (Gast)


Lesenswert?

Nein – das ist nicht richtig. Habe hier mal aufgelistet, was die
Low-Power-Modi bewirken:

#define LPM0 = (CPUOFF)
#define LPM1 = (SCG0+CPUOFF)
#define LPM2 = (SCG1+CPUOFF)
#define LPM3 = (SCG1+SCG0+CPUOFF)
#define LPM4 = (SCG1+SCG0+OSCOFF+CPUOFF)

Der Stromverbrauch sinkt von LPM0-LPM4 – allerdings werden auch die
möglichen Interruptquellen eingeschränkt und die Wakeup-Time steigt.

Der Stromverbrauch im laufenden Betrieb ließe sich beim MSP430 auch
senken, indem ein entsprechend langsamerer Quarz (z.B. 32kHz) verwendet
würde – sofern dies für die Anwendung ausreichend ist. Im Standby-Mode
(LPM3) verspricht TI (laut Datenblatt) eine Stromaufnahme von 1,6µA und
eine Wakeup-Time von 6µs! Doch auch bei LPM0 sinkt die Stromaufnahme
noch deutlich (sorry – hier fehlen mir grade die genauen Zahlen). Durch
die extrem schnellen Wakeup-Zeiten bietet es sich auch an, den
Controller bei jedem Warten in den Low-Power-Mode zu versetzen.

Grüße – Uwe.

von Enno (Gast)


Lesenswert?

Super, vielen Dank, das hilft mir ordentlich weiter.

Die verlängerten Aufweckzeiten im LP-Modus kommen bei mir nicht so zum
Tragen.
Wirklich nützlich werden diese ja auch nur, wenn man etwas längere
Pausen einlegen möchte um z.B. den Stromverbrauch gleich drastisch zu
senken. Und dann machen ein paar µs Aufweckzeit nicht sehr viel aus;
notfalls kann man sie ja mit einrechnen.

Es macht sich aber in jeder Batterie betriebenen Schaltung doch sehr
stark in der Laufzeit bemerkbar, wenn man die Stromaufnahme für
bestimmte Ruhephasen um den Faktor 100 senken kann.
Meine Schaltung soll höchstens 2 mal in der Sekunde erwachen und nach
seinem Wakeup-Siganl suchen.

Danke nochmal

Enno

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.