Forum: Mikrocontroller und Digitale Elektronik Stromsparen mit STM32 µC: Nach __WFI() passiert nichts mehr.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sebastian M. (barrel428)


Bewertung
0 lesenswert
nicht 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

von Jim M. (turboj)


Bewertung
1 lesenswert
nicht 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.

von Patrick W. (patrick_w974)


Bewertung
1 lesenswert
nicht lesenswert
Also was du garnicht erst versuchen musst ist den Standby-Modus zu 
probieren, bei diesem werden (fast) alle Clocks ausgeschalten, sodass 
die EXTI nichtmehr funktionieren.

Im Stop-Modus sollte es eigentlich funktionieren, aber ohne Code.... :)

von Sebastian M. (barrel428)


Bewertung
0 lesenswert
nicht 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?

von Sebastian M. (barrel428)


Bewertung
0 lesenswert
nicht lesenswert
Ich möchte nicht ungeduldig sein, aber wie würde denn ein Level Trigger 
funktionieren?

von Chris J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich weiss zwar nicht wie Interrupts geworfen werden und wie weit man die 
werfen kann aber ich habe mal so kleine "Lessons" gemacht für die 
Cortexianer auf meinem kanal: 
https://www.youtube.com/watch?v=Vh0dFu6pYDg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.