Fix DS3231 driver

Fix DS3231 driver breaking function chain (#4759)
This commit is contained in:
Theo Arends 2018-12-30 14:28:16 +01:00
parent e5c38da52c
commit fb4fe0fd55
1 changed files with 10 additions and 20 deletions

View File

@ -62,27 +62,23 @@
#define HR1224 6 //Hours register 12 or 24 hour mode (24 hour mode==0)
#define CENTURY 7 //Century bit in Month register
#define DYDT 6 //Day/Date flag bit in alarm Day/Date registers
boolean ds3231ReadStatus = false , ds3231WriteStatus = false; //flag, we want to wriet/write to DS3231 onlu once
boolean DS3231chipDetected;
boolean ds3231ReadStatus = false;
boolean ds3231WriteStatus = false; //flag, we want to wriet/write to DS3231 onlu once
boolean DS3231chipDetected = false;
/*----------------------------------------------------------------------*
Detect the DS3231 Chip
----------------------------------------------------------------------*/
boolean DS3231Detect(void)
void DS3231Detect(void)
{
if (I2cValidRead(USE_RTC_ADDR, RTC_STATUS, 1))
{
DS3231chipDetected = false;
if (I2cValidRead(USE_RTC_ADDR, RTC_STATUS, 1)) {
snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "DS3231", USE_RTC_ADDR);
AddLog(LOG_LEVEL_INFO);
return true;
}
else
{
DS3231chipDetected = true;
} else {
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_I2C "%s *NOT* " D_FOUND_AT " 0x%x"), "DS3231", USE_RTC_ADDR);
AddLog(LOG_LEVEL_INFO);
return false;
}
AddLog(LOG_LEVEL_INFO);
}
/*----------------------------------------------------------------------*
@ -143,10 +139,8 @@ boolean Xsns33(byte function)
if (i2c_flg) {
switch (function) {
case FUNC_INIT:
DS3231chipDetected = DS3231Detect();
result = DS3231chipDetected;
DS3231Detect();
break;
case FUNC_EVERY_SECOND:
TIME_T tmpTime;
if (!ds3231ReadStatus && DS3231chipDetected && utc_time < 1451602800 ) { // We still did not sync with NTP (time not valid) , so, read time from DS3231
@ -169,7 +163,6 @@ boolean Xsns33(byte function)
} else {
rules_flag.time_set = 1;
}
result = true;
}
else if (!ds3231WriteStatus && DS3231chipDetected && utc_time > 1451602800 && abs(utc_time - ReadFromDS3231()) > 60) {//if time is valid and is drift from RTC in more that 60 second
snprintf_P(log_data, sizeof(log_data), PSTR("Write Time TO DS3231 from NTP (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"),
@ -178,9 +171,6 @@ boolean Xsns33(byte function)
SetDS3231Time (utc_time); //update the DS3231 time
ds3231WriteStatus = true;
}
else {
result = false;
}
break;
}
}