Алгоритм обработки прерываний

Система прерываний

Источники сброса

Причинами (источниками) сброса могут являться различные воздействия: включение питания и кратковременные его изменения, сигналы формируемые аппаратно вне и внутри микроконтроллера, сторожевой таймер, а также инструкции программы. В частности, инструкция безусловного перехода на адрес $0 всегда приводит к сбросу устройства.

Сторожевой таймер вызывает сброс микроконтроллера, если его содержимое не будет обновлено в течение определенного промежутка времени (обычно от десятков миллисекунд до нескольких секунд). Если изменение содержимо­го программного счетчика не соответствует заданной программе, то команда модификации сторожевого таймера не будет выполнена. В этом случае сторо­жевой таймер производит сброс микроконтроллера, устанавливая его в ис­ходное состояние.

Микроконтроллеры некоторых типов имеют схему обнаружения падения частоты генератора тактовых импульсов (OFD). При снижении частоты ниже определенного уровня OFD вырабатывает сигнал сброса и переводит микроконтроллер в состояние сброса. Это предотвращает появление опасных комбинаций сигналов на выходах микроконтроллера, которые могут возникнуть при остановке генератора тактовых импульсов в произвольный момент време­ни в процессе выполнения программы

В компьютерной системе прерывание - это запуск специальной подпрограммы (называемой «обработчиком прерывания» или «программой обслуживания прерывания»), который вызывается сигналом аппаратуры. На время выполнения этой подпрограммы реализация текущей программы останавливается. Термин «запрос на прерывание» (interrupt request) используется потому, что иногда программа отказывается подтвердить пре­рывание и выполнить обработчик прерывания немедленно.

Сигнал запроса на прерывание вырабатывается периферийным устройством при его готовности к обмену информацией. Сигнал может появиться в произвольный момент времени.

Процессорное ядро может реагировать на запросы прерываний по-разному. В каждой архитектуре реализуется своя оригинальная система обслуживания прерываний. Однако общий алгоритм обработки запросов всегда содержит одни и те же действия ядра:

§ при поступлении запроса на прерывание завершается выполнение текущей

§ инструкции программы;

§ записывается в стек содержимое программного счетчика и текущее

§ состояние некоторых наиболее важных регистров общего назначения;

§ идентифицируется прерывающее устройство;

§ осуществляется переход к выполнению подпрограммы обслуживания прерывания для идентифицированного устройства;

§ по окончании подпрограммы восстанавливает состояние прерванной

§ программы за счет извлечения из стека содержимого регистров общего

§ назначения и программного счетчика;

§ возобновляется выполнение прерванной программы.

В различных системах обработки прерывания отдельные перечисленные действия реализуются аппаратно или программно.

Пользователю системы всегда предоставляется возможность отключить (замаскировать) отдельные источники прерываний. Для этого в схемах предусматриваются специальные программируемые регистры маски, где каждому источнику прерываний ставится в соответствие один бит.

При большом количестве источников прерываний порядок их обслуживания определяется приоритетом источника. Приоритет устанавливается в зависимости от важности и ответственности решаемой этим устройством задачи. Полагается, что запрос с большим приоритетом способен прервать подпрограммы обслуживания прерываний с меньшим приоритетом.

Наиболее простым является фиксированное распределение приоритетов. При этом каждому из источников запросов присваивается постоянный приоритет, соответствующий его порядковому номеру в схеме.

Циклическое распределение приоритетов (очередь) используется в тех случаях, когда ни одному из источников запросов исходно нельзя отдать явного предпочтения. В этом случае приоритеты входов изменяются в процессе работы контроллера после обработки любого из запросов. Вход последнего обслуженного запроса на прерывание получает низший приоритет, а приоритеты остальных входов при этом повышаются.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: