Gast
#7173722
Hallo, ich habe einen ESP32 bei dem ich einem Pir-Sensor angeschlossen habe. Doch jedesmal wenn dieser auslöst, resettet sich mein Programm und dass immer wieder. Wie kann ich rausfinden, woran das liegt?
|
Anzeige
|
ESP32 resettet
Gast
#7173722
Hallo, ich habe einen ESP32 bei dem ich einem Pir-Sensor angeschlossen habe. Doch jedesmal wenn dieser auslöst, resettet sich mein Programm und dass immer wieder. Wie kann ich rausfinden, woran das liegt?
Gast
#7173726
Jonas schrieb: > Wie kann ich rausfinden, woran das liegt? Spannung am ESP messen.
Gast
#7173730
STK500-Besitzer schrieb: > Spannung am ESP messen. Am besten mit einem Oszilloskop. Jonas schrieb: > Wie kann ich rausfinden, woran das liegt? Lesen. https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/log.html beim Warten auf die Eventbits wird kein Auto Reset des Triggers gemacht ( xClearOnExit = false), damit dürfte diese Funktion den Kern in einer Dauerschleife lahmlegen.
Gast
#7173741
Hi, zum einen das was J.S. sagt prüfen. Und dann führst du ESP_LOGI in der isr aus. Das hatte ich auch mal versucht und das selbe Phänomen gehabt wie du. Setze in der isr lediglich ein Flag, werte das dann in der main() aus und generiere dein Log dort. Gruss tobi die Espressif Doku rät auch davon ab die logging Funktionen in ISR zu benutzen. ESP_DRAM_LOGx könnte funktionieren, würde ich aber auch nur maximal zum Test bei Ints mit geringer Frequenz als q&d Test einbauen. Einen gpio umschalten geht auch einfach und kann mit LA kontrolliert werden.
Gast
#7176175
Mal als Stichwort für die Fehlersuche: Thread sichere Funktionen nutzen Jonas schrieb: > ich habe einen ESP32 bei dem ich einem Pir-Sensor angeschlossen habe Ist es tatsächlich so, dass ein schnarchlangsames Ding wie ein PIR-Sensor einen Interrupt braucht? Warum fragst du den nicht einfach in einem 100ms-Task ab? Schneller wird da wohl kaum was passieren... Und sonst: wie sieht der Schaltungsaufbau aus? Woraus wird das Ganze versorgt? Passen die Pegel vom IR-Sensor und dem µC zusammen?
Gast
#7176384
Lothar M. schrieb: > Ist es tatsächlich so, dass ein schnarchlangsames Ding wie ein > PIR-Sensor einen Interrupt braucht? Ja. Ziel war es den ESP in den DeepSleep zu bringen und durch den Sensor aufzuwecken. Das funktioniert auch. Allerdings wollte ich zyklisch auch andere sachen machen und den ESP per Timer aufwachen lassen. Da der Timer durch das aufwachen durch ext0 (PirSensor) aber abgebrochen wird und ich nicht weiß, wie viel Restzeit noch wäre, kann es vorkommen, dass der ESP gar nicht durch den Timer aufwacht (je nachdem wie der PirSensor detektiert). Daher bin ich doch am überlegen öfters (nur durch den Timer) aufzuwachen und den PirSensor abzufragen. hacker-tobi schrieb: > Und dann führst du ESP_LOGI in der isr aus. > Das hatte ich auch mal versucht und das selbe Phänomen gehabt wie du. > Setze in der isr lediglich ein Flag, werte das dann in der main() aus > und generiere dein Log dort. Das war es auch. Habe den Log nur zum Testen reingemacht, um zu sehen das es auch wirklich ausgelöst wird. Mit einem Flag konnte ich das ganze auch testen und hat letztendlich auch funktioniert. Jonas schrieb: > öfters (nur durch den Timer) aufzuwachen Das hört sich nach einem berechenbaren und beherrschbaren Ansatz an. Denn es ist natürlich wirklich übel, wenn der eine Interrupt den anderen korrumpiert. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|