|
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. Я, конечно, понимаю, что проблема несколько надуманная, но все таки хочется хоть что-то использовать без нарушения лицензии.
|
|
|
|
|
 |
Ответов
|
Feb 5 2010, 09:39
|

тут может быть ваша реклама
    
Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280

|
В качестве результата обсуждения, как в итоге-то надо организовывать low power mode в случаях, когда нечего делать? Я вообще рассуждал, что единственное, что требуется, это написать одну строчку в OS::IdleProcessUserHook() , а именно _BIS_SR(LPM3_bits). Зачем где-то вызывать _BIC_SR_IRQ(LPM3_bits)? Ведь войдя в обработчик прерывания от системного таймера, в случае если надо будет переключить задачу, то восстановится полностью контекст этой задачи, в том числе и регистр SR, в котором не будет уже стоять битов CPUOFF и пр., соответственно таск продолжит выполняться. Как только шедулер решит, что ни один таск не готов, то включится опять IDLE и восстановится его контекст, вместе с CPUOFF, контроллер опять заснет. Я правильно понимаю все? Спасибо.
|
|
|
|
Сообщений в этой теме
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 Dr.NoA Цитата(SSerge @ Jan 18 2010, 14:36) Получ... Jan 18 2010, 13:58 dxp Цитата(Dr.NoA @ Jan 18 2010, 19:58) Если ... Jan 18 2010, 15:03 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|