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

F446xx RTC + miliseconds

22.01.2019, 18:14. Просмотров 358. Ответов 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  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2019, 18:14
Ответы с готовыми решениями:

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

Глюк RTC
Доброго времени суток! Столкнулся с проблемой, которую пытался описать здесь. Собственно, вопрос...

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

STM32F4DISCOVERY + RTC
Добрый день, хочу использовать часы релаьного времени RTC. Скажите, есть работающий пример, и как...

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

1
_SayHello
656 / 380 / 120
Регистрация: 30.07.2015
Сообщений: 1,331
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2019, 09:53

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

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

STM32F103C8T6 RTC
Всем привет. RTC запустилось все без проблем от LSE. Но после тестов счета, оказалось, что часы, то...


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

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

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