ESP32 C3 - RTC_DATA_ATTR neuchová data po restartu
Napsal: 09 úno 2025, 00:49
Ladím program, který si ukládá jedinou proměnnou do RTC paměti pomocí deklarace RTC_DATA_ATTR. Proměnná se prokazatelně uloží, ale po restartu její hodnota neodpovídá.
Kód: Vybrat vše
// Mám pro esp32 C3 tento segment programu Arduino, ale nefunguje mi přepínání módů mezi STA a AP pomocí tlačítka.
#include <WiFi.h>
RTC_DATA_ATTR int32_t WifiModeFlag = 0L;
void setup() {
WifiStart();
}
void loop() {
// from WiFi station mode pressing the hardware Smart Button restarts the system
if (!digitalRead(ButtonPin)) WifiModeSelectorFlag();
}
void WifiStart(void) {
if (WifiModeFlag == 34567890) {
WifiModeFlag = 0;
// start WiFi Access point
WiFi.softAP(_SensorName);
digitalWrite(LedBuiltIn, HIGH); //LED ON
} else {
// start WiFi station
WiFi.mode(WIFI_STA);
WiFi.begin(eGet.mySSID, eGet.myPassword);
// wait for WiFi connect
while (WiFi.status() != WL_CONNECTED) {
WifiModeSelectorFlag();
delay(250);
digitalWrite(LedBuiltIn, !digitalRead(LedBuiltIn));
}
WiFi.setSleep(false);
digitalWrite(LedBuiltIn, LOW); //LED OFF
}
}
// tests solid Smart button press and triggers a restart
void WifiModeSelectorFlag(void) {
if (WiFi.getMode() != WIFI_STA) return;
if (!digitalRead(ButtonPin)) {
delay(50);
if (!digitalRead(ButtonPin)) {
WifiModeFlag = 34567890;
// waiting for the button to be released
while (!digitalRead(ButtonPin)) { delay(50); }
//delay(1000);
ESP.restart();
}
}
}