Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
6 / 6 / 0
Регистрация: 20.10.2013
Сообщений: 62
1

F446xx RTC + miliseconds

22.01.2019, 18:14. Просмотров 659. Ответов 1

Доброго времени суток

Имею дилемму с синхронизацией RTC, вплоть до миллисекунд. RTC работает и синхронизируется норм. Только вот как реализовать синхру включая миллисекунды? Кто имел дело, или знает как это можно реализовать?

Прикладываю свой метод реализации к которому я пришёл, прочитав Reference Manual и статейки в сети(которых кстати не так много):

C
1
2
3
4
5
6
7
8
9
10
float f_miliSecVal = (((float)miliSecVal / 1000) * 256);    //miliSecVal - вмещает в себе значение милисекунд
uint16_t miliSecValWrite = (uint16_t)f_miliSecVal;
  
while(phrtc->Instance->ISR & RTC_ISR_SHPF){};   // wait bit reset 
  
__HAL_RTC_WRITEPROTECTION_DISABLE(phrtc);
phrtc->Instance->SHIFTR |= miliSecValWrite;            // запись данных в shift control регистр
__HAL_RTC_WRITEPROTECTION_ENABLE(phrtc);
  
while(!(phrtc->Instance->ISR & RTC_ISR_RSF)){}; // wait bit set

Но это решение не работает, иначе бы я сюда не писал. Скорее всего я что-то упустил... Так что если натыкаете носом, буду только благодарен))
Прикладываю, скриншоты из Reference Manual(чтобы было наглядно)
0
Миниатюры
F446xx RTC + miliseconds   F446xx RTC + miliseconds  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2019, 18:14
Ответы с готовыми решениями:

Сделать функцию, которая возвращает время, преобразованное в miliseconds
Часы показывают часы «h», «минуты и секунды» после полуночи. Задача состоит в том, чтобы сделать...

PB2-RTC
Иртен, выложи, пож-та, схему и топологию на PB2-RTC-XXX Rev.0 49/12

STM32F3Discovery RTC
Всем доброго времени суток. При использовании отладочной платы STM32F3Dyscovery столкнулся с полным...

калибровка RTC
тут был топик уже мой http://we.iosyitistromyss.ru/part/rtc-ot-nxp.html Так вот PCF2129T...

1
834 / 509 / 167
Регистрация: 30.07.2015
Сообщений: 1,667
23.01.2019, 09:53 2
shepard127, я бы как то так сделал

C
1
2
3
4
5
6
7
8
uint16_t SyncTime = (uint16_t)roundf(Delay * ((phrtc->Instance->PRER & 0x7FFF) + 1);
while((phrtc->Instance->SSR & 0x8000){};  // проверяем SS[15] на переполнение
 
while(phrtc->Instance->ISR & RTC_ISR_SHPF){};   // wait bit reset 
__HAL_RTC_WRITEPROTECTION_DISABLE(phrtc);
phrtc->Instance->SHIFTR |= SyncTime;            // запись данных в shift control регистр
__HAL_RTC_WRITEPROTECTION_ENABLE(phrtc);
while(!(phrtc->Instance->ISR & RTC_ISR_SHPF)){}; // wait bit set
Добавлено через 8 минут
Это вроде как если надо притормозить часы. Если надо наоборот вперед перевести, то надо еще поле ADD1S использовать и SyncTime подругому считать.
Delay тут разница между вашим временем и источником синхронизации
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2019, 09:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

STM32F4Discovery+RTC
Здравствуйте! Пытаюсь разобраться с RTC в STM32. Написал небольшой исходничек, по задумке хотел...

Питание RTC
Здравствуйте! Есть задумка сделать девайс с часами (DS3231), которые бы работали 2+ года. Девайс...

STM8L15x, RTC
разбираюсь с stm8l, светодиодом помигал, хочу теперь часы освоить. вопрос первый - я правильно...

RTC на STM32
Подключил стандартный STM32 модуль из поставки пинборда. В кокосе выбрал пример с RTC для проверки...

read RTC
L152C6/asm Растолкуйте пожалуйста - а то мозги уже плывут! Пытаюсь читать календарь из прерывания...

Прерывание от RTC
Добрый день уважаемые форумчане. Пытаюсь завести прерывание по аларму на STM32T-Dyscovery.при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.