- •4. Архитектура мк aTmega16
- •Пространство ввода/вывода avr-мк
- •Регистр статуса
- •Указатель стека
- •Регистр управления/статуса приемопередатчика scon
- •Прерывания и их обработка
- •10. Внешние прерывания
- •12.Таймеры/счетчики мк aTmega16
- •Регистр управления таймером/счетчиком 0
- •Таймер/счетчик 0
- •Регистр совпадения таймера/счетчика 0
- •Регистр масок прерываний от таймеров/ счетчиков
- •Регистр флагов прерываний от т аймеров/счетчиков
- •Общий регистр управления прерываниями
- •Регистр флагов внешних прерыван ий
- •14.Таймер/счетчик 2
- •Регистр статуса асинхронного режима
- •Дополнение: Таймер-счетчик тс/2 с расширенными возможностями Таймер счетчик т/с2 микроконтроллера 8052
- •Регистр управление таймера/счетчика 2 t2com
- •Режимы работы таймера/счетчика 2
- •Регистр режима таймера/счетчика 2 т2моd
- •Дополнительный регистр приоритетов прерываний iрн
- •16.Особенности подключения датчиков с механическими контактами к мк
- •2. Классификация.
- •18. Аналоговый компаратор avr-мк
- •20. Двоично-десятичные коды
- •1. Форматы представления десятичных чисел
- •2. Преобразование целых 16-битных чисел в двоично-десятичные числа
- •3. Преобразование двоичной дроби в двоично-десятичную дробь
Прерывания и их обработка
Прерывание – это асинхронное событие, заключающееся в нарушении последовательного хода выполнения программы МК и требующее обработки, после чего выполнение программы может быть продолжено в обычном порядке.
Система прерываний обеспечивает микроконтроллеру возможность реагировать на всевозможные события внутри и вне его.
Источник прерывания – событие (внешнее устройство или узел периферии МК), которое вызывает прерывание. МК 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.
Более подробно биты разрешения конкретных прерываний будут рассматриваться в составе регистров управления и масок соответствующих узлов МК.
