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

 
 
 
Reply to this topicStart new topic
> Выход из LPM3 по прерываниям
1921
сообщение Mar 24 2011, 09:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Корифеи! Помогите - подскажите! Ухожу в LPM3, предварительно разрешив прерывания по порту 1. Тактирование от VLOCLK, РАБОТАЕТ, т.к. тикает WDT.
P1SEL=0
P1IE=FF
глобальные разрешены. Так вот, по WDT из LPM3 выходит, дёрганье за ноги P1 не приводит ни к чему. Если в LPM не загонять - прерывания работают. Заметил, что при выходе из LPM по WDT глобальные прерывания в SR почему-то запрещены. Это непонятно, т.к. при входе в LPM я их разрешал. Второе: как я понимаю, флаги всё равно должны выскакивать, так вот их там нет (P1IFG).
Подскажите, что почитать, за что подёргать, куда потыкать?
Go to the top of the page
 
+Quote Post
bigal
сообщение Mar 24 2011, 11:00
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 16-08-06
Из: Москва
Пользователь №: 19 581



Есть ли разрешение прерываний при входе в LPM3?
P1IE |= 0x10; // P1.4 interrupt enabled
P1IES |= 0x10; // P1.4 Hi/lo edge
P1IFG &= ~0x10; // P1.4 IFG cleared

_BIS_SR(LPM3_bits + GIE);

Описан ли обработчик прерывания?
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
P1IFG = 0x00;
LPM3_EXIT;
}

Приведите более полно ваши коды
Go to the top of the page
 
+Quote Post
1921
сообщение Mar 24 2011, 15:09
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Спасибо, разобрался. Просто эта штука не работает в пошаговом режиме, без отладчика всё пошло. С удивлением узнал, что после обработки прерывания в LPM3 контроллер уходит "досыпать", если не дать директиву __low_power_mode_off_on_exit();
В этом случае после обработки прерывания пробуждается и выскакивает на следующий за слипом шаг. Кстати, может, кто скажет, есть ли программный reset, который выводит программу на начало? В принципе, можно и без него, но с ним было бы лучше...
P.S. Кстати, откуда эта команда LPM3_EXIT;
Где она описана? Я проверил - работает, но в руководстве на С её не нашёл. Тогда где?

Сообщение отредактировал 1921 - Mar 24 2011, 15:14
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 24 2011, 16:03
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(1921 @ Mar 24 2011, 20:09) *
Просто эта штука не работает в пошаговом режиме, без отладчика всё пошло.
Режимы энергосбережения в дебаггере отладить не получится. Ведь ядро-то при этом "засыпает", а для отладки оно должно выполнять команды транслируемые ему через JTAG.
Цитата(1921 @ Mar 24 2011, 20:09) *
С удивлением узнал, что после обработки прерывания в LPM3 контроллер уходит "досыпать", если не дать директиву __low_power_mode_off_on_exit();
Это вы просто недочитали или невнимательно прочитали раздел System Resets, Interrupts, and Operating Modes в User's Guide.
Цитата(1921 @ Mar 24 2011, 20:09) *
Кстати, может, кто скажет, есть ли программный reset, который выводит программу на начало? В принципе, можно и без него, но с ним было бы лучше...
Опять же следует почитать вышеупомянутый раздел (System Reset and Initialization) в User's Guide. Вызвать сброс можно, например, записью в регистр WDTCTL значения, которое не содержит правильного security key.
Цитата(1921 @ Mar 24 2011, 20:09) *
P.S. Кстати, откуда эта команда LPM3_EXIT;
Где она описана? Я проверил - работает, но в руководстве на С её не нашёл. Тогда где?
Это Intrinsic-функция. Специфична для данного конкретного компилятора (IAR EW430 видимо). Поэтому описание ее нужно читать в руководстве на компилятор. Эта функция, точно также как и другие подобные ей, предназначенные для управления энергосбережением, оперирует с битами в регистре SR. См. рисунок Operating Modes For Basic Clock System и табличку под ним. Источник - опять же User's Guide. Или вот частичный перевод его.
Go to the top of the page
 
+Quote Post

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

 


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


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