Замерял длительность выполнения чтения времени и даты. примерно 3 млсек для TWI и 4 млсек для программного I2C. Плюс еще пара млсек для вывода значения на ЖКИ. Т.е. все достаточно быстро и должно протекать незаметно.
Вот такая нехитрая функция отображает время на жки индикаторе:
Код: Выделить всё
//выводит на жки текущее время
void ind_real_time (char line, char row) {
rtc_get_time(&hour,&minute,&sec); // прочесть время из DS1307
make_buf_rtc_time (hour,minute, sec); // преобразовать в строку
lcd_out (line, row, buf_rtc); // вывести значение на ЖКИ
}
Функция вызывается один раз в секунду, по флагу, устанавливаемому по прерыванию Т0.
Все работает как надо, но один непонятный момент наблюдается. Иногда индикация секунд как-бы приостанавливается на одну-две секунды. Т.е. 12:12:59 -> пауза -> 12:13:02. Думал , что возможно мк там где-то стопорится почему-то.
Для проверки вывел рядом со временем мигающее каждые полсекунды двоеточие ':'. Так во время паузы часов, это двоеточие продолжает мигать в нормальном режиме, т.е. мк работает нормально..
Вот и не пойму теперь в чем причина такого притормаживания секунд? Толи сама мс часов неисправна, хотя за четверо суток часы не ушли ни вперед ни назад, толи .....
Может кто сталкивался с подобным? А то у меня пока одно решение в голове - выкинуть эти секунды вообще..