Easyelectronics.ru

Электроника для всех
Текущее время: 22 янв 2021, 10:50

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 13:32 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
serglg писал(а):
И клиентам пофиг красота инициализации RTC. Им главное - чтоб часы тикали. И не сбивались.
И даже если батарейку поменяли, то минимум усилий для восстановления даты/времени.
У меня - минимум. :-)


И как вы можете что либо гарантировать , если даже не понимаете как оно устроено и работает?
Причем полагаетесь на калокуб коей разрабы позиционируют AS IS и годный только для изучения , а вовсе не как безупречную, вылизанную либу.
Разработчики ни чего не гарантируют а вы гарантируете, как так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 15:01 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 504
dosikus_2 писал(а):
serglg писал(а):
И клиентам пофиг красота инициализации RTC. Им главное - чтоб часы тикали. И не сбивались.
И даже если батарейку поменяли, то минимум усилий для восстановления даты/времени.
У меня - минимум. :-)


И как вы можете что либо гарантировать , если даже не понимаете как оно устроено и работает?
Причем полагаетесь на калокуб коей разрабы позиционируют AS IS и годный только для изучения , а вовсе не как безупречную, вылизанную либу.
Разработчики ни чего не гарантируют а вы гарантируете, как так?


Жалоб за 2 года на часы не было.
Ни разу.
Даже не знаю, что и сказать.
Минус 40 и плюс 40 было, броски питания, переключение на дизель генератор и проч. - всё было.
Был случай выдержали несколько суток на морозе без питания только на батарейке, потом включали - всё нормально.
При смене батарейки часы/минуты скидываются на нуль. День, месяц, год я сохраняю каждые сутки в ЕЕПРОМ.
Как их поломать? :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 15:30 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
serglg писал(а):
День, месяц, год я сохраняю каждые сутки в ЕЕПРОМ.

НО ЗАЧЕМ???
Не там, где надо, вы проявляете "чудо творчества"...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 18:46 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
SystemEn писал(а):
Итак, часы так запустить не удалось.

Хорошо. Ну а LSI запускать - кто же будет, мм? Ну я же, блин, привел код. Ну разве ж сложно сделать в точности так же?
Ну ладно, давайте вместе сделаем это, по шажкам, с картиночками:
(под спойлер не прячу, а то ТС опять не увидит)
Вложение:
Без-имени-1.jpg
Без-имени-1.jpg [ 134.81 Кб | Просмотров: 609 ]

Вложение:
Без-имени-2.jpg
Без-имени-2.jpg [ 71.65 Кб | Просмотров: 609 ]

Вложение:
Без-имени-3.jpg
Без-имени-3.jpg [ 86.11 Кб | Просмотров: 609 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 20:52 
Заглядывает иногда

Зарегистрирован: 17 дек 2018, 13:49
Сообщения: 79
BusMaster писал(а):
SystemEn писал(а):
Итак, часы так запустить не удалось.

Хорошо. Ну а LSI запускать - кто же будет, мм? Ну я же, блин, привел код. Ну разве ж сложно сделать в точности так же?
Ну ладно, давайте вместе сделаем это, по шажкам, с картиночками:
(под спойлер не прячу, а то ТС опять не увидит)
Вложение:
Без-имени-1.jpg

Вложение:
Без-имени-2.jpg

Вложение:
Без-имени-3.jpg

Спасибо, про то, что LSI отключен (как я считал, что внутренний RC генератор работает всегда) я узнал совершенно случайно, в следующем за BDCR регистром. Попробую дома :)
Спасибо :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 21:21 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 504
BusMaster писал(а):
serglg писал(а):
День, месяц, год я сохраняю каждые сутки в ЕЕПРОМ.

НО ЗАЧЕМ???
Не там, где надо, вы проявляете "чудо творчества"...


клиент малость необразован. :-)
И обслуживать некому.
А по GSM в офисе должны получать ежедневный отчет о заправках.
А 1-го числа - ежемесячный.
А могут питание пульта и выключить рубильником, если топливо в цистерне кончилось.
А если дни в отчете собьются - ужас...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 21:36 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
LSI - Low-Speed Internal (40 kHz) - включается по запросу, при питании от резервной батареи не выключается
HSI - High-Speed Internal (8 MHz, 16 MHz, 64 MHz) - при запуске включен всегда, если нет MSI
в некоторых есть MSI - Multi-Speed Internal (от 65 kHz до 48 MHz) - при запуске включен именно он на частоте 4 MHz
HSI48 - High-Speed Internal 48 MHz (для USB) - включается по запросу
HSI14 - High-Speed Internal 14 MHz (для ADC) - включается по запросу
LSE - Low-Speed External - внешний "часовой" кварц или генератор, включается по запросу, при питании от резервной батареи не выключается
HSE - High-Speed External - внешний кварц или генератор, включается по запросу.

Цитата:
А по GSM в офисе должны получать ежедневный отчет о заправках. ... А если дни в отчете собьются - ужас...

вот я о том и говорю - ЗАЧЕМ? Если выключат в 23:40, а включат в 0:10, то дата будет вчерашняя.
GSM передает точное текущее время и дату, достаточно запросить их AT-командой. Более того, сами GSM-модули имеют собственные RTC.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 24 янв 2019, 22:47 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 551
Откуда: Киев
Ваши посты можно прям копировать и в блокнотик заметки делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 25 янв 2019, 00:20 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 875
Часы реального времени имеют различия в разных камнях st. Вторая страница темы, а название камня не засветилось.
Есно, имея названия камня - можно спросить у гугла, и ответ будет более точным чем в этой ветке.
В реальности там всего три варианта запуска, которые можно целиком и полностью копировать в новые проекты.

_________________
[url=https://github.com/AVI-crak/Rtos_cortex]Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 25 янв 2019, 12:57 
Заглядывает иногда

Зарегистрирован: 17 дек 2018, 13:49
Сообщения: 79
AVI-crak писал(а):
Часы реального времени имеют различия в разных камнях st. Вторая страница темы, а название камня не засветилось.
Есно, имея названия камня - можно спросить у гугла, и ответ будет более точным чем в этой ветке.
В реальности там всего три варианта запуска, которые можно целиком и полностью копировать в новые проекты.

STM32F407VG


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 25 янв 2019, 13:10 
Заглядывает иногда

Зарегистрирован: 17 дек 2018, 13:49
Сообщения: 79
Благодаря BusMaster, часы запустились, а я понял свою ошибку.
Решил использовать внешний высокоскоростной кварцевый резонатор.
1) Для мультиплексора отвечающий за выбор источника тактов RTC, через делитель на 32, выбираем HSE. 8MHz / 32 = 250 KHz.
2) Блокируем RTC регистры путем записи ключей в WPR регистры.
3) Заходим в режим установки INIT - ISR регистр.
4) Ждем флага начала установки INITF.
5) Вот тут интересно. Входную частоту нужно еще раз поделить так, чтобы на выходе был ровно 1Hz.
Формула sk_pres = RTCCLK / (PREDIV_A + 1) * (PREDIV_S + 1) = 250KHz / (125 * 2000) = 1Hz.
6) Загружаем время и дату в DR и TR регистры.
7) Настройка формата. на 24 часа.
8) Выходим из режима установки.
9) Записываем в регистр безопасности значение 0xFF.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 25 янв 2019, 13:29 
Заглядывает иногда

Зарегистрирован: 17 дек 2018, 13:49
Сообщения: 79
Рано радовался блин. Значение записались, флаги устанавливаются, но значение в регистры времени и даты не записываются.
Код:
   // Delivered clocks by 32.
   RCC->CFGR |= RCC_CFGR_RTCPRE_0 | RCC_CFGR_RTCPRE_1 | RCC_CFGR_RTCPRE_2 | RCC_CFGR_RTCPRE_3 | RCC_CFGR_RTCPRE_4;
   
   RCC->APB1ENR = RCC_APB1ENR_PWREN;
   // Enable Backup.
   PWR->CR = PWR_CR_DBP;
   RCC->BDCR |= RCC_BDCR_BDRST; // Reset register.
   RCC->BDCR &= ~ RCC_BDCR_BDRST;
   //Using HSE for RTC.
   RCC->BDCR |= RCC_BDCR_RTCEN | RCC_BDCR_RTCSEL_0 | RCC_BDCR_RTCSEL_1;
   
   
   //Protection key.
   RTC->WPR = 0xCA;
   RTC->WPR = 0x53;
   
   //Init
   RTC->ISR = RTC_ISR_INIT;
   while (!(RTC->ISR & RTC_ISR_INITF));
   
   RTC->PRER = 0x7D07D0;
   
   RTC->TR = 0x194000;
   RTC->DR = 0x198124;
   
   RTC->ISR &=~ RTC_ISR_INIT;
   RTC->WPR = 0xFF;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 25 янв 2019, 16:46 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 504
BusMaster писал(а):
вот я о том и говорю - ЗАЧЕМ? Если выключат в 23:40, а включат в 0:10, то дата будет вчерашняя.
GSM передает точное текущее время и дату, достаточно запросить их AT-командой. Более того, сами GSM-модули имеют собственные RTC.


1. Со связью в деревнях не всегда хорошо. Надеяться на GSM чревато. Иногда народ вручную с флэшкой едет к пульту.
2. Потеря времени конечно возможна и в моем случае. Это всё дело вероятностное. Я просто снижаю вероятность потери.
3. Собственные RTC в GSM-модуле? Без батарейки?

Хочу сказать, что критика моего алгоритма дело конечно полезное. :-)
Но я хотел только подчеркнуть, что обсуждаемая ТУТ тема как раз у меня решена средствами Куба.
Только и всего.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 25 янв 2019, 21:34 
Заглядывает иногда

Зарегистрирован: 17 дек 2018, 13:49
Сообщения: 79
Господа, часы так и не запустились, в чем проблема-то?
Код:
RCC->CSR |= RCC_CSR_LSION; 
while (!(RCC->CSR & RCC_CSR_LSIRDY));

RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR |= PWR_CR_DBP;

RCC->BDCR |= RCC_BDCR_BDRST;
__NOP;
RCC->BDCR &=~ RCC_BDCR_BDRST;

RCC->BDCR |= RCC_BDCR_RTCEN | RCC_BDCR_RTCSEL_1;

RTC->WPR = 0xCA;
__NOP();
__NOP();
__NOP();
RTC->WPR = 0x53;
__NOP();
__NOP();
__NOP();

RTC->ISR |= RTC_ISR_INIT;
while (!(RTC->ISR & RTC_ISR_INITF));

RTC->TR = 0x194000;
RTC->DR = 0x198124;

while (1){}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 26 янв 2019, 01:02 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 875
Тут важна последовательность запуска, и она у всех чипов одинаковая. Смысл в том чтобы не трогать часы если они уже работают.
Второй прикол - обеспечить прерывание при спаде напряжения питания. В нём нужно завершить все работы с защищённой областью памяти, и ждать когда свет отрубится. Иначе память будет сыпаться.
Задержка в тиках мк, актуальна для чипов с тактовой выше 50мгц.
Show

_________________
[url=https://github.com/AVI-crak/Rtos_cortex]Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC. Настройка.
СообщениеДобавлено: 17 ноя 2020, 21:15 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2881
Столкнулся с забавной проблемой-багой.
Имеется STM32L433, работает на 80мгц от MSI через PLL, запускаю RTC от внутреннего LSI. В целом всё тикало и работало ровно до того момента, как я захотел выводить в таймстампе еще и миллисекунды, для чего решил задействовать SSR регистр, вкупе со значение синхронного счетчика 999 (1000 - 1) и асинхронного 31 (32-1). Бит RTC_CR_BYPSHAD сброшен в 0.
Проблемы начались, когда я начал читать регистр SSR после TR и DR. В этом случае такое ощущение, что TR вычитывается не каждый раз, в итоге в дебаге следующее:
Код:
00-00-00 00:00:00.021->[RTC]->Test timestamp
00-00-00 00:00:00.881->[RTC]->Test timestamp
00-00-00 00:00:15.741->[RTC]->Test timestamp
00-00-00 00:00:15.601->[RTC]->Test timestamp

Если убрать чтение SSR, то всё читается нормально
Код:
00-00-00 00:00:07.000->[RTC]->Test timestamp
00-00-00 00:00:07.000->[RTC]->Test timestamp
00-00-00 00:00:08.000->[RTC]->Test timestamp
00-00-00 00:00:08.000->[RTC]->Test timestamp
00-00-00 00:00:08.000->[RTC]->Test timestamp
00-00-00 00:00:08.000->[RTC]->Test timestamp
00-00-00 00:00:08.000->[RTC]->Test timestamp
00-00-00 00:00:08.000->[RTC]->Test timestamp
00-00-00 00:00:08.000->[RTC]->Test timestamp
00-00-00 00:00:09.000->[RTC]->Test timestamp

Однако если включить RTC_CR_BYPSHAD то и с чтением SSR все работает корректно. В ДШ этой ситуации не описано.
В еррате есть схожее упоминание 2.11.1 RTC calendar registers are not locked properly :
Цитата:
When reading the calendar registers with BYPSHAD = 0, the RTC_TR and RTC_DR registers may not be locked
after reading the RTC_SSR register. This happens if the read operation is initiated one APB clock period before
the shadow registers are updated. This can result in a non-consistency of the three registers. Similarly, the
RTC_DR register can be updated after reading the RTC_TR register instead of being locked.

Workaround
Apply one of the following measures:
• use BYPSHAD = 1 mode (bypass shadow registers), or
• if BYPSHAD = 0, read SSR again after reading SSR/TR/DR to confirm that SSR is still the same, otherwise
read the values again.


Вроде о другом, но... последовательность чтения SSR/TR/DR натолкнула на мысль, что сначала надо читать SSR.
В итоге при RTC_CR_BYPSHAD = 0 всё нормально заработало. Хотя нигде не говорится о критичности порядка чтения регистров.
Код:
00-00-00 00:00:00.836->[RTC]->Test timestamp
00-00-00 00:00:00.976->[RTC]->Test timestamp
00-00-00 00:00:01.116->[RTC]->Test timestamp
00-00-00 00:00:01.256->[RTC]->Test timestamp
00-00-00 00:00:01.396->[RTC]->Test timestamp
00-00-00 00:00:01.536->[RTC]->Test timestamp
00-00-00 00:00:01.676->[RTC]->Test timestamp
00-00-00 00:00:01.816->[RTC]->Test timestamp
00-00-00 00:00:01.956->[RTC]->Test timestamp
00-00-00 00:00:02.096->[RTC]->Test timestamp
00-00-00 00:00:02.236->[RTC]->Test timestamp
00-00-00 00:00:02.376->[RTC]->Test timestamp


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB