msp430 & lpm0 - 3 ausserhalb ISR beensen

Gast #2870927
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
Gast #2870963
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren