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

А, в принципе, проблема следующая: приходит прерывание на падение питания. Происходит его обработка. После чего мы должны вернуться обратно (из прерывания) к выполнению пользовательской программы. Но так как питание не восстанавливается до нужного уровня, то микроконтроллер вновь уходит на обработку прерывания.

Как лучше справиться с проблемой?
aaarrr
Цитата(DreamTwister @ Oct 6 2008, 09:28) *
Подскажите пожалуйста команду запрета прерываний в микроконтроллере LPC2142, если она есть.

Прерывания запрещаются установкой бита I в CPSR.

Цитата(DreamTwister @ Oct 6 2008, 09:28) *
А, в принципе, проблема следующая: приходит прерывание на падение питания. Происходит его обработка. После чего мы должны вернуться обратно (из прерывания) к выполнению пользовательской программы. Но так как питание не восстанавливается до нужного уровня, то микроконтроллер вновь уходит на обработку прерывания.

Глобально прерывания и так запрещены, пока работает обработчик. Т.е. вам нужно или оставаться в прерывании, или запрещать конкретно это прерывание до тех пор, пока не восстановится питание.
DreamTwister
Спасибо, но я уже успел сам разобраться smile.gif .

Больше всего поразило наличие двух регистров:
VICIntEnable и VICIntEnClear. Никак не могу понять, зачем нужен второй регистр? Почему нельзя разрешить запись в VICIntEnable нулей для деинициализации нужного прерывания?
aaarrr
Цитата(DreamTwister @ Oct 6 2008, 15:36) *
Почему нельзя разрешить запись в VICIntEnable нулей для деинициализации нужного прерывания?

Потому что это не будет атомарной операцией.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.