|
Запрет прерывания в прерывании, Глючу или я, или АВРстудия |
|
|
|
 |
Ответов
|
Jun 25 2007, 18:38
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Pyku_He_oTTyda @ Jun 26 2007, 02:26)  Счас кусок вырежу, выложу Код //******************************************************************************** ****** ISR(SIG_INTERRUPT0) { INT0_DISABLE; GIFR |= _BV(INTF0); //очистка флага прерывания if(lanc_count==0) { for(bit_count=0; bit_count<8; bit_count++) { if(bit_is_set(sub_command,bit_count)) { LANC_OUT_1; } else { LANC_OUT_0; } } } INT0_ENABLE; } Хе, так после того, как произошла очистка флага, ему никто не помешает снова установится, и естественно, так как в конце сервиса прерывание снова разрешается, мы, если имело место событие от внешнего прерывания, снова попадем в обработчик  Кстати, я вообще не вижу смысла в начале обработчика запрещать, а в конце разрешать прерывания - в его теле оно и так не возникнет, Вы же не устанавливаете I в его теле ИМХО в теле обработчика надо запрещать прерывания, и не разрешать их. А разрешать их в другом потоке, допустим, в главном цикле
--------------------
|
|
|
|
|
Jun 28 2007, 07:14
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561

|
Цитата(prottoss @ Jun 25 2007, 22:38)  Хе, так после того, как произошла очистка флага, ему никто не помешает снова установится, и естественно, так как в конце сервиса прерывание снова разрешается, мы, если имело место событие от внешнего прерывания, снова попадем в обработчик  Кстати, я вообще не вижу смысла в начале обработчика запрещать, а в конце разрешать прерывания - в его теле оно и так не возникнет, Вы же не устанавливаете I в его теле ИМХО в теле обработчика надо запрещать прерывания, и не разрешать их. А разрешать их в другом потоке, допустим, в главном цикле ...смысл запрещать? ...The I-bit is cleared by hardware after an interrupt has occurred, and is set by the RETI instruction to enable subsequent interrupts. (см. datasheet на AVR) ... т.е. бит глобального разрешения/запрещения прерываний сбрасывается аппаратно при входе в прерывание и устанавливается аппаратно при выполнении иструкции RETI...
|
|
|
|
Сообщений в этой теме
Pyku_He_oTTyda Запрет прерывания в прерывании Jun 25 2007, 16:08 prottoss Цитата(Pyku_He_oTTyda @ Jun 26 2007, 00:0... Jun 25 2007, 16:32 Pyku_He_oTTyda Не помогло
Сбрасываю вручную INTF0(единицей), INT0... Jun 25 2007, 16:58 prottoss ЦитатаWhen an event on the INT1 pin triggers an in... Jun 25 2007, 17:17 Pyku_He_oTTyda Придется ждать завтрешнего дня Jun 25 2007, 17:20 Erv&Sed Если сбрасываеш вручную - то надо сбрасывать в 0, ... Jun 25 2007, 17:36 Pyku_He_oTTyda Флаг прерывания сбрасывается записью в него 1, так... Jun 25 2007, 17:51 prottoss А мне вот интересно - как можно после выхода из пр... Jun 25 2007, 17:57     prottoss Цитата(Сергей Борщ @ Jun 28 2007, 20:09) ... Jun 28 2007, 15:13    tag Цитата(prottoss @ Jun 28 2007, 15:19) Чит... Jun 29 2007, 08:10 Pyku_He_oTTyda действительно)на ровном месте...
буду таймером выб... Jun 25 2007, 18:45 Pyku_He_oTTyda ЦитатаТогда перед разрешением вам надо принудитель... Jun 28 2007, 18:18
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|