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

 
 
 
Reply to this topicStart new topic
> Команда запрета прерываний
DreamTwister
сообщение Oct 6 2008, 05:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436



Подскажите пожалуйста команду запрета прерываний в микроконтроллере LPC2142, если она есть.

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

Как лучше справиться с проблемой?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 6 2008, 11:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

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

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

Глобально прерывания и так запрещены, пока работает обработчик. Т.е. вам нужно или оставаться в прерывании, или запрещать конкретно это прерывание до тех пор, пока не восстановится питание.
Go to the top of the page
 
+Quote Post
DreamTwister
сообщение Oct 6 2008, 11:36
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 5-08-08
Из: Челябинск
Пользователь №: 39 436



Спасибо, но я уже успел сам разобраться smile.gif .

Больше всего поразило наличие двух регистров:
VICIntEnable и VICIntEnClear. Никак не могу понять, зачем нужен второй регистр? Почему нельзя разрешить запись в VICIntEnable нулей для деинициализации нужного прерывания?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 6 2008, 11:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Потому что это не будет атомарной операцией.
Go to the top of the page
 
+Quote Post

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

 


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


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