Forum: Mikrocontroller und Digitale Elektronik msp430 & lpm0 - 3 ausserhalb ISR beensen


von Thomas (Gast)


Lesenswert?

Hallo,
ich habe folgendes Problem:
Ich möchte den cc430f5137 in verschiedenen Low Power Modi betreiben. Das 
Ganze soll in etwa so aussehen:
Ich habe einen einfachen Round-Robin Scheduler, der von timer1a3 (smclk) 
getaktet (ca. 1ms) wird und zyklisch Tasks abarbeitet. Zusätzlich habe 
ich einen Rtc Alarm Interrupt (Rtc wird von Aclk getaktet). Der 
Controller soll im lpm3 verweilen bis der Rtc Alarm auftritt. Da im LPM3 
SMCLK abgeschaltet ist, arbeitet der Scheduler nun nicht. Danach wird 
(vom Scheduler) eine Statemachine angeschmissen, die (zyklisch) div. 
States abarbeitet. Wenn der Scheduler nichts zu tun hat, schickt er den 
Controller in LPM0. Nach dem letzten State der Statemachine geht der 
Controller wieder in LPM3 (und schaltet damit implizit den Scheduler ab.
Nun zu meinem eigentlichen problem:
die ISR der timer (t1a3 & rtc) rufen lediglich callback funktionen im 
Scheduler, bzw. in meiner Applikation auf. ich weis auch nur dort, ob 
ich den jeweiligen LPM verlassen muss, oder nicht.
1
LPMx_EXIT
funktioniert jedoch lediglich im ISR context. Wie kann ich einen LPM 
state ausserhalb einer ISR verlassen?

Gruß & Dank,
Thomas

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die "Callbackfunktionen" werden doch im ISR-Kontext aufgerufen, wo also 
liegt das Problem?

von Thomas (Gast)


Lesenswert?

Hallo,
so weit so klar - das problem ist der compiler (mspgcc)
1
error: __bic_status_register_on_exit invalid outside of function with interrupt attribute

Da fehlt dann wohl irgend ein Attribut bei der Funktionsdeklaration 
(oder?)- muss ich mal noch mal nachlesen.

Vielen Dank.

Gr. Thomas

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Na, dann lass doch Deine callbackfunktionen über einen Rückgabewert 
mitteilen, ob sie ein LPMx_EXIT wünschen oder nicht, und werte den 
direkt in der ISR aus, um den Compiler glücklich zu machen.

von Thomas (Gast)


Lesenswert?

Hallo,

die Idee hatte ich auch gerade  - ich versuch's.

Gruß & Dank,
Thomas.

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.