Ich würde gern den Resetgrund des ESPs auslesen. Doch irgendwie komme ich nicht richtig vorran. Ich finde nur Bruchstücke im Netz. Keine kompletten Beispiele. Wahrscheinlich nutze ich die falschen Suchbegriffe -.- Kennt jemand ein Tutorial dafür? Ich bastel ein Temperatur Seonsor mit einem ESP8266. Diesen setze ich zwischenzeitlich in DeepSleep. Nach einer bestimmten Zeit lasse ich ihn aufwachen. Erfasse die Daten, Sende die Daten per MQTT an den Broker, schicke ihn wieder schlafen. Dies funktioniert seit längerem einwandfrei. Als Erweiterung wollte ich ein kleines OLED Display anschliesen was mir die Erfasten Daten anzeigt. Das Display soll aber nur angehen und anzeigen wenn man den Reset-Schalter drückt, und nicht wenn er normal aus dem DeepSleep aufwacht. Das Display zeigt die Daten also nur wenn man es selber wünscht, und nicht nach jedem Aufwachen. Aber das Auslesen des Grundes gelingt mir nicht wirklich.
Der Bootloader gibt den Grund in Form einer Textmeldung seriell mit 74880 Baud aus. > Das Display soll aber nur angehen und anzeigen wenn man den > Reset-Schalter drückt, und nicht wenn er normal > aus dem DeepSleep aufwacht. Ich glaube, das kannst du gar direkt unterscheiden, weil der Sleep-Timer mit dem Reset Eingang verbunden werden muss. Vielleicht kannst du die RTC verwenden, um am Timing zu erkennen, ob es es geplantes Aufwachen war, oder ein ungeplanter Reset.
Vor Monaten hatte ich dazu mal ein Beispiel gefunden. Aber damals noch nicht von Belang und nun ist es nicht auffindbar. ungefähr so:
1 | struct rst_info{ |
2 | uint32 reason; |
3 | uint32 exccause; |
4 | uint32 epc1; |
5 | uint32 epc2; |
6 | uint32 epc3; |
7 | uint32 excvaddr; |
8 | uint32 depc; |
9 | };
|
10 | void setup() { |
11 | rst_info *xyz; |
12 | Serial.begin(115200); |
13 | xyz = ESP.getResetInfoPtr(); |
14 | Serial.println((*xyz).reason); |
15 | }
|
Aber ich bekomme eine Fehlermeldung bei "struct": "redefinition of 'struct rst_info'" Und aus dem Dokument von espressif werde ich nicht wirklich schlau. :( https://www.espressif.com/sites/default/files/documentation/esp8266_reset_causes_and_common_fatal_exception_causes_en.pdf
Ich hab es hinbekommen. Es braucht die esp.h Aber, der ESP meldet das er aus dem DeepSleep kommt, egal ob ich den Hardware Reset drücke oder automatisch der ESP aufwacht. Vermutlich wird nur geschaut, ob er im DeepSleep war, und schlussfolgert daraus das booten. Also bringt mir das ganze so nichts. Also muss ich mich damit beschäftigen, wie ich die Realtimeclock auslese und verarbeite.
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.