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
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.
Natürlich braucht es auch einen Interrupt für den Timer - hab ihn mit in den Sourcefile eingefügt! Sorry - Uwe.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.