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

 
 
> Прерывания в 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
777777
сообщение Jun 9 2008, 04:29
Сообщение #6


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

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



Цитата(zhevak @ Jun 7 2008, 14:38) *
Я не вижу здесь ни каких проблем. Не традиционный подход? -- Да. Опасные игры с кодом? -- Да. Но если ты четко знаешь, что происходит, то какие проблемы? По моему, здесь как раз и проходит грань между программированием, как "технология", и программированием, как "искусство".

Проблема в том, что это только сегодня ты четко знаешь, что происходит, через неделю будешь смутно вспоминать, а через месяц вообще забудешь. А код понадобится модернизировать. А если это будет делать другой программист? Думаешь он разделит твой восторг от отношения к программированию как к искусству? smile.gif А твой работодатель, боюсь, вообще будет категорически против. Потому что ему не видно твоего искусства, он видит только как работает устройство, есть там глюки или нет, и если они есть, то хвалится красотой исходного кода бессмысленно - никто не оценит. Да и пользы от всяких хитроумных трюков обычно никакой нет - даже если экономится 10-20% памяти, все равно оставшуюся неиспользуемую память ты никуда не денешь. И даже когда программа не помещается в памяти, выгоднее вместо ATmega8535 поставить ATmega16, чем мудрить с разного рода программистскими трюками - в конце концов они тебе выйдут боком.
Так что, с точки зрения бизнеса, к программированию надо относиться как к серийному производству, смотреть на устройство глазами пользователя, а не искусствоведа, приходящего в восторг от красиво написанного исходного кода.
Цитата(zhevak @ Jun 7 2008, 14:38) *
А вообще, беспредметно спорить, только время терять.

Ну почему же, спроить всегда полезно, в спорах, как известно, рождается истина.

Сообщение отредактировал 777777 - Jun 9 2008, 04:39
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
||- - 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 Текстовая версия Сейчас: 28th July 2025 - 19:36
Рейтинг@Mail.ru


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