Сколько я ни читаю даташит, но до конца так и не понял: что происходит, если во время отработки прерывания (до сброса флага прерывания, например TMR0IF - на F877) возникают условия для нового прерывания (другой природы, например CMIF). В "Справочнике по среднему семейству..." с микрочип.ру, на странице 106 (по нумерации acrobat) есть упоминания об "отложенных" и "ожидающих" прерываниях: "Возврат из обработки прерываний выполняется по команде RETFIE, пои этом происходит установка бита GIE в '1', что позволяет обработать любое ОТЛОЖЕННОЕ ПРЕРЫВАНИЕ". "Примечание 2. При выполнении команды, сбрасывающей бит GIE в '0', любое прерывание, ОЖИДАЮЩЕЕ выполнения в следующем машинном цикле, игнорируется. ... Игнорированные прерывания ставятся в ОЖИДАНИЕ выполнения, пока бит GIE не будет установлен в '1'". Однако на этом описание данного вопроса и заканчивается. В официальных даташитах на английском - ещё меньше. Я уже понял, что процедура прерывания не может быть прервана другим прерыванием. Но существует ли очередь отложенных прерываний - хз. В принципе незнание данной тонкости не мешает мне писать на "бытовом" уровне, и оно работает, но хотелось бы...
|