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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.