Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 3. А теперь ближе к практике: знакомтесь — микроконтроллеры AVR 95 3.7. Система прерываний Назначение системы прерываний Важным элементом микроконтроллера является система прерываний. Система прерываний присутствует в любом современном микроконтрол лере. Она также есть во всех микроконтроллерах AVR. Как уже говори лось, система прерываний микроконтроллера обслуживает несколько источников прерываний. Количество источников прерываний для раз ных микроконтроллеров различно. Самое минимальное количество источников прерывания имеет микроконтроллер ATtinyl 1. Два внутренних источника прерываний (от таймера/счетчика и от встроенного компаратора), одно внешнее преры вание по сигналу на входе INTO и одно прерывание по изменению сигна лов на любом из входов, которое тоже считается внутренним. К источникам прерываний фирма Atmel относит также начальный сброс микроконтроллера. Вектор начального сброса обычно также вклю чают в таблицу векторов прерываний. Так что получается, что у микро контроллера ATtinyl 1 имеется четыре внутренних источника прерыва ний и один внешний. Другие микросхемы серии AVR имеют более слож ные системы прерываний. Самая развитая на сегодняшний день система прерываний — у микро контроллера ATmegal281. Этот микроконтроллер способен в общей сложности обслуживать 48 внутренних и 17 внешних источников пре рываний. Вообще, источниками прерываний служат все встроенные таймеры, компараторы, АЦП, любой последовательный канал, система управления EEPROM. Конкретное количество прерываний можно узнать из табл. 3.1 (графа «Кол-во прерываний Внут / Внешн»). Управление системой прерываний Управление системой прерываний осуществляется при помощи специальных регистров ввода-вывода. Определяющим регистром здесь является регистр SREG (регистр состояния системы). Этот регистр пред назначен для хранения флагов состояния. Каждый бит регистра — это один из флагов. Седьмой бит регистра состояния называется «флаг I». Это флаг глобального разрешения прерываний. Когда значение этого флага равно нулю, все прерывания в микроконтроллере запрещены. Для разрешения прерываний нужно установить этот флаг в единицу. Однако чаще всего нам не нужны все виды прерываний одновременно. Для того, чтобы запретить одни прерывания и разрешить другие, приме няются так называемые маскирующие регистры (регистры маски).
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==