Stromsparen mit STM32 µC: Nach __WFI() passiert nichts mehr.

OP #5310047
Lesenswert?

Servus,

ich arbeite gerade an einem Akkubetriebenem Gerät. Per Tastenlangdruck 
soll das Gerät daher in ein Stromsparmodus wechseln. Leider funktioniert 
aktuell weder der Standbye, noch der Stop-Modus.
Nachdem er im wait for interrupt Modus ist, wird schlicht kein Interrupt 
mehr geworfen. Ohne diesen Modus werden die Interrupts per 
Tastenbedienung einwandfrei geworfen und das restliche System 
funktioniert wie es soll.

Zur Einordnung ein paar Daten:
-µC: STM32F405RGT
-Interrupt per Tastenbedienung EXTI_Line9 (fallende Flanke)
-NVIC entsprechend konfiguriert
-Takt für entsprechenden Tastenport und Interrupt wird zumindest nicht 
manuell ausgeschaltet
-egal welchen Stromsparmodi ich aufrufe, nach dem __WFI() Aufruf 
passiert nichts mehr

Für Hilfe wäre ich sehr dankbar. Leider habe ich weder in der Doku, noch 
in verschiedenen Themen hier im Forum eine Lösung für das Problem 
gefunden, die funktioniert hat.

Viel Grüße
Sebastian
#5310063
Lesenswert?

Sebastian M. schrieb:
> -Interrupt per Tastenbedienung EXTI_Line9 (fallende Flanke)

Schau mal nach ob der Flankentrigger nicht ein Taktsignal braucht. Level 
Trigger haben das Problem meistens nicht.

Wenn SLEEPDEEP im SC->SCR gesetzt ist, dann schaltet er viele 
Taktquellen ganz aus. Das gibt mitunter sogar Probleme mit dem Debugger.

Wenn ohne SLEEPDEPP nix mehr passiert: Zeig Deinen Code. Da ist sicher 
ein Fehler drin.
OP #5311807
Lesenswert?

Vielen Dank für eure Antworten.

Jim M. schrieb:
> Schau mal nach ob der Flankentrigger nicht ein Taktsignal braucht. Level
> Trigger haben das Problem meistens nicht.

Leider habe ich im gesamten reference Manual des Chips nichts zu einem 
Level Trigger gefunden. Kann es sein, dass mit dem M4 kein Level Trigger 
benutzbar ist?

Jim M. schrieb:
> Wenn SLEEPDEEP im SC->SCR gesetzt ist

Nur wenn das Bit gesetzt ist passiert nichts. Ansonsten wird der 
Interrupt normal geworfen.

Patrick W. schrieb:
> Also was du garnicht erst versuchen musst ist den Standby-Modus

Habe den Sleep Modus gemeint. Der Standbye Modus ist auch bei meinen 
Anforderungen leicht übertrieben.


Was habe ich jetzt für Möglichkeiten? µC runtertakten? Periodisch in den 
Sleep Modus gehen? Doch irgendwie den Level Trigger einrichten?

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