Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

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

RkJQdWJsaXNoZXIy MTExODQxMg==