Програзматическое...
Небольшой тупичок в программировании образовался...
Может кому-то совсем делать нечего и захочется пообсуждать?
Развлекаюсь тут написанием програмки для микроконтроллеров на Си.
Контроллер получает сигнал таймера извне, просыпается и просто считает время и засыпает.
Проблема в том, что просыпаясь он ничего не помнит. У него наступает полная амнезия и device reset
за исключением несколько регистров, в которых я умудрился запихнуть минуты, часы и секунды.
И уже почти больше ничего не влезает. Т.е. можно передать что называется
сообщение в рай после смерти только несколько бит.
Но тут возникла задача коррекции времени. Кварцевый резонатор неохота
подстраивать, а хочется просто программным образом сделать коррекцию времени.
Частота сигнала 2.0042 Hz. Т.е. каждые 8 минутмы с друзьями ходим в баню
нужно отматывать одну секунду назад. С одной секундой вперед не было бы проблем,
а вот насчет отмотки назад у меня наступил легкий ступор.
Я добавил флаг bit_corr для того, чтобы отмотка назад работала
без эффекта наступления на одни и те же грабли. Потому, что отмотав секунду назад
в следующий раз опять на нее натыкаешься и нужно проскочить с помощью такого флажка.
Есть у кого идеи как сделать получше?
Может кому-то совсем делать нечего и захочется пообсуждать?
Развлекаюсь тут написанием програмки для микроконтроллеров на Си.
Контроллер получает сигнал таймера извне, просыпается и просто считает время и засыпает.
Проблема в том, что просыпаясь он ничего не помнит. У него наступает полная амнезия и device reset
за исключением несколько регистров, в которых я умудрился запихнуть минуты, часы и секунды.
И уже почти больше ничего не влезает. Т.е. можно передать что называется
сообщение в рай после смерти только несколько бит.
Но тут возникла задача коррекции времени. Кварцевый резонатор неохота
подстраивать, а хочется просто программным образом сделать коррекцию времени.
Частота сигнала 2.0042 Hz. Т.е. каждые 8 минут
нужно отматывать одну секунду назад. С одной секундой вперед не было бы проблем,
а вот насчет отмотки назад у меня наступил легкий ступор.
Я добавил флаг bit_corr для того, чтобы отмотка назад работала
без эффекта наступления на одни и те же грабли. Потому, что отмотав секунду назад
в следующий раз опять на нее натыкаешься и нужно проскочить с помощью такого флажка.
Есть у кого идеи как сделать получше?
if(S == 30u && bit_corr == 0)
{
// Correction: every 8 min -1 sec:
t = ( H & 1 ) ? M + 60u : M;
if((t % 8u) == 0)
--S;
bit_corr = 1;
}
else
bit_corr = 0;