|
Запрет прерывания в прерывании, Глючу или я, или АВРстудия |
|
|
|
Jun 25 2007, 17:36
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 11-09-05
Пользователь №: 8 451

|
Если сбрасываеш вручную - то надо сбрасывать в 0, насколько я понимаю! Попробуй либо сбросить в 0 вручную или через программу записем 1, как сказал Проттосс.
|
|
|
|
|
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...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|