Forum: Mikrocontroller und Digitale Elektronik ESP32 resettet


von Jonas (Gast)


Angehängte Dateien:

Lesenswert?

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?

von STK500-Besitzer (Gast)


Lesenswert?

Jonas schrieb:
> Wie kann ich rausfinden, woran das liegt?

Spannung am ESP messen.

von STK500-Besitzer (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Spannung am ESP messen.

Am besten mit einem Oszilloskop.

von Mario M. (thelonging)


Lesenswert?


von J. S. (jojos)


Lesenswert?

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.

von hacker-tobi (Gast)


Lesenswert?

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

von J. S. (jojos)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

Mal als Stichwort für die Fehlersuche: Thread sichere Funktionen nutzen

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

: Bearbeitet durch Moderator
von Jonas (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.