WIe geht man denn am besten vor, wenn man herausfinden will, ob ein ESP8266 (oder auch einen Arduino) zwischendurch (z.B. irgendwann mal während des Tages oder Nachts) abstürzt und auch z.B. herausfinden will, warum?
Wenn ich nicht mehr mit dem Serial Port verbunden bin, krieg ich das ja unter Umständen gar nicht mit, oder? Wenn der abstürzt, wird ja ein Reset gemacht.
Gibt es hier clevere Lösungsansätze?
Klar, man könnte eine Log-Datei schreiben. Aber wenn der ESP abstürzt kann er ja nicht mehr schreiben, warum er abgestürzt ist.
Und wenn ich per Serial Monitor überwache wird der Inhalt des Serial-Monitors doch nach einem Reset gelöscht, oder?
Wenn Du den seriellen Datenstrom auf dem PC in eine Datei umleitest, bleibt der erhalten. Beim Neustart eine Ausgabe im Setup, um das zu erkennen.
Der ESP8266 / ESP32 sendet auch einen Restartgrund und evtl. auch einen Stacktrace, den Du mit dem Exception Decoder auswerten kannst.
Dumme Frage? Wie macht man das?
Gibts da direkt in der Arduino IDE eine Funktion, um die serielle Ausgabe als Datei anzulegen? Oder muss das im Sketch erledigt werden, also z.B. eine Txt schreiben?
Soweit ich weiß, wird von manchen alten Bootloadern
die erste WDT Zeit nach einem Reset so kurz gesetzt,
dass setup nicht mehr dazu kommt einen vernünftigen Wert einzustellen.
Wenn man mal ne Runde sucht, ja, dann findet sich da auch was
Das Problem tritt wohl auf den Nanos mit nem Oldbootloader auf.
Mal sehen, ob ich mir das merken kann....
Danke!
Das Problem hast du richtig beschrieben, aber nicht den richtigen Verursacher benannt.
Es ist nicht der Bootloader, welcher die Zeit kurz setzt, sondern der Reset.
Der Default nach einem Reset ist laut Datenblatt die kürzest mögliche Zeit.
Der WDT selber wird nicht beim Reset gestoppt.
Im Datenblatt ist der Default Wert x, also entweder unverändert, bzw der per Fuses eingestellte Wert..
Einzig aus dem Power on Reset, kommt das Bit gelöscht heraus.
Ich frage einfach mal doof:
Wieso sollte ein Rechner abstürzen?
Wenn das Sketch sauber programmiert ist, er mit saauberer Spannung versorgt wird und ggf. noch gegen externe Einstralhlungen abgeschitmt ist, sollte er an sich nie anstürzen, oder sehe ich das falsch?
Selbst 1000km Stahlbeton helfen nicht gegen hochenergetische Neutrinos und ihre Kumpels.
Auch mit sogfältiger Programmierung ist dagegen nichts auszurichten.
Tipp:
Wenn du meinst, dass du ein so genialer Programmierer bist, dass nie Fehler auftreten können, ist vermutlich das genaue Gegenteil der Fall.
Oder anders rum:
Warum hat wohl, in der Industrie, Luft und Raumfahrt, jede drecks Gießkanne einen eigenen Wachhund?
Weil die alle doof sind?
Nein!
Wichtige Grundannahmen:
Jedes Programm ist Fehler behaftet.
Der Beweis, dass ein Programm Fehlerfrei ist, ist nicht zu führen
Demnach müssten dann ungefhr alle Rechner zigtausend mal am Tag abstürzen, wenn Neutrinos, die keinerlei nachweisbare Wechselwirkung haben, dafür verantwortlich sind
Wie dick ist das Gehäuse Deines PCs?
Das meine ich nicht, dann wäre ich nicht in einem Forum, wie diesem, um mir auch Rat und Hilfe von Leuten zu holen, die es besser können, denn das bräuchte ich ja dann nicht.