ESP32 Watchdog deaktivieren oder triggern?

Gast #6086407
In meinem ArduinoIDE-Sketch für den ESP32 nutze ich nirgends aktiv den 
Watchdog, stolpere aber immer mal über einen Absturz des gesamten Boards 
mit dieser Meldung:
1
Guru Meditation Error: Core  1 panic'ed (Interrupt wdt timeout on CPU1)

Das "wdt timeout" klingt für mich nach Watchdog. Deswegen meine Frage: 
wie kann ich den triggern oder komplett deaktivieren, damit bei länger 
dauernden Operationen nicht das ganze Board abkachelt? Danke!
#6086510
Hallo,

Funktionen, die solange dauern bis der WDT auslöst, bekommt eigentlich 
selten hin.
Kritsch sind Sachen wie das Warten auf eine Änderung an einem Portpin, 
also sowas wie
1
while (digitalRead(Pin) == LOW)
2
{
3
};
4
Da muß dann unbedingt ein delay(90; besser yield(); rein.
5
delay() ruft intern yield(); auf.

Einige Libs, die prinzipiell auf dem ESP32 laufen, sind nicht wirklich 
angepaßt, so das es da natürlich auch intern passieren kann.

Gruß aus Berlin
Michael
#6086830
Michael U. schrieb:
> Da muß dann unbedingt ein delay(90); besser yield(); rein.
> delay() ruft intern yield(); auf.

Das nützt aber alles nichts, wenn der TE Arduino typisch alles in der 
loop() Funktion erledigt.

Beim ESP32 darf ein Durchlauf der loop nicht zu lang sein, da ansonsten 
ebenfalls der Watchdog triggert. (Auch die loop läuft in einem Thread 
und wenn die zu lange braucht, wird der Thread zum Auslöser.

yield(); statt delay(); klappt auch nur, wenn der problematische Thread 
mindestens die gleiche Priorität hat. Ein Thread mit nieriger Priorität 
bekommt bei yield() nie Rechenzeit. Bei delay() schon, da der aktuelle 
Thread vorübergehend auf blocked wechselt.
Gast #6086874
Wolfgang schrieb:
> Teile sie in kürzere Operationen auf.

Wahnsinn was manche Leute hier von sich geben, nur um mal was 
geschrieben zu haben. Ich stelle eine ganz klare Frage ("wie Watchdog 
triggern oder abschalten") und dann kommt sowas hier...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.