Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TM32F091 - StopMode
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
toweroff
Добрый день

Есть устройство, работает под CMSIS_RTOS. Нужно засыпать и просыпаться от изменения состояния на 2х пинах и один раз в час
Правильны ли мои мысли в реализации этого хозяйства:

1. Само "засыпание" - у Кейла в примерах это делается в задаче Idle, так и оставим
2. Тактирование GPIO - я так понимаю, без этого никак. Единственное, наверное, перевести на тактирование от внутреннего RC, кварц и PLL отключаем перед засыпанием
3. RTC настраиваем на тактирование от LSE и пусть от батарейки тикает
4. Настраиваем EXTI для пинов и RTC

При пробуждении от пинов необходимо только зафиксировать факт изменения состояния пина, увеличить счетчик и снова заснуть
Пробуждение от RTC вызовет работу в течение минуты-полторы и снова в сон.

Также есть ADC, хотелось бы как-то и его приплести для просыпания, там делитель с +5в примерно до 1в. Получается, его также нужно тактировать?

Теперь интересен сам процесс просыпания, например, от пинов. Прерывание настроено, получается, я "очнусь" в обработчике? Точнее, после __WFE() и сразу влечу в прерывание

И самый важный момент - оставляя тактирование периферии, я ведь не получу заветный 1мкА потребления? laughing.gif
toweroff
UPD

Мда... что-то грустно. В Stop режиме у меня отключены все источники тактового сигнала. Получается, я не смогу использовать GPIO периферию? А так как отключен и HSI14, то и ADC в пролете...
Ну что ж, придется отключать всю периферию по максимуму и довольствоваться только ~2-3mA в Sleep mode sad.gif
По ТЗ мне хватит, но есть ощущение, что что-то я пропустил
alexf
Цитата(toweroff @ Jan 24 2017, 08:32) *
По ТЗ мне хватит, но есть ощущение, что что-то я пропустил


Stop mode - просыпается от любого внешнего прерывания (Any EXTI line configured in the EXTI registers)
Standby - минимальное потребление. просыпается от фронта на пине WKUP а так же RTC alarm.

И, кстати, можно просыпаться от ножек EXTI но НЕ входить в прерывание (event mode).
toweroff
Цитата(alexf @ Jan 25 2017, 02:20) *
Stop mode - просыпается от любого внешнего прерывания (Any EXTI line configured in the EXTI registers)
Standby - минимальное потребление. просыпается от фронта на пине WKUP а так же RTC alarm.

И, кстати, можно просыпаться от ножек EXTI но НЕ входить в прерывание (event mode).

Это все понятно. Непонятно вот что: как работает периферия, генерящая EXTI, если ее тактирование отключено?
Ну хорошо, GPIO, его можно смультиплексировать непосредстаенно в дебри EXTI, но как быть с USART и I2C, которые также могут разбудить? Как они могут вообще работать, если нет тактирования?
sigmaN
На сколько я понимаю USART и I2C не будут работать. EXTI line это ж вроде просто нога проца. Т.е. нога дернулась, проц проснулся.

На техасовском DSP я когда-то делал немного грязный хак. Перед сном переводил RX ногу USART в режим внешнего прерывания и когда данные прилетали то прерывание срабатывало от stop битов USARTa. Да, именно эти данные мы проспали, но проц просыпался, перенастраивал ногу на RX и следующий пакет уже принимал. Конкретно как там оно в ARM я не знаю, но думается мне, что пробуждение от внешнего прерывания примерно одинаково у всех реализовано.
V_N
Цитата
Мда... что-то грустно. В Stop режиме у меня отключены все источники тактового сигнала.

Внимательно прочитайте RM0091 Reference manual раздел 7.3 Low-power modes
toweroff
Цитата(sigmaN @ Jan 25 2017, 13:09) *
EXTI line это ж вроде просто нога проца. Т.е. нога дернулась, проц проснулся.

нет, Extended interrupts and events controller - это целая конструкция. Источником пробуждения может быть очень много чего

Цитата(V_N @ Jan 25 2017, 13:42) *
Внимательно прочитайте RM0091 Reference manual раздел 7.3 Low-power modes

да, я это уже видел, спасибо
но, в любом случае, ADC я туда точно не вкручу, придется довольствоваться Sleep mode
хотя... можно перенастроить мой делитель на >Vh от +5в и просыпаться по событию Rise Edge, как вариант
пожалуй, да. Пины со свим Falling Edge, входной пин ADC, настроенный на EXTI как просто Rise Edge пин... и RTC на свои линии EXTI - должно получиться
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.