Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: прерывания
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
max_mart
Забыл. Напомните, пожалуйста.
Если во время работы одного прерывания, сработало другое по алгоритму программы, то после его обработки, работа программы продолжится с места, откуда он ушел в прерывание(в первом прерывании)?
ILYAUL
Цитата(max_mart @ Dec 6 2011, 00:35) *
Забыл. Напомните, пожалуйста.
Если во время работы одного прерывания, сработало другое по алгоритму программы, то после его обработки, работа программы продолжится с места, откуда он ушел в прерывание(в первом прерывании)?

Да , вернётся в первое прерывание. Но так же помните , что в Tiny и Mega при входе в прерывание бит I сбрасывается, в Xmega нет
demiurg_spb
1. Базово (при запрещённой вложенности прерываний), в avr8 обработка текущих запросов на прерывания происходит непрерывно друг за другом согласно их приоритетам.
2. Ну а если у вас разрешены вложенные прерывания, то возникшему прерыванию нет никакой разницы кого прерывать: фоновую программу или ISR (приоритет уже выполняемой ISR не имеет никакого значения).

Возврат из любого прерывания всегда будет осуществлён в точку его вызова плюс единичка (PC=PC+1) с гарантированным выполнением инструкции находящейся по адресу точки возврата
(грубо: что сейчас в PC то и выполняется в данный момент времени).

Таким образом, даже при "залипшем" прерывании, фоновая программа будет худо-бедно выполняться.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.