математически выход один - считать время в "абсолютных" единицах, минутах от "рождества Христова" или секундах - смотря по необходимой точности. Тогда момент начала интервала всегда будет меньше момента конца, и сравнивать будет просто. но размер переменной для хранения времени может стать большим и неудобным.
технически выход другой - обеспечить непрерывность не только счета времени, но и работы микроконтроллера, т.е. чтобы при пропадании сетевого питания МК все-таки опрашивал время и осуществлял необходимые "переключения". делается это просто: силовые выходные цепи питаются от сетевого источника, логическая часть МК от "батарейно-резервируемой".
имхо, второй вариант проще.
я, правда, делал и третьим способом... отслеживал момент пропадания питания, и запоминал время этого момента, а затем, отслеживал появление питания, и "в ускоренном режиме" пробегал все диапазоны, делая "переключения", т.е. восстанавливал ход событий к моменту появления питания. это в каком-то смысле проще всего - не надо менять схему, а в программе просто добавить пару проверок...
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


