Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы Мазур.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆
  1. Прерывания и их обработка

Прерывание – это асинхронное событие, заключающееся в нарушении последовательного хода выполнения программы МК и требующее обработки, после чего выполнение программы может быть продолжено в обычном порядке.

Система прерываний обеспечивает микроконтроллеру возможность реагировать на всевозможные события внутри и вне его.

Источник прерывания – событие (внешнее устройство или узел периферии МК), которое вызывает прерывание. МК ATmega16 имеет 20 источников прерываний.

Каждому прерыванию соответствует так называемый вектор прерывания.

Характеристиками любого вектора являются его начало и направление. Программный вектор прерывания – не исключение. Он характеризуется началом (начальным адресом подпрограммы обработчика прерывания) и «направлением» (ходом) развития обработчика прерываний.

Описание векторов прерываний приведено в таблице векторов прерываний (табл. 2.3). В таблице указаны также уровни приоритета для каждого прерывания. Прерывания с младшими адресами имеют более высокий уровень приоритета (RESET имеет наивысший уровень приоритета, следующим является INT0 - запрос внешнего прерывания 0 и т.д. по табл. 2.3).

Таблица векторов прерываний

Таблица 2.3

№ п/п

Адрес вектора

Описание

1

$000

Вектор сброса МК (Reset)

2

$002

Запрос внешнего прерывания 0 (External Interrupt Request 0)

3

$004

Запрос внешнего прерывания 1 (External Interrupt Request 1)

4

$006

Совпадение таймера/счетчика 2 (Timer/Counter2 Compare Match)

5

$008

Переполнение таймера/счетчика 2 (Timer/Counter2 Overflow)

6

$00A

Захват таймера/счетчика 1 (Timer/Counter1 Capture Event)

7

$00C

Совпадение A таймера/счетчика1(Timer/Counter1 Compare Match A)

8

$00E

Совпадение B таймера/счетчика1(Timer/Counter1 Compare Match B)

9

$010

Переполнение таймера/счетчика 1 (Timer/Counter1 Overflow)

10

$012

Совпадение таймера/счетчика 0 (Timer/Counter0 Compare Match)

11

$014

Завершение пересылки по ППИ (Serial Transfer Complete)

12

$016

Завершение приема данных УАПП (USART, Rx Complete)

13

$018

Регистр данных УАПП пуст (USART Data Register Empty)

14

$01A

Завершение передачи данных УАПП (USART, Tx Complete)

15

$01C

Завершение аналого-цифрового преобразования (ADC Conversion Complete)

16

$01E

Готовность ЭСППЗУ (EEPROM Ready)

17

$020

Срабатывание аналогового компаратора (Analog Comparator)

18

$022

Прием данных по двухпроводному интерфейсу I2C (Two-wire Serial Interface)

19

$024

Запрос внешнего прерывания 2 (External Interrupt Request 2)

20

$026

Совпадение таймера/счетчика 0 (Timer/Counter0 Compare Match)

21

$028

Готовность загрузочного сектора (Store Program Memory Ready)

Начальными адресами вектора сброса и прерываний служат младшие адреса пространства памяти программ начиная с адреса

$000.

Каждому прерыванию присвоен свой бит разрешения в соответствующем управляющем регистре пространства ввода/вывода, который должен быть установлен совместно с битом I регистра статуса.

При возникновении прерывания бит I разрешения глобального прерывания очищается и все прочие прерывания запрещаются. Для того чтобы разрешить вложенные прерывания (т.е. прерывания, которые могут возникнуть в процессе обработки текущего), пользовательское ПО может установить бит I внутри подпрограммы обработки прерывания. Выход из подпрограммы обработки прерывания происходит по команде RETI, которая устанавливает бит I в состояние лог. 1.

Когда управление передается на начало вектора прерывания, соответствующий флаг, вызвавший прерывание, аппаратно очищается. Некоторые флаги прерываний можно очистить, записав в соответствующий(е) бит(ы) регистра управления лог. 1.

Более подробно биты разрешения конкретных прерываний будут рассматриваться в составе регистров управления и масок соответствующих узлов МК.