From b19ed89158091e4a3fcc2a850b4deed9a8c8579a Mon Sep 17 00:00:00 2001 From: Emanuele Trabattoni Date: Sat, 2 Aug 2025 18:04:40 +0200 Subject: [PATCH] clock correction --- docs/ESP32_clock_adjust.xlsx | Bin 0 -> 9698 bytes lib/RTC/PCF85063_Driver.cpp | 10 +++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 docs/ESP32_clock_adjust.xlsx diff --git a/docs/ESP32_clock_adjust.xlsx b/docs/ESP32_clock_adjust.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..95f0f0c88aa2b8f5010b6dd47e685c545bb1a49e GIT binary patch literal 9698 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 literal 0 HcmV?d00001 diff --git a/lib/RTC/PCF85063_Driver.cpp b/lib/RTC/PCF85063_Driver.cpp index e8efc79..36422c3 100644 --- a/lib/RTC/PCF85063_Driver.cpp +++ b/lib/RTC/PCF85063_Driver.cpp @@ -17,6 +17,9 @@ namespace drivers const uint8_t def_conf2 = RTC_CTRL_2_DEFAULT | RTC_CTRL_2_MI; // enable 1 minute interrupt success &= m_i2c.write(m_address, RTC_CTRL_2_ADDR, {def_conf2}); } + // set clock correction pulses + const uint8_t correction = 0b10000011; // fast mode +3 correction pulses, because clock is beyond + success &= m_i2c.write(m_address, RTC_OFFSET_ADDR, {correction}); if (!success) LOG_ERROR("RTC Init Failure"); } @@ -182,16 +185,17 @@ namespace drivers { tm dtime = datetime2tm(datetime); const std::string buf(std::asctime(&dtime)); - return buf.substr(0, std::min(buf.find('\n'),buf.find('\r'))); + return buf.substr(0, std::min(buf.find('\n'), buf.find('\r'))); } const std::string PCF85063::tm2str(const std::tm &datetime) { const std::string buf(std::asctime(&datetime)); - return buf.substr(0, std::min(buf.find('\n'),buf.find('\r'))); + return buf.substr(0, std::min(buf.find('\n'), buf.find('\r'))); } - const std::tm PCF85063::datetime2tm(const datetime_t& datetime) { + const std::tm PCF85063::datetime2tm(const datetime_t &datetime) + { tm dtime; dtime.tm_sec = datetime.second; dtime.tm_min = datetime.minute;