Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-сен-19 14:28

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: RTC
СообщениеДобавлено: 2016-авг-22 16:06 
Не в сети

Зарегистрирован: 2013-май-15 11:26
Сообщения: 81
Откуда: г.Новосибирск
Товарищи, подскажите, как настроить корректно RTC? В контроллере 4 блока таймеров в BKP модуле, это независимые штуки или как? Как получается мне корректно настроить секундный таймер RTC с прерыванием? В настройке прерываний есть только четыре прерывания для TIM0-TIM4, это относится к RTC или к TIMER?

В документации слабо раскрыт вопрос часов реального времени...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2016-авг-22 17:26 
Не в сети

Зарегистрирован: 2015-июн-26 10:23
Сообщения: 55
TMR здесь не сокращение от TIMER, а Triple Modular Redundancy - означает некую троированную логику устройства регистров и работы с ними.
Например, настройки часов необходимо записывать во все три регистра:
BKP->REG_63_TMR0 = tmpRtc;
BKP->REG_63_TMR1 = tmpRtc;
BKP->REG_63_TMR2 = tmpRtc

Пример работы RTC будет чуть позже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2016-авг-22 17:55 
Не в сети

Зарегистрирован: 2013-май-15 11:26
Сообщения: 81
Откуда: г.Новосибирск
Отлично, буду ждать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2018-мар-01 18:28 
Не в сети

Зарегистрирован: 2016-апр-27 12:14
Сообщения: 26
Вопрос по поводу RTC и спящего режима. Что хочется сделать: включить RTC, затактировав его от LSE, после этого перейти в режим Standby и через N секунд проснуться по сигналу ALRF.
Отдельно Standby работает и RTC работает. Но если включить RTC а затем попытаться перейти в Standby, то переход в режим не происходит и программа продолжит выполняться. Бит 30 (STANDBY) в регистрах REG_63_TMRx устанавливается. RTC считает, досчитывает до значения, записанного в RTC_ALRM_TMRx и устанавливает бит 2 (ALRF) в регистре RTC_CS_TMRx. После этого бит 30 (STANDBY) в регистрах REG_63_TMRx сбрасывается. То есть, вроде бы все работает, кроме того, что контроллер не засыпает, а продолжает работать. Работающее RTC будто мешает контроллеру заснуть.
Частота LSE - 32 КГц.
Код:
Открыть
Код:
void Enable_RTC(void){
   uint32_t tmp_reg;
   BKP->KEY = BKP_KEY;
   
   BKP->REG_63_TMR0 = BKP->REG_63_TMR1 = BKP->REG_63_TMR2 = 1<<31;               // Reset RTC
   BKP->REG_63_TMR0 = BKP->REG_63_TMR1 = BKP->REG_63_TMR2 = 0;                     // Reset RTC
   BKP->RTC_PRL_TMR0 = BKP->RTC_PRL_TMR1= BKP->RTC_PRL_TMR2 = 32768;            // prescaler
   BKP->RTC_ALRM_TMR0 = BKP->RTC_ALRM_TMR1 = BKP->RTC_ALRM_TMR2 = 10;        // 10 seconds until wakeup
   
   tmp_reg = (1<<4)|(1<<2)|(1<<0);                                            //LSE enable, RTC enable
   BKP->REG_63_TMR0 = BKP->REG_63_TMR1 = BKP->REG_63_TMR2 = tmp_reg;
   while (!(CLK_CNTR->LSE_STAT&1<<20));   
}
//--------------------------------------------------------------------------------------
void Standby(void){
   BKP->KEY = BKP_KEY;
   BKP->REG_63_TMR0 |=(1<<30);  // Disable all LDO Regulators
   BKP->REG_63_TMR1 |=(1<<30);  // Disable all LDO Regulators
   BKP->REG_63_TMR2 |=(1<<30);  // Disable all LDO Regulators

}
// main loop:
while (1)
{
   if(KEY1){        //  по нажатию кнопки уйти в сон
    Enable_RTC();
    Standby();
}
}
Закрыть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2018-мар-02 10:18 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1281
Откуда: АО "ПКК Миландр"
[quote="_oleg_"]Вопрос по поводу RTC и спящего режима. Что хочется сделать: включить RTC, затактировав его от LSE, после этого перейти в режим Standby и через N секунд проснуться по сигналу ALRF.
Отдельно Standby работает и RTC работает. Но если включить RTC а затем попытаться перейти в Standby, то переход в режим не происходит и программа продолжит выполняться. Бит 30 (STANDBY) в регистрах REG_63_TMRx устанавливается. RTC считает, досчитывает до значения, записанного в RTC_ALRM_TMRx и устанавливает бит 2 (ALRF) в регистре RTC_CS_TMRx. После этого бит 30 (STANDBY) в регистрах REG_63_TMRx сбрасывается. То есть, вроде бы все работает, кроме того, что контроллер не засыпает, а продолжает работать. Работающее RTC будто мешает контроллеру заснуть.
Частота LSE - 32 КГц.

Проверьте что DUcc_B и DUcc_012 не соединены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2018-мар-02 11:24 
Не в сети

Зарегистрирован: 2016-апр-27 12:14
Сообщения: 26
-=Sergei=- писал(а):
Проверьте что DUcc_B и DUcc_012 не соединены.

Не соединены. Схема включения питания соответствует рисунку 167 спецификации кроме того, что BUcc сидит на отдельной батарейке на 3.3 В. Контроллер 1986ВЕ8Т выпуск 1725.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2018-мар-07 15:13 
Не в сети

Зарегистрирован: 2015-июн-26 10:23
Сообщения: 55
Если работает RTC и в RTC_ALRM_TMRX значение меньше текущего RTC_CNT_TMRX, то в standby он не уйдет.

Убедитесь, что в RTC_ALRM_TMRX пишете после вывода RTC из сброса, и что отладкой не держите программу до входа в standby пока счетчик намотает RTC_ALRM_TMRX.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2018-мар-07 17:00 
Не в сети

Зарегистрирован: 2016-апр-27 12:14
Сообщения: 26
Цитата:
Dimulk писал(а):
Если работает RTC и в RTC_ALRM_TMRX значение меньше текущего RTC_CNT_TMRX, то в standby он не уйдет.

Верно! Добавил перед запуском установку регистров RTC_CNT_TMRX в 0. Но это никак не повлияло на работу. Пробовал и без подключенного программатора, не влияет.
Работаю из внутренней RAM. Интересный эффект заключается в том, что если загрузить программу в RAM и нажать кнопку сна (нажатие запускает RTC и пытается увести контроллер в Standby), то контроллер в Standby не уйдет. Но если потом нажать Reset, то контроллер уходит в Standby. Естественно, что программа, загруженная в RAM после нажатия Reset уже не выполняется. То же произойдет при попытке повторно войти в отладку после нажатия кнопки сна. Программатор вырабатывает Reset, после чего контроллер уходит в Standby, и до тех пор пока есть батарейное питание, контроллер находится в режиме Standby. И программатор не может подключиться к контроллеру. Этот эффект сохраняется даже при следующей последовательности действий:
1) запуск RTC, включение Standby(не включился)
2) RTC считает
3) RTC_CNT_TMRX == RTC_ALRM_TMRX => флаги Standby сбрасываются контроллер просыпается (хотя и не спал)
4) генерация Reset => контроллер висит в Standby пока есть батарейное питание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2018-июн-20 16:52 
Не в сети

Зарегистрирован: 2015-окт-06 17:10
Сообщения: 14
Подскажите, если не использовать ЧРВ, обязательно подключение кварца на 32, 768кГц?
И если можно, надо ли как-то терминировать входной пин HSE0_OSC_IN&


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RTC
СообщениеДобавлено: 2018-июн-25 12:04 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 157
Откуда: ПКК "Миландр"
Если LSE генератор не используется, то выводы OSC_IN32 и OSC_OUT32 рекомендуется никуда не подключать. (в программе LSE не должен включаться).

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

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


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

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


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB