Регистр маски - это обычный регистр ввода-вывода, который служит для управления отдельными источниками прерываний. Каждому разряду в таком регистре соответствует один источник прерывания. Если бит сброшен в ноль, то прерывание этого вида запрещено. Если бит установлен в единицу, то соответствующее прерывание разрешено. Это справедливо для микроконтроллеров AVR. Для других устройств это может быть по-другому.
В микроконтроллерах AVR применяются два регистра-маски:
- GIMSK. Этот регистр управляет всеми видами прерываний, кроме прерываний от таймеров. В некоторых микроконтроллерах этот регистр называется GISR.
- TIMSK. Этот регистр управляет прерываниями от таймеров.
Количество прерываний зависит от конкретного микроконтроллера (МК). Например, для самого простого ATtiny13A состав прерываний будет таким:
- GIMSK:
- Бит 5 - PCIE - изменение состояния вывода (ножки) МК
- Бит 6 - INT0 - внешнее прерывание
- TIMSK0:
- Бит 1 - TOIE0 - переполнение таймера-счётчика
- Бит 2 - OCIE0A - таймер-счётчик А
- Бит 3 - OCIE0B - таймер-счётчик В
Остальные биты не задействованы для этой модели.
Кроме регистров маски для управления прерываниями также используются регистры флагов прерываний. Каждый бит такого регистра - это флаг одного из видов прерываний. При возникновении прерывания этот флаг устанавливается в единицу. По состоянию этого флага программа может понять, поступил ли запрос на прерывание.
В некоторых режимах после установки флага прерывания процедура обработки прерывания вызывается автоматически. Сразу после вызова обработчика прерывания соответствующий флаг сбрасывается.
Микроконтроллеры AVR имеют два регистра флагов:
- GIFR - обслуживает те же прерывания, что и регистр маски GIMSK.
- TIFR - обслуживает те же прерывания, что и регистр маски TIMSK.
Биты прерываний в регистре флагов также соответствуют битам в регистрах маски. Например, если в регистре GIMSK бит 6 установлен в 1, то внешнее прерывание разрешено. И если в регистре флагов GIFR бит 6 установится в единицу, то это означает, что произошло внешнее прерывание INT0.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить…