Микроконтроллеры могут реагировать на запросы прерывания от самых разных источников, находящихся вне микроконтроллера, либо от различных портов и периферийных устройств, имеющихся в составе конкретного представителя семейства. Например, микроконтроллеры PIC16F874/7 поддерживают до 13 различных прерываний от этих периферийных устройств, а также одно
С учетом случайного характера внешних событий отклик процессора на
1. Завершение исполнения текущей команды.
2. Автоматическое сохранение, по меньшей мере, состояния счетчика команд (PC) — это необходимо для возврата из обработчика прерывания. Некоторые процессоры (такие как микроконтроллеры PIC старшего семейства) могут также автоматически сохранять содержимое регистра STATUS и других внутренних регистров.
3. Переход к соответствующей процедуре обработки прерывания.
4. Выполнение требуемых действий.
5. Восстановление состояния процессора и возврат к тому месту основной программы, в котором произошло прерывание.
Короче говоря, возникновение сигнала прерывания приводит к тому, что микроконтроллер прекращает выполнение текущей задачи, сохраняет свое состояние в прерываемой
Конкретные детали отклика на запрос прерывания в некоторой степени отличаются от процессора к процессору. В микроконтроллерах семейства среднего уровня реакция на прерывание осуществляется следующим образом (см. Рис. 7.2)[99]:
Рис. 7.2.
1. При выполнении каждой команды процессор проверяет наличие запроса прерывания от разрешенного источника. Независимо от наличия такого запроса он дожидается завершения исполнения команды, т. е. выполнение команды не прерывается даже в случае команд, выполняющихся за 2 машинных цикла.
2. Если такой запрос отсутствует, микроконтроллер просто переходит к выполнению следующей команды, и описанный процесс повторяется.
3. При наличии запроса следующие три машинных цикла затрачиваются на передачу управления процедуре обработки прерывания. Из этих циклов первый является холостым[100], а во время двух оставшихся производится сброс конвейера. Эта задержка длительностью от 3 до 4 машинных циклов между подачей внешнего сигнала на вывод INT и моментом выполнения 1-й команды обработчика называется
4. Во время этой задержки микроконтроллеры PIC выполняют следующие операции:
а) Запрещается вся система прерываний, что гарантирует блокирование всех прерываний на время обработки текущего. Это осуществляется сбросом 7-го бита регистра управления прерываниями INTCON, который на Рис. 7.3 помечен как флаг общего разрешения прерываний (GIE). Указанный бит является
б) Состояние 13-битного счетчика команд заносится в стек точно так же, как и при выполнении команды call (см. Рис. 6.3 на стр. 172). Как и в случае подпрограмм, эта операция позволяет процессору после выхода из процедуры обработки прерывания вернуться к выполнению прерванной фоновой программы. Поскольку в PIC-микроконтроллерах среднего уровня реализован 8-уровневый
в) Первая команда обработчика прерывания всегда размещается по адресу h’004’ памяти программ. Так что завершающий этап рассматриваемой последовательности состоит в занесении в PC указанного адреса, называемого