Время компиляции

Есть такой код:

Спойлер
#define BUILD_HOUR_CH0 (__TIME__[0]-'0')
#define BUILD_HOUR_CH1 (__TIME__[1]-'0')
#define BUILD_HOUR (BUILD_HOUR_CH0*10+BUILD_HOUR_CH1)

#define BUILD_MIN_CH0 (__TIME__[3]-'0')
#define BUILD_MIN_CH1 (__TIME__[4]-'0')
#define BUILD_MIN (BUILD_MIN_CH0*10+BUILD_MIN_CH1)

#define BUILD_SEC_CH0 (__TIME__[6]-'0')
#define BUILD_SEC_CH1 (__TIME__[7]-'0')
#define BUILD_SEC (BUILD_SEC_CH0*10+BUILD_SEC_CH1)

void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
uint32_t sec = BUILD_HOUR * 60ul * 60ul + BUILD_MIN * 60ul + BUILD_SEC;
  Serial.println(sec);
  
}

void loop() {
  // put your main code here, to run repeatedly:

}

И потом (при перезапуске ардуины) всегда получаем одно и тоже значение…
А можно ли как-то узнать получили мы время после прошивки или это после перезагрузки. Если просто после перезагрузки, то в 0 выставить sec.
Хотелось бы время на ардуине выставлять автоматом при компиляции и прошивке. Ну а при обычных перезагрузках оставлять sec = 0… ну и устанавливать уже потом в ручки…

После прошивки МК так же перезагружается !!!

Да я уже понял, что глупый вопрос… Спасибо. Тем более часто после прошивки переключаешь питание (во время прошивки от USB, а потом своим БП например) и время слетает :)))

Можно, наверное, сохранять в EEPROM? Но сколько так мк проживет?

И как узнать потом сколько МК был без питания для коррекции времени из памяти ???

Это уже другой вопрос :smiley:

Можно. После прошивки, при первом старте, ставь метку в ЕЕПРОМ.