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

 
 
 
Reply to this topicStart new topic
> STM32L, STOP MODE, Прерывание TIM11
MiklPolikov
сообщение Feb 29 2016, 01:52
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Хочу что бы процессор выходил из STOP по прерыванию TIM11
Настраиваю прерывание от TIM11 , ввожу процессор в STOP MODE. И больше не просыпается, прерывание не срабатывает.
По прерываниям от ног, RTC Alarm просыпается.
А если ввести в SLEEP , то прерывание TIM11 работает как надо.
Тактирование TIM11 разрешено в спящих режимах.
В чём может быть косяк ?

Воожу в STOP так:
Код
SCB->SCR |=SCB_SCR_SLEEPDEEP;  
PWR->CR &=~ PWR_CR_PDDS;
PWR->CSR &=~ PWR_CSR_WUF;
PWR->CR |=  PWR_CR_LPSDSR;  
__dsb(15);
__WFI();
__isb(15);
PWR->CR &= ~PWR_CR_LPSDSR;


Заранее спасибо !


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
nx6310
сообщение Feb 29 2016, 04:47
Сообщение #2


Участник
*

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



По моему stm может из stop mode выйти только по прерываниям от ног и будильника. По обычному таймеру он не сможет выйти из этого режима. Что написано в даташите на данный кристал?
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 29 2016, 05:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(nx6310 @ Feb 29 2016, 07:47) *
По моему stm может из stop mode выйти только по прерываниям от ног и будильника. По обычному таймеру он не сможет выйти из этого режима. Что написано в даташите на данный кристал?

Any EXTI Line configured in Interrupt mode


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Feb 29 2016, 08:27
Сообщение #4


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(MiklPolikov @ Feb 29 2016, 08:47) *
Any EXTI Line configured in Interrupt mode

Ну так подключение таймеров (кроме RTC) к EXTI не предусмотрено.
Вот тактирование обычных таймеров на STM32Lxxx от часового кварца - это интересная штука, буду иметь в виду. Но что с этим делать, если они один фиг разбудить контроллер не могут - непонятно...


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 29 2016, 09:30
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(esaulenka @ Feb 29 2016, 10:27) *
Ну так подключение таймеров (кроме RTC) к EXTI не предусмотрено.
Разве что таймером дергать ногой и ловить EXTI от этой ноги.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AlanDrakes
сообщение Feb 29 2016, 15:11
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



STM32LXXX - Reference manual:
Секция 5.3: Low-power modes
Table 26. Summary of low-power modes
В режиме STOP ВСЁ ядро остановлено. Тактовые генераторы HSE/HSI/MSI выключены.
Соответственно, затактировать таймер нельзя. Ну никак.

10.2.5 External interrupt/event line mapping
EXTI. Прерывания 0-15 - пины портов.
The other EXTI lines are connected as follows:
• EXTI line 16 is connected to the PVD output
• EXTI line 17 is connected to the RTC Alarm event
• EXTI line 18 is connected to the USB Device FS wakeup event
• EXTI line 19 is connected to the RTC Tamper and TimeStamp events
• EXTI line 20 is connected to the RTC Wakeup event
• EXTI line 21 is connected to the Comparator 1 wakeup event
• EXTI line 22 is connected to the Comparator 2 wakeup event
• EXTI line 23 is connected to the channel acquisition interrupt

Таймера, естественно нет.
Можете только настраивать часы на будильник/совпадение времени и просыпаться так.
Больше вариантов нет никаких.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 29 2016, 18:59
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(AlanDrakes @ Feb 29 2016, 18:11) *
Можете только настраивать часы на будильник/совпадение времени и просыпаться так.


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


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
AlanDrakes
сообщение Mar 1 2016, 10:17
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



Цитата(MiklPolikov @ Mar 1 2016, 00:59) *
Так и делаю.
Но при частых перенастройках RTC он начинает жутко отставать, видимо во время процедуры входа в режим инициализации пропускается такт кварца или что-то в этом роде.

Прошерстил раздел о RTC. Ничего такого нет.
Тактирование часов не переключаете? Вроди бы, весь домен RTC может работать на LSI/LSE генераторе и зависеть только от его стабильности. Соответственно, на LSE может быть несколько завышенная ёмкость на кристалле, либо сам кристалл имеет заниженную частоту (хотя чаще спешат).
Плюс, у часов есть секундное прерывание - не эффективнее ли использовать его? Или нужны более длинные паузы?

Ещё есть таймер пробуждения (RTC_CR_WUTE), который можно настроить:
20.3.4 Periodic auto-wakeup
Код
The•

wakeup timer clock input can be:
RTC clock (RTCCLK) divided by 2, 4, 8, or 16.
When RTCCLK is LSE(32.768kHz), this allows to configure the wakeup interrupt period
from 122 μs to 32 s, with a resolution down to 61μs.
ck_spre (usually 1 Hz internal clock)
When ck_spre frequency is 1Hz, this allows to achieve a wakeup time from 1 s to
around 36 hours with one-second resolution. This large programmable time range is
divided in 2 parts:

from 1s to 18 hours when WUCKSEL [2:1] = 10

and from around 18h to 36h when WUCKSEL[2:1] = 11. In this last case 216 is
added to the 16-bit counter current value.When the initialization sequence is
complete (see Programming the wakeup timer on page 506), the timer starts
counting down.When the wakeup function is enabled, the down-counting remains
active in low power modes. In addition, when it reaches 0, the WUTF flag is set in
the RTC_ISR register, and the wakeup counter is automatically reloaded with its
reload value (RTC_WUTR register value).

То есть, достаточно широкие пределы возможностей автопробуждения. И приличной точностью.
Отпадает необходимость в дополнительных таймерах, которые будут будить контроллер из STOP'а. Кстати, должно сработать и в STANDBY, судя по таблице.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Mar 1 2016, 10:59
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(AlanDrakes @ Mar 1 2016, 13:17) *
Плюс, у часов есть секундное прерывание - не эффективнее ли использовать его? Или нужны более длинные паузы?

Ещё есть таймер пробуждения (RTC_CR_WUTE),


Использовал этот таймер, для его настройки нужно разблокировать регистры RTC , когда это делается непрерывно каждые 1-10 с появляется описанный выше глюк.
Остановился на том, что пробуждение происходит через фиксированные промежутки времени, без перенастройки каждый раз. Кривое решение, но зато работает.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 07:38
Рейтинг@Mail.ru


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