Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Консп лек по ЭиУА.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
934.4 Кб
Скачать

11 Прерывания и сторожевой таймер

Цель лекции: познакомить студентов с выполнением прерываний. Научить применять встроенный таймер TRM1 и регистры специального назначения, связанные с его настройкой.

Краткое содержание лекции. Прерывания. Реакция процессора на за­прос прерывания. Подсчет посетителей с помощью прерываний. Сторожевой таймер и его назначение.

11.1 Прерывания

Микроконтроллеры могут реагировать на запросы на прерывания от самых раз­ных источников, находящихся вне микроконтроллера, либо от различных портов и периферийных устройств, имеющихся в составе конкретного представителя се­мейства. Например, микроконтроллеры P1C16F874/7 поддерживают до 13 раз­личных прерываний от этих периферийных устройств, а также одно внешнее пре­рывание, подаваемое через вывод INT. Вход внешне­го прерывания использует ту же ножку микроконтроллера, к которой подключена нулевая линия PORTB, т.е. вывод RB0. Программист может запретить или разрешить прерывания от этих источников, а также полностью запретить работу всей системы прерываний. Поскольку процесс реакции на пре­рывание практически не зависит от его источника, то будем вести речь именно о внешнем прерывании.

Реакция процессора на за­прос прерывания выглядит так:

1) При выполнении каждой команды процессор проверяет наличие запроса прерывания от разрешенного источника. Если такой запрос отсутствует, микроконтроллер просто переходит к выполнению следующей команды. При наличии запроса следующие три машинных цикла затрачиваются на передачу управления процедуре обработки прерывания, в которой происходит автоматическое сохранение, по меньшей мере, состояния счетчика команд. Это необходимо для возврата из обработчика прерывания. Некото­рые процессоры могут также автоматически сохранять содержимое регистра STATUS и дру­гих регистров специального назначения. Если автоматическое сохранение нужных регистров отсутствует, то программист должен сам позаботиться об этом. Поскольку в РIС-микроконтроллерах среднего уровня реализован 8-уровневый аппаратный стек, из обработчика пре­рывания можно вызывать до семи вложенных друг в друга подпрограмм.

2) Запрещается вся система прерываний, что гарантирует блокирование всех прерываний на время обработки текущего прерывания. Это осуществляется сбросом 7-го бита регистра управления прерываниями INTCON, кото­рый помечен как флаг общего разрешения прерываний (GIE). При сбросе мик­роконтроллера бит GIE всегда сбрасывается, так что по умолчанию пре­рывания запрещены.

Первая команда обработчика прерывания всегда размещается по адресу h'004' памяти программ, называ­емого вектором прерывания. Разумеется, код обработчика прерыва­ния находится в каком-либо другом месте памяти программ, поэтому первой ко­мандой будет команда Goto.

3) Выполнение требуемых действий.

4) Восстановление состояния процессора и возврат к тому месту основной программы, в котором произошло прерывание.

5) Как и все подпрограммы, процедура обработки прерывания должна завершаться командой возврата. Однако при прерывании необходимо не только извлечь из стека сохраненное значение PC, но и установить бит G1E регистра INTCON для разрешения последующих прерываний. Для этого используется команда возврата из прерывания Retfie. Таким образом, после возврата в фоновую программу можно будет обработать все отложенные или будущие прерывания.