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
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.
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.... :)
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?
Ich möchte nicht ungeduldig sein, aber wie würde denn ein Level Trigger funktionieren?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.