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

 
 
> Прерывания в Atmel 8535
DMD
сообщение Jun 3 2008, 20:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



У меня возникла парочка вопросов по прерываниям, смотрел в документации - не нашел. Если сможете - подскажите, пожалуйста.
Как я понял из документации, при входе в обработчик прерывания все остальные прерывания запрещаются, ведь так? То есть неявно выполняется инструкция cli. А что происхоит в случае, если за время обработки происходит внешнее прерывание, INT0, к примеру? Информация о нем отбрасывается или остается где-то? Дело в том, что я пишу обработчик и мне надо знать было ли за время работы обработчика прерывание. Если было, то после выхода вызвать другой обработчик...
И ещё вопрос: как я понял, приоритет у всех внешних прерываний одинаковый, ведь так? А назначить приоритет можно только программно, правда?
Спасибо.


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DMD
сообщение Jun 3 2008, 22:24
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



А есть возможность как-нибудь очистить вот эту очередь прерываний? Я имею ввиду сделать так, чтобы после обработки текущего отложенные прерывания не выполнялись?.. Куда хоть посмотреть можно?


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jun 6 2008, 06:11
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(DMD @ Jun 4 2008, 04:24) *
А есть возможность как-нибудь очистить вот эту очередь прерываний? Я имею ввиду сделать так, чтобы после обработки текущего отложенные прерывания не выполнялись?.. Куда хоть посмотреть можно?


Возвращайтесь из обработчика прерывания не по команде RETI, а по команде RET. Разница в том, что RETI насильственно устанавливает флаг I в регистре SREG, а команда RET -- флаги в регистре не трогает вообще. И не забудьте про регистры, которые вы в начале обработчика сохранили в стеке.

А флаги конкретных прерываний (которые имели наглость установиться за это время) снимайте сами, как это посоветовал dENIM.

Сообщение отредактировал zhevak - Jun 6 2008, 06:13


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
777777
сообщение Jun 7 2008, 07:52
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(zhevak @ Jun 6 2008, 10:11) *
Возвращайтесь из обработчика прерывания не по команде RETI, а по команде RET.

Возвращаться из обработчика по команде RET нельзя!
Цитата(zhevak @ Jun 6 2008, 10:11) *
Разница в том, что RETI насильственно устанавливает флаг I в регистре SREG, а команда RET -- флаги в регистре не трогает вообще.

Вот именно! А их надо восстанавливать. Что тебе насчитает основная программа, если прерывания будут периодически портить регистр состояния?
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jun 7 2008, 10:38
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(777777 @ Jun 7 2008, 13:52) *
Возвращаться из обработчика по команде RET нельзя!


Да, почему нельзя? Если ты пишешь код и четко понимаешь как он исполняется, то какие проблемы?

У человека стоит задача __необрабатывать__ второе прерывание, если одновременно пришли "оба-два", или флаг второго прерывания поднялся до окончания обработки первого. Другое дело, что может быть человек не до конца еще понимает ситуацию, что нужно делать, т.е. еще нет четкого понятия как девайс должен работать. Отсюда такие несколько странные условия задачи. Но этот вопрос находится уже в другой плоскости.

Я не вижу здесь ни каких проблем. Не традиционный подход? -- Да. Опасные игры с кодом? -- Да. Но если ты четко знаешь, что происходит, то какие проблемы? По моему, здесь как раз и проходит грань между программированием, как "технология", и программированием, как "искусство".


А вообще, беспредметно спорить, только время терять.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DMD   Прерывания в Atmel 8535   Jun 3 2008, 20:48
- - Qwertty   Цитата(DMD @ Jun 4 2008, 00:48) Если было...   Jun 3 2008, 21:17
|- - smac   Цитата(Qwertty @ Jun 4 2008, 01:17) Это п...   Jun 6 2008, 12:23
||- - Т.Достоевский   Цитата(smac @ Jun 6 2008, 16:23) ... в ко...   Jun 6 2008, 20:01
|- - 777777   Цитата(Qwertty @ Jun 4 2008, 01:17) Возмо...   Jun 7 2008, 04:00
|- - artemm   Цитата(Qwertty @ Jun 4 2008, 00:17) Возмо...   Jun 9 2008, 05:56
|- - Maik-vs   Цитата(artemm @ Jun 9 2008, 09:56) Если р...   Jun 9 2008, 09:31
|- - alx2   Цитата(artemm @ Jun 9 2008, 10:56) Если р...   Jun 9 2008, 20:28
|- - dENIM   Цитата(DMD @ Jun 4 2008, 01:24) А есть во...   Jun 3 2008, 23:27
|- - 777777   Цитата(zhevak @ Jun 7 2008, 14:38) Я не в...   Jun 9 2008, 04:29
||- - zhevak   Цитата(777777 @ Jun 9 2008, 10:29) Пробле...   Jun 9 2008, 06:43
|- - defunct   Цитата(zhevak @ Jun 7 2008, 13:38) Да, по...   Jun 9 2008, 11:42
|- - Maik-vs   Цитата(defunct @ Jun 9 2008, 15:42) И буд...   Jun 10 2008, 12:39
|- - defunct   Цитата(Maik-vs @ Jun 10 2008, 15:39)...   Jun 10 2008, 14:22
|- - galjoen   Цитата(defunct @ Jun 10 2008, 18:22) На а...   Jun 10 2008, 15:17
||- - 777777   Цитата(galjoen @ Jun 10 2008, 19:17) А я ...   Jun 11 2008, 05:51
||- - galjoen   Цитата(777777 @ Jun 11 2008, 09:51) Вмест...   Jun 11 2008, 14:56
|- - Maik-vs   Вот оно, ключевое слово: Цитата(defunct @ Jun...   Jun 12 2008, 11:11
|- - defunct   Цитата(Maik-vs @ Jun 12 2008, 14:11)...   Jun 12 2008, 18:49
||- - sKWO   Цитата(defunct @ Jun 12 2008, 22:49) Если...   Jun 13 2008, 10:42
||- - Maik-vs   Цитата(defunct @ Jun 12 2008, 22:49) Если...   Jun 14 2008, 18:52
|- - sKWO   Цитата(Maik-vs @ Jun 12 2008, 15:11)...   Jun 15 2008, 09:05
- - 733259   ЦитатаДело в том, что я пишу обработчик и мне надо...   Jun 13 2008, 18:09
- - 733259   Не по теме, но не удержался Кодregister uint8_t ...   Jun 15 2008, 09:42


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

 


RSS Текстовая версия Сейчас: 18th August 2025 - 03:37
Рейтинг@Mail.ru


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