Без описания |
Поиск в теме | Версия для печати |
Белый Волк |
Отправлено: 03 Декабря, 2010 - 10:17:09
|
Супермодератор
Сообщений всего: 648
Дата рег-ции: Февр. 2007
|
cjA
Приведённый Вами пример кода идёт вразрез с предметом спора, поскольку он аппаратно отключает обработку прерываний. Если в процессе работы произойдёт несколько прерываний, которые выставляют соответствующие флаги, но глобально прерывания запрещены - безусловно ничего не произойдёт. Однако, как только прерывания вновь будут разрешены - их обработка произойдёт в порядке приоритета, о чём есть упоминание в datasheet любого микроконтроллера AVR в главе "Reset and interrupt handling".
Опираясь на этот факт, можно заключить, что если два прерывания произойдут одновременно - сначала обработается прерывание с более высоким приоритетом. При этом, прерывания автоматически глобально запрещаются при входе в процедуру обработки прерывания, а после выхода (команда reti) - автоматически разрешаются. Для иного поведения, необходимо разрешать/запрещать обработку прерываний внутри действующего обработчика программно. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (17): В начало « ... 7 8 9 10 [11] 12 13 14 15 ... » В конец |
« Программирование микроконтроллеров » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|