КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Прерывания и их обработка
Прерывание – это асинхронное событие, заключающееся в нарушении последовательного хода выполнения программы МК и требующее обработки, после чего выполнение программы может быть продолжено в обычном порядке. Система прерываний обеспечивает микроконтроллеру возможность реагировать на всевозможные события внутри и вне его.
Источник прерывания – событие (внешнее устройство или узел периферии МК), которое вызывает прерывание. МК ATmega16 имеет 20 источников прерываний. Каждому прерыванию соответствует так называемый вектор прерывания. Характеристиками любого вектора являются его начало и направление. Программный вектор прерывания – не исключение. Он характеризуется началом (начальным адресом подпрограммы обработчика прерывания) и «направлением» (ходом) развития обработчика прерываний. Описание векторов прерываний приведено в таблице векторов прерываний (табл. 2.3). В таблице указаны также уровни приоритета для каждого прерывания. Прерывания с младшими адресами имеют более высокий уровень приоритета (RESET имеет наивысший уровень приоритета, следующим является INT0 - запрос внешнего прерывания 0 и т.д. по табл. 2.3).
Таблица векторов прерываний Таблица 2.3
Начальными адресами вектора сброса и прерываний служат младшие адреса пространства памяти программ начиная с адреса $000. Каждому прерыванию присвоен свой бит разрешения в соответствующем управляющем регистре пространства ввода/вывода, который должен быть установлен совместно с битом I регистра статуса. При возникновении прерывания бит I разрешения глобального прерывания очищается и все прочие прерывания запрещаются. Для того чтобы разрешить вложенные прерывания (т.е. прерывания, которые могут возникнуть в процессе обработки текущего), пользовательское ПО может установить бит I внутри подпрограммы обработки прерывания. Выход из подпрограммы обработки прерывания происходит по команде RETI, которая устанавливает бит I в состояние лог. 1. Когда управление передается на начало вектора прерывания, соответствующий флаг, вызвавший прерывание, аппаратно очищается. Некоторые флаги прерываний можно очистить, записав в соответствующий(е) бит(ы) регистра управления лог. 1. Более подробно биты разрешения конкретных прерываний будут рассматриваться в составе регистров управления и масок соответствующих узлов МК.
|