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

 
 
> scmRTOS и MSP430 low power mode
Dr.NoA
сообщение Sep 7 2006, 10:07
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976



Использую операционную систему scmRTOS на микроконтроллерах MSP430 (в основном F169 и F1611), все замечательно, но есть одна проблема.
Хотелось бы переводить МК в режим пониженного энергопотребления (например, LPM3), когда ему нечем заняться. Насколько я понимаю, для этого достаточно в теле функции void OS::IdleProcessUserHook() выполнить команду _BIS_SR(LPM3_bits). В результате МК "заснет" до следующего прерывания от сторожевого таймера, от которого тактируется планировчик задач ОС. В обработчике прерывания нужно выполнить _BIC_SR_IRQ(LPM3_bits), чтобы МК нормально вернулся в активный режим. Но проблема в том, что код обработчика прерывания от сторожевого таймера является частью scmRTOS, а добавление одной строчки "_BIC_SR_IRQ(LPM3_bits)" приведет к нарушению условий лицензии на scmRTOS.
В общем вопрос в следующем. Решал ли кто-нибудь эту задачу без внесения изменений в исходники операционки? Если да, то поделитесь рецептом.

P.S.
Я, конечно, понимаю, что проблема несколько надуманная, но все таки хочется хоть что-то использовать без нарушения лицензии.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dr.NoA
сообщение Jan 18 2010, 13:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976



Цитата(SSerge @ Jan 18 2010, 14:36) *
Получается, что попытка выходить из спячки в обработчике прерывания от таймера есть подход идеологически неправильный.

Цитата(dxp @ Jan 18 2010, 15:00) *
Дождемся автора темы, может он объяснит. smile.gif

Если вы ждете меня, то могу пояснить.

Рассуждения SSerge совершенно верные. Переход в спящий режим выполняется в функции IdleProcessUserHook(), если выясняется, что процессору делать нечего. В частности, при переходе в спящий режим MCLK переключается на DCO, а высокочастотный генератор выключается, при выходе из спящего режима мы опять переключаемся на XT2. Естественно, было бы глупо выполнять выход из спящего режима при каждом прерывании от системного таймера, так как накладные расходы на переключение нивелировали бы всю экономию от спящего режима, поэтому для выхода из спящего режима пришлось завести еще одну функцию - IdleProcessExitUserHook(), которая вызывается планировщиком перед тем, как передать управление от Idle-процесса к какому-либо нормальному процессу. Именно в IdleProcessExitUserHook() выполняется восстановление системы тактирования и прочие действия для перехода в активный режим работы.
Go to the top of the page
 
+Quote Post
dxp
сообщение Jan 18 2010, 15:03
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Dr.NoA @ Jan 18 2010, 19:58) *
Если вы ждете меня, то могу пояснить.

Прошу прощения, это я внес путаницу. Я имел в виду автора обсуждаемого вопроса, а не темы, конечно. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dr.NoA   scmRTOS и MSP430 low power mode   Sep 7 2006, 10:07
- - dxp   Цитата(Dr.NoA @ Sep 7 2006, 17:07) Исполь...   Sep 7 2006, 11:24
- - Dr.NoA   Цитата(dxp @ Sep 7 2006, 15:24) Там для с...   Sep 7 2006, 12:38
|- - dxp   Цитата(Dr.NoA @ Sep 7 2006, 19:38) Цитата...   Sep 7 2006, 13:11
- - Dr.NoA   Цитата(dxp @ Sep 7 2006, 17:11) Цитата(Dr...   Sep 7 2006, 16:36
|- - dxp   Цитата(Dr.NoA @ Sep 7 2006, 23:36) Но дум...   Sep 8 2006, 05:31
|- - Hamster1979   Цитата(dxp @ Sep 8 2006, 08:31) Должно ра...   Jan 15 2010, 18:14
|- - dxp   Цитата(Hamster1979 @ Jan 16 2010, 00:14) ...   Jan 16 2010, 11:05
|- - Hamster1979   Цитата(dxp @ Jan 16 2010, 14:05) А если н...   Jan 16 2010, 11:23
|- - dxp   Цитата(Hamster1979 @ Jan 16 2010, 17:23) ...   Jan 16 2010, 13:47
|- - Hamster1979   Даже не так. При применении _Pragma ("inline ...   Jan 16 2010, 14:34
|- - dxp   Цитата(Hamster1979 @ Jan 16 2010, 20:34) ...   Jan 17 2010, 13:52
|- - Hamster1979   Цитата(dxp @ Jan 17 2010, 16:52) А зачем ...   Jan 17 2010, 20:38
|- - dxp   Цитата(Hamster1979 @ Jan 18 2010, 02:38) ...   Jan 18 2010, 04:16
|- - ReAl   Цитата(dxp @ Jan 18 2010, 06:16) #define ...   Jan 18 2010, 08:26
||- - dxp   Цитата(ReAl @ Jan 18 2010, 14:26) и понял...   Jan 18 2010, 09:39
|- - Hamster1979   Цитата(dxp @ Jan 18 2010, 07:16) А у вас ...   Jan 18 2010, 14:45
- - yornik   Поправьте меня, если ошибаюсь: в изначальном виде ...   Sep 8 2006, 12:30
- - Dr.NoA   Цитата(yornik @ Sep 8 2006, 16:30) Поправ...   Sep 8 2006, 14:00
- - SSerge   Я тут подумал... Когда процессор должен уходить в ...   Jan 18 2010, 11:36
|- - dxp   Цитата(SSerge @ Jan 18 2010, 17:36) Получ...   Jan 18 2010, 12:00
- - jorikdima   В качестве результата обсуждения, как в итоге-то н...   Feb 5 2010, 09:39
- - dxp   Цитата(jorikdima @ Feb 5 2010, 15:39) Как...   Feb 5 2010, 14:35
- - Dr.NoA   Цитата(jorikdima @ Feb 5 2010, 12:39) Я в...   Feb 5 2010, 16:26


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

 


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


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