реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F2: RTC проблемы с датой
k000858
сообщение Dec 27 2016, 07:59
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



В других контроллерах (stm32f4 к примеру) дата меняется в 00:00:00 время
В STM32F2 наблюдаю другую картину: дата может измениться в 00:00:07 время или не изменяться вообще.

Кто то сталкивался с такой проблемой? куда капать?
Go to the top of the page
 
+Quote Post
paulbell
сообщение Sep 28 2017, 10:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 18-07-16
Пользователь №: 92 595



Цитата(k000858 @ Dec 27 2016, 12:59) *
В других контроллерах (stm32f4 к примеру) дата меняется в 00:00:00 время
В STM32F2 наблюдаю другую картину: дата может измениться в 00:00:07 время или не изменяться вообще.

Кто то сталкивался с такой проблемой? куда капать?



У меня такая же проблема. Есть ли решение?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 28 2017, 14:13
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(k000858 @ Dec 27 2016, 14:59) *
Кто то сталкивался с такой проблемой? куда капать?

Ни на кого не надо капать. sm.gif

Цитата(paulbell @ Sep 28 2017, 17:09) *
У меня такая же проблема. Есть ли решение?

Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти.
Go to the top of the page
 
+Quote Post
k000858
сообщение Sep 29 2017, 03:33
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(paulbell @ Sep 28 2017, 13:09) *
У меня такая же проблема. Есть ли решение?

К сожалению, уже не помню, как решил данную проблему.
Кажется, было связано с чтением регистра с датой: толи необходимо читать его после каждого чтения регистра времени (именно после него) толи что то такое.

Цитата(jcxz @ Sep 28 2017, 17:13) *
Ни на кого не надо капать. sm.gif


Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти.

ага и дату самому считать и календарь весь
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 29 2017, 05:44
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(k000858 @ Sep 29 2017, 10:33) *
ага и дату самому считать и календарь весь

Да. А это что, сложно??? smile3046.gif
Go to the top of the page
 
+Quote Post
Zeal0t
сообщение Sep 29 2017, 06:05
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 28-06-13
Пользователь №: 77 311



Цитата(k000858 @ Dec 27 2016, 10:59) *
В других контроллерах (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 иначе значение даты обновляться не будет пока его не считают. Может и тут такое же?
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Sep 29 2017, 06:19
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(jcxz @ Sep 28 2017, 21:13) *
Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти.

К сожалению, когда питание выключили, RTC будет тикать, а инкрементировать некому.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 29 2017, 06:43
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(HardEgor @ Sep 29 2017, 13:19) *
К сожалению, когда питание выключили, RTC будет тикать, а инкрементировать некому.

При включении питания считать RTC, преобразовать в секунды и начать тикать.
С часами на основе счётчика секунд, работать много проще чем с набором полей времени/даты.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Sep 29 2017, 07:02
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(jcxz @ Sep 29 2017, 11:43) *
С часами на основе счётчика секунд, работать много проще чем с набором полей времени/даты.

+1
даже стандартная Cи функция time() возвращает секунды.
преобразовывать каждый раз полный календарь в секунды - лишние накладные расходы, никому не нужные.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 29 2017, 08:41
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(jcxz @ Sep 28 2017, 17:13) *
. . .
Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти.

++++ (!) ++++

Нормальные узлы RTC имеют 2 режима - обычный календарный (человеческий) и UTC счетчик.
Еси есть такая возможность - переведите узел в режим 32-разрядного счетчика UTC
и пользуйтесь удобным и стандартым методом работы в временем localtime(), gmtime(), strftime() etc.
Заодно "автоматически" решается гемор с переходом или "непереходом" зима-лето, если ОНО требуется и таймозонами.
---
Если аппаратного UTC нет -
Цитата(jcxz @ Sep 28 2017, 17:13) *
. . .
Забить на эти регистры, разрешить секундные прерывания и по ним инкрементировать счётчик в памяти.

sm.gif
И будет Вам счастье ....

Проверка "прохода" через час:
Код
if( (UTC_Counter % 3600) == 0 ) . . . . .


Проверка "прохода" через 5 минут:
Код
if( (UTC_Counter % 300) == 0 ) . . . . .


Печать часы-минуты-секунды в массив ms
Код
    strftime( ms, 20, "%H-%M-%S", &ttm_LOC );

Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 29 2017, 08:41
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(k000858 @ Dec 27 2016, 10:59) *
В STM32F2 наблюдаю другую картину: дата может измениться в 00:00:07 время или не изменяться вообще.

Там в мануале написали целую страницу про то, как правильно читать регистры календаря. Наверняка что-то там нарушаете.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 29 2017, 08:57
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(k155la3 @ Sep 29 2017, 15:41) *
Нормальные узлы RTC имеют 2 режима - обычный календарный (человеческий) и UTC счетчик.
Еси есть такая возможность - переведите узел в режим 32-разрядного счетчика UTC

Вы мне-то это зачем советуете?? Я всегда именно так и делаю. Про прерывания написал - как общий случай, когда режима счётчика нет.

Цитата(scifi @ Sep 29 2017, 15:41) *
Там в мануале написали целую страницу про то, как правильно читать регистры календаря. Наверняка что-то там нарушаете.

99.9% что именно так и обстоит дело.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 29 2017, 09:01
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(jcxz @ Sep 29 2017, 11:57) *
Вы мне-то это зачем советуете?? Я всегда именно так и делаю. Про прерывания написал - как общий случай, когда режима счётчика нет.
. . .

Вас-с-с-с я цитирую и плюсую, а советую ТС.
Go to the top of the page
 
+Quote Post
k000858
сообщение Sep 29 2017, 09:26
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



да да и будильник из спящего режима на таймере делать?
в общем в моем случае проблема давно решена. как озвучили выше "необходимо сначала считывать регистр времени затем даты".
Go to the top of the page
 
+Quote Post
Zeal0t
сообщение Sep 29 2017, 09:29
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 28-06-13
Пользователь №: 77 311



Цитата(jcxz @ Sep 29 2017, 11:57) *
99.9% что именно так и обстоит дело.


В сообщении #6 я же про это ТС-у написал. Что то проигнорировал он )
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016