Вы находитесь на странице: 1из 9

Лабораторная 4.

Встроенный
контроллер прерываний
Схема микроконтроллера ATmega32
Внешние прерывания
В качестве входов внешних прерываний используются входы портов с альтернативной функцией:
PD2, PD3 - для прерываний INT0, INT1 в микроконтроллере ATmega32.

Запросы внешних прерываний INT0, INT1 могут быть представлены:


• низким уровнем сигнала прерывания (L),
• изменением (логическим) сигнала,
• переходом от высокого уровня сигнала к низкому (HL – по отрицательному фронту),
• переходом от низкого уровня сигнала к высокому (LH - по положительному фронту).

В зависимости от типа запроса в регистре управления микроконтроллера MCUCR необходимо


установить биты ISCx0 и ISCx1 согласно таблице для каждого из прерываний INTx (х = 0,1).
Регистры настройки внешних прерываний
Регистр управления МК – MCUCR
(MCU Control Register)
Бит 7 6 5 4 3 2 1 0
SM2 SE SM1 M0 ISC11 ISC10 ISC01 ISC00 MCUCR
Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп.
Нач. значение 0 0 0 0 0 0 0 0
Биты 3, 2 и 1, 0 – определяют способ генерации прерывания для INT1 и INT0
ISC01 ISC00 Генерация прерывания
0 0 Низким уровнем на входе INT0
0 1 Логическим изменением на входе INT0
1 0 Падающим фронтом на входе INT0
1 1 Нарастающим фронтом на входе INT0

ISC11 ISC10 Описание


0 0 Низким уровнем на входе INT1
0 1 Логическим изменением на входе INT1
1 0 Падающим фронтом на входе INT1
1 1 Нарастающим фронтом на входе INT1
Регистры настройки внешних прерываний
Основной регистр управления прерываниями – GICR
(General Interrupt Control Register)
Бит 7 6 5 4 3 2 1 0
INT0 INT1 INT2 - - - IVSEL IVCE GICR
Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп.
Нач. значение 0 0 0 0 0 0 0 0

INT0: Разрешение прерывания INT0 (External Interrupt Request 0 Enable)


INT1: Разрешение прерывания INT1 (External Interrupt Request 1 Enable)
Основной регистр флагов прерываний – GIFR
(General Interrupt Flag Register)
Бит 7 6 5 4 3 2 1 0
INTF1 INTF0 INTF2 - - - - - GIFR
Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп.
Нач. значение 0 0 0 0 0 0 0 0

INTF0: Флаг о срабатывании внешнего прерывания INT0 (External Interrupt Flag 0)


INTF1: Флаг о срабатывании внешнего прерывания INT1 (External Interrupt Flag 1)
Вектор прерываний. Адрес обработки прерывания
Пример обработки внешнего прерывания
Пример обработки внешних
прерываний 0 и 1. Обработка
внешнего прерывания 0
настроено по нарастающему
фронту, а внешнего прерывания
1 – по падающему. При
поступлении прерывания
программа отображает на
индикаторы либо 00001111 –
если прерывание 0, либо
11110000 если прерывание 1.
Пример обработки внешнего прерывания
Пример обработки
внешних прерываний 0 и 1.
Обработка внешнего
прерывания 0 настроено
по изменению сигнала, а
внешнее прерывание 1 –
запрещено. При
поступлении прерывания
программа инвертирует
значение 10011001 и
отображает его на
индикаторы.
Задание на самостоятельное выполнение
Цель работы: изучить операции по обработки внешних прерывания, регистры настройки и управления внешних
прерываний.
Необходимо разработать программу, в которой реализовать обработку внешних прерываний.
Запрограммировать обработку внешнего прерывания на конкретное действие в соответствии с вариантом
задания.
Вар. Действие Фронт генерации Фронт генерации
прерывания INT0 прерывания INT1
1 По прерыванию INT0 вывод количества прерываний INT1 Нарастающий Падающий

2 Изменение скорости моргания индикаторов: INT1 – быстрое моргание, INT0 – Нарастающий Нарастающий
медленное
3 По прерыванию INT1 запуск программного счетчика, по прерыванию INT0 вывод Падающий Падающий
количества пройденных итераций
4 По прерыванию INT0 вывод количества прерываний INT1 Падающий Нарастающий

5 По прерыванию INT1 вывод количества прерываний INT0 Падающий Падающий

6 Запуск моргания индикаторов по прерыванию INT0, остановка по прерыванию INT1 Падающий Нарастающий

7 Изменение скорости моргания индикаторов: INT0 – быстрое моргание, INT1 – Нарастающий Падающий
медленное
8 По прерыванию INT1 вывод количества прерываний INT0 Нарастающий Нарастающий

9 Запуск моргания индикаторов по прерыванию INT1, остановка по прерыванию INT0 Нарастающий Падающий

10 По прерыванию INT0 запуск программного счетчика, по прерыванию INT1 вывод Падающий Нарастающий
количества пройденных итераций

Вам также может понравиться