Selaa lähdekoodia

i2c power on/off is handled by functions that need it as it does not cost time to change power state

tags/v1.2.0
Bertrand Lemasle 7 vuotta sitten
vanhempi
commit
815ce3d018
5 muutettua tiedostoa jossa 18 lisäystä ja 23 poistoa
  1. +3
    -1
      GpsTracker/Config.cpp
  2. +0
    -6
      GpsTracker/Debug.cpp
  3. +0
    -2
      GpsTracker/Debug.h
  4. +0
    -6
      GpsTracker/GpsTracker.ino
  5. +15
    -8
      GpsTracker/Rtc.cpp

+ 3
- 1
GpsTracker/Config.cpp Näytä tiedosto

@@ -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();
}
}

+ 0
- 6
GpsTracker/Debug.cpp Näytä tiedosto

@@ -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<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_OFF),
'L', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_GET),
'l', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::GPS_SET),
'I', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::I2C_ON),
'i', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::I2C_OFF),
'T', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_GET),
't', static_cast<uint8_t>(debug::GPSTRACKER_DEBUG_COMMAND::RTC_SET),
'W', static_cast<uint8_t>(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,



+ 0
- 2
GpsTracker/Debug.h Näytä tiedosto

@@ -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,


+ 0
- 6
GpsTracker/GpsTracker.ino Näytä tiedosto

@@ -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;


+ 15
- 8
GpsTracker/Rtc.cpp Näytä tiedosto

@@ -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);

}

}

Ladataan…
Peruuta
Tallenna