|
scmRTOS и MSP430 low power mode |
|
|
|
Sep 7 2006, 10:07
|
Местный
  
Группа: Свой
Сообщений: 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. Я, конечно, понимаю, что проблема несколько надуманная, но все таки хочется хоть что-то использовать без нарушения лицензии.
|
|
|
|
|
 |
Ответов
|
Jan 18 2010, 13:58
|
Местный
  
Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976

|
Цитата(SSerge @ Jan 18 2010, 14:36)  Получается, что попытка выходить из спячки в обработчике прерывания от таймера есть подход идеологически неправильный. Цитата(dxp @ Jan 18 2010, 15:00)  Дождемся автора темы, может он объяснит.  Если вы ждете меня, то могу пояснить. Рассуждения SSerge совершенно верные. Переход в спящий режим выполняется в функции IdleProcessUserHook(), если выясняется, что процессору делать нечего. В частности, при переходе в спящий режим MCLK переключается на DCO, а высокочастотный генератор выключается, при выходе из спящего режима мы опять переключаемся на XT2. Естественно, было бы глупо выполнять выход из спящего режима при каждом прерывании от системного таймера, так как накладные расходы на переключение нивелировали бы всю экономию от спящего режима, поэтому для выхода из спящего режима пришлось завести еще одну функцию - IdleProcessExitUserHook(), которая вызывается планировщиком перед тем, как передать управление от Idle-процесса к какому-либо нормальному процессу. Именно в IdleProcessExitUserHook() выполняется восстановление системы тактирования и прочие действия для перехода в активный режим работы.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|