diff --git a/GpsTracker/Config.cpp b/GpsTracker/Config.cpp index ff0db55..37613c1 100644 --- a/GpsTracker/Config.cpp +++ b/GpsTracker/Config.cpp @@ -9,6 +9,7 @@ namespace config { void write() { VERBOSE_FORMAT("writeConfig", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry); + hardware::i2c::eepromPowerOn(); int written = hardware::i2c::eeprom.writeBlock(CONFIG_ADDR, value); hardware::i2c::eepromPowerOff(); @@ -33,8 +34,9 @@ namespace config { hardware::i2c::eepromPowerOn(); hardware::i2c::eeprom.readBlock(CONFIG_ADDR, value); if (!String(CONFIG_SEED).equals(value.seed)) reset(); + hardware::i2c::eepromPowerOff(); VERBOSE_FORMAT("readConfig", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry); - hardware::i2c::eepromPowerOff(); + } } \ No newline at end of file diff --git a/GpsTracker/Debug.cpp b/GpsTracker/Debug.cpp index 7d277ea..37fea32 100644 --- a/GpsTracker/Debug.cpp +++ b/GpsTracker/Debug.cpp @@ -17,8 +17,6 @@ MENU_ENTRY(GPS_ON, "[G] GPS On"); MENU_ENTRY(GPS_OFF, "[g] GPS Off"); MENU_ENTRY(GPS_GET, "[L] Get GPS position"); MENU_ENTRY(GPS_SET, "[l] Set last GPS position"); -MENU_ENTRY(I2C_ON, "[I] I2C devices On"); -MENU_ENTRY(I2C_OFF, "[i] I2C devices Off"); MENU_ENTRY(RTC_SET, "[T] Get RTC time"); MENU_ENTRY(RTC_GET, "[t] Set RTC time"); MENU_ENTRY(SD_WRITE_TEST, "[W] Write to test file"); @@ -37,8 +35,6 @@ const PROGMEM uint8_t commandIdMapping[] = { 'g', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::GPS_OFF), 'L', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::GPS_GET), 'l', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::GPS_SET), - 'I', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::I2C_ON), - 'i', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::I2C_OFF), 'T', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET), 't', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::RTC_SET), 'W', static_cast(debug::GPSTRACKER_DEBUG_COMMAND::SD_WRITE_TEST), @@ -67,8 +63,6 @@ const char * const MENU_ENTRIES[] PROGMEM = { MENU_SEPARATOR, - MENU_I2C_ON, - MENU_I2C_OFF, MENU_RTC_SET, MENU_RTC_GET, diff --git a/GpsTracker/Debug.h b/GpsTracker/Debug.h index fe7a332..3ed0873 100644 --- a/GpsTracker/Debug.h +++ b/GpsTracker/Debug.h @@ -38,8 +38,6 @@ namespace debug { GPS_OFF = 6, GPS_GET = 7, GPS_SET = 8, - I2C_ON = 9, - I2C_OFF = 10, RTC_GET = 11, RTC_SET = 12, SD_WRITE_TEST = 13, diff --git a/GpsTracker/GpsTracker.ino b/GpsTracker/GpsTracker.ino index 7f82d7d..7d8e730 100644 --- a/GpsTracker/GpsTracker.ino +++ b/GpsTracker/GpsTracker.ino @@ -47,12 +47,6 @@ void loop() { case debug::GPSTRACKER_DEBUG_COMMAND::GPS_SET: debug::setFakeGpsPosition(); break; - case debug::GPSTRACKER_DEBUG_COMMAND::I2C_ON: - rtc::powerOn(); - break; - case debug::GPSTRACKER_DEBUG_COMMAND::I2C_OFF: - rtc::powerOff(); - break; case debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET: debug::getAndDisplayRtcTime(); break; diff --git a/GpsTracker/Rtc.cpp b/GpsTracker/Rtc.cpp index 0b74d7b..223c373 100644 --- a/GpsTracker/Rtc.cpp +++ b/GpsTracker/Rtc.cpp @@ -35,19 +35,28 @@ namespace rtc { } void setup() { + hardware::i2c::rtcPowerOn(); RTC.control(DS3231_12H, DS3231_OFF); //24 hours clock RTC.control(DS3231_INT_ENABLE, DS3231_OFF); //INTCN OFF + hardware::i2c::rtcPowerOff(); } void getTime(tmElements_t &time) { + hardware::i2c::rtcPowerOn(); RTC.readTime(); + hardware::i2c::rtcPowerOff(); + details::readTimeFromRegisters(time); + VERBOSE_FORMAT("getTime", "%d / %d / %d %d:%d : %d", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); } void setTime(tmElements_t &time) { VERBOSE_FORMAT("setTime", "%d/%d/%d %d:%d:%d", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); details::writeTimeToRegisters(time); + + hardware::i2c::rtcPowerOn(); RTC.writeTime(); + hardware::i2c::rtcPowerOff(); } void setAlarm(uint16_t seconds) { @@ -55,26 +64,24 @@ namespace rtc { tmElements_t alarmTime; getTime(currentTime); - breakTime(makeTimestamp(currentTime) + seconds, alarmTime); setAlarm(alarmTime); } void setAlarm(tmElements_t &time) { - tmElements_t currentTime; - - getTime(currentTime); - Log.verbose(F("Current time : %d/%d/%d %d:%d:%d\n"), tmYearToCalendar(currentTime.Year), currentTime.Month, currentTime.Day, currentTime.Hour, currentTime.Minute, currentTime.Second); - details::writeTimeToRegisters(time); + + hardware::i2c::rtcPowerOn(); RTC.writeAlarm1(DS3231_ALM_DTHMS); - getTime(currentTime); - Log.notice(F("Set alarm to : %d/%d/%d %d:%d:%d\n"), tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); RTC.control(DS3231_A1_FLAG, DS3231_OFF); //reset Alarm 1 flag RTC.control(DS3231_A1_INT_ENABLE, DS3231_ON); //Alarm 1 ON RTC.control(DS3231_INT_ENABLE, DS3231_ON); //INTCN ON + hardware::i2c::rtcPowerOff(); + + Log.notice(F("Set alarm to : %d/%d/%d %d:%d:%d\n"), tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second); + } } \ No newline at end of file