mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-26 20:26:32 +00:00
Fix RTC related power on sequence
This commit is contained in:
parent
9d36dbe0c5
commit
c7545d93dc
@ -51,31 +51,33 @@ void RtcSettingsSave(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RtcSettingsLoad(void) {
|
bool RtcSettingsLoad(uint32_t update) {
|
||||||
bool was_read_valid = true;
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
ESP.rtcUserMemoryRead(100, (uint32_t*)&RtcSettings, sizeof(RtcSettings)); // 0x290
|
ESP.rtcUserMemoryRead(100, (uint32_t*)&RtcSettings, sizeof(RtcSettings)); // 0x290
|
||||||
#endif // ESP8266
|
#endif // ESP8266
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
RtcSettings = RtcDataSettings;
|
RtcSettings = RtcDataSettings;
|
||||||
#endif // ESP32
|
#endif // ESP32
|
||||||
if (RtcSettings.valid != RTC_MEM_VALID) {
|
|
||||||
was_read_valid = false;
|
bool read_valid = (RTC_MEM_VALID == RtcSettings.valid);
|
||||||
memset(&RtcSettings, 0, sizeof(RtcSettings));
|
if (update) {
|
||||||
RtcSettings.valid = RTC_MEM_VALID;
|
if (!read_valid) {
|
||||||
RtcSettings.energy_kWhtoday = Settings.energy_kWhtoday;
|
memset(&RtcSettings, 0, sizeof(RtcSettings));
|
||||||
RtcSettings.energy_kWhtotal = Settings.energy_kWhtotal;
|
RtcSettings.valid = RTC_MEM_VALID;
|
||||||
RtcSettings.energy_usage = Settings.energy_usage;
|
RtcSettings.energy_kWhtoday = Settings.energy_kWhtoday;
|
||||||
for (uint32_t i = 0; i < MAX_COUNTERS; i++) {
|
RtcSettings.energy_kWhtotal = Settings.energy_kWhtotal;
|
||||||
RtcSettings.pulse_counter[i] = Settings.pulse_counter[i];
|
RtcSettings.energy_usage = Settings.energy_usage;
|
||||||
|
for (uint32_t i = 0; i < MAX_COUNTERS; i++) {
|
||||||
|
RtcSettings.pulse_counter[i] = Settings.pulse_counter[i];
|
||||||
|
}
|
||||||
|
RtcSettings.power = Settings.power;
|
||||||
|
// RtcSettings.baudrate = Settings.baudrate * 300;
|
||||||
|
RtcSettings.baudrate = APP_BAUDRATE;
|
||||||
|
RtcSettingsSave();
|
||||||
}
|
}
|
||||||
RtcSettings.power = Settings.power;
|
rtc_settings_crc = GetRtcSettingsCrc();
|
||||||
// RtcSettings.baudrate = Settings.baudrate * 300;
|
|
||||||
RtcSettings.baudrate = APP_BAUDRATE;
|
|
||||||
RtcSettingsSave();
|
|
||||||
}
|
}
|
||||||
rtc_settings_crc = GetRtcSettingsCrc();
|
return read_valid;
|
||||||
return was_read_valid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RtcSettingsValid(void)
|
bool RtcSettingsValid(void)
|
||||||
@ -571,7 +573,7 @@ void SettingsLoad(void) {
|
|||||||
settings_crc32 = GetSettingsCrc32();
|
settings_crc32 = GetSettingsCrc32();
|
||||||
#endif // FIRMWARE_MINIMAL
|
#endif // FIRMWARE_MINIMAL
|
||||||
|
|
||||||
RtcSettingsLoad();
|
RtcSettingsLoad(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used in TLS - returns the timestamp of the last Flash settings write
|
// Used in TLS - returns the timestamp of the last Flash settings write
|
||||||
|
@ -220,7 +220,7 @@ void setup(void) {
|
|||||||
#endif
|
#endif
|
||||||
RtcRebootSave();
|
RtcRebootSave();
|
||||||
|
|
||||||
if (RtcSettingsLoad()) {
|
if (RtcSettingsLoad(0)) {
|
||||||
uint32_t baudrate = (RtcSettings.baudrate / 300) * 300; // Make it a valid baudrate
|
uint32_t baudrate = (RtcSettings.baudrate / 300) * 300; // Make it a valid baudrate
|
||||||
if (baudrate) { TasmotaGlobal.baudrate = baudrate; }
|
if (baudrate) { TasmotaGlobal.baudrate = baudrate; }
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user