k000858 0 December 27, 2016 Posted December 27, 2016 · Report post В других контроллерах (stm32f4 к примеру) дата меняется в 00:00:00 время В STM32F2 наблюдаю другую картину: дата может измениться в 00:00:07 время или не изменяться вообще. Кто то сталкивался с такой проблемой? куда капать? Quote Share this post Link to post Share on other sites More sharing options...
paulbell 0 September 28, 2017 Posted September 28, 2017 · Report post В других контроллерах (stm32f4 к примеру) дата меняется в 00:00:00 время В STM32F2 наблюдаю другую картину: дата может измениться в 00:00:07 время или не изменяться вообще. Кто то сталкивался с такой проблемой? куда капать? У меня такая же проблема. Есть ли решение? Quote Share this post Link to post Share on other sites More sharing options...
jcxz 33 September 28, 2017 Posted September 28, 2017 · Report post Кто то сталкивался с такой проблемой? куда капать? Ни на кого не надо капать. :) У меня такая же проблема. Есть ли решение? Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти. Quote Share this post Link to post Share on other sites More sharing options...
k000858 0 September 29, 2017 Posted September 29, 2017 · Report post У меня такая же проблема. Есть ли решение? К сожалению, уже не помню, как решил данную проблему. Кажется, было связано с чтением регистра с датой: толи необходимо читать его после каждого чтения регистра времени (именно после него) толи что то такое. Ни на кого не надо капать. :) Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти. ага и дату самому считать и календарь весь Quote Share this post Link to post Share on other sites More sharing options...
jcxz 33 September 29, 2017 Posted September 29, 2017 · Report post ага и дату самому считать и календарь весь Да. А это что, сложно??? :smile3046: Quote Share this post Link to post Share on other sites More sharing options...
Zeal0t 0 September 29, 2017 Posted September 29, 2017 · Report post В других контроллерах (stm32f4 к примеру) дата меняется в 00:00:00 время В STM32F2 наблюдаю другую картину: дата может измениться в 00:00:07 время или не изменяться вообще. Кто то сталкивался с такой проблемой? куда капать? Для L серии есть вот такое: Get the RTC_TR register, reading RTC_TR locks the values in the higher-order calendar shadow registers until RTC_DR is read. т.е. нужно прочитать TR и потом DR иначе значение даты обновляться не будет пока его не считают. Может и тут такое же? Quote Share this post Link to post Share on other sites More sharing options...
HardEgor 7 September 29, 2017 Posted September 29, 2017 · Report post Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти. К сожалению, когда питание выключили, RTC будет тикать, а инкрементировать некому. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 33 September 29, 2017 Posted September 29, 2017 · Report post К сожалению, когда питание выключили, RTC будет тикать, а инкрементировать некому. При включении питания считать RTC, преобразовать в секунды и начать тикать. С часами на основе счётчика секунд, работать много проще чем с набором полей времени/даты. Quote Share this post Link to post Share on other sites More sharing options...
Alechek 0 September 29, 2017 Posted September 29, 2017 · Report post С часами на основе счётчика секунд, работать много проще чем с набором полей времени/даты. +1 даже стандартная Cи функция time() возвращает секунды. преобразовывать каждый раз полный календарь в секунды - лишние накладные расходы, никому не нужные. Quote Share this post Link to post Share on other sites More sharing options...
k155la3 18 September 29, 2017 Posted September 29, 2017 · Report post . . . Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти. ++++ (!) ++++ Нормальные узлы RTC имеют 2 режима - обычный календарный (человеческий) и UTC счетчик. Еси есть такая возможность - переведите узел в режим 32-разрядного счетчика UTC и пользуйтесь удобным и стандартым методом работы в временем localtime(), gmtime(), strftime() etc. Заодно "автоматически" решается гемор с переходом или "непереходом" зима-лето, если ОНО требуется и таймозонами. --- Если аппаратного UTC нет - . . . Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти. :) И будет Вам счастье .... Проверка "прохода" через час: if( (UTC_Counter % 3600) == 0 ) . . . . . Проверка "прохода" через 5 минут: if( (UTC_Counter % 300) == 0 ) . . . . . Печать часы-минуты-секунды в массив ms strftime( ms, 20, "%H-%M-%S", &ttm_LOC ); Quote Share this post Link to post Share on other sites More sharing options...
scifi 0 September 29, 2017 Posted September 29, 2017 · Report post В STM32F2 наблюдаю другую картину: дата может измениться в 00:00:07 время или не изменяться вообще. Там в мануале написали целую страницу про то, как правильно читать регистры календаря. Наверняка что-то там нарушаете. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 33 September 29, 2017 Posted September 29, 2017 · Report post Нормальные узлы RTC имеют 2 режима - обычный календарный (человеческий) и UTC счетчик. Еси есть такая возможность - переведите узел в режим 32-разрядного счетчика UTC Вы мне-то это зачем советуете?? Я всегда именно так и делаю. Про прерывания написал - как общий случай, когда режима счётчика нет. Там в мануале написали целую страницу про то, как правильно читать регистры календаря. Наверняка что-то там нарушаете. 99.9% что именно так и обстоит дело. Quote Share this post Link to post Share on other sites More sharing options...
k155la3 18 September 29, 2017 Posted September 29, 2017 · Report post Вы мне-то это зачем советуете?? Я всегда именно так и делаю. Про прерывания написал - как общий случай, когда режима счётчика нет. . . . Вас-с-с-с я цитирую и плюсую, а советую ТС. Quote Share this post Link to post Share on other sites More sharing options...
k000858 0 September 29, 2017 Posted September 29, 2017 · Report post да да и будильник из спящего режима на таймере делать? в общем в моем случае проблема давно решена. как озвучили выше "необходимо сначала считывать регистр времени затем даты". Quote Share this post Link to post Share on other sites More sharing options...
Zeal0t 0 September 29, 2017 Posted September 29, 2017 · Report post 99.9% что именно так и обстоит дело. В сообщении #6 я же про это ТС-у написал. Что то проигнорировал он ) Quote Share this post Link to post Share on other sites More sharing options...