Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety.doc
Скачиваний:
17
Добавлен:
08.03.2015
Размер:
7.46 Mб
Скачать

21. Система прерываний.

Прерывание – прекращение нормального хода выполнения программы для выполнения подпрограммы обслуживания прерывания. Событие, которым обусловлено это прерывание может быть как внешним, так и внутренним. Событие может возникнуть в любой момент времени. Различают внешнее и внутреннее прерывание. Событие внутреннего прерывания: завершение цикла преобразования АЦП. Событие внешнего прерывания: на определенный вывод микроконтроллера поступает сигнал, говорящий о том, что совершилось некоторое событие и нужно прервать выполнение команды.

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

Последней программой подпрограммы должна быть команда RET I по этой команде осуществляется возврат из подпрограммы в программу, для этого из стековой области памяти считывается ранее сохраненный адрес и осуществляется переход к основной программе и команде по этому адресу.

В рассматриваемом микроконтроллере существуют 3 внешних прерывания и 17 внутренних.

Для внешних существуют три входа: INT 0, INT 1, INT 2.

Событие прерывания

Адрес первой команды подпрограммы

1

Сигнал на входе INT0

0001h

2

Сигнал на входе INT1

0002h

3

Событие совпадения таймера счетчика T2

0003h

4

Переполнение таймера счетчика T2

0004h

5

Захват T1

0005h

6

Совпадение A T1

0006h

7

Совпадение B T1

0007h

8

Переполнение T1

0008h

9

Переполнение T0

0009h

10

Передача по SPI завершена

000Ah

11

Прием USART завершен

000Bh

12

Регистр данных USART пуст

000Ch

13

Передача USART завершена

000Dh

14

Преобразование АЦП завершено

000Eh

15

Готовность ПЗУ к памяти данных

000Fh

16

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

0010h

17

Модуль TWI

0011h

18

Сигнал на входе

0012h

19

Совпадение TO

0013h

20

Готовность SPI

0014h

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

В ячейке 0000 – первая команда основной программы (безусловный переход).

Для организации работы системы прерываний предусмотрен ряд регистров, входящих в состав регистров специального назначения. В этих регистрах имеются разряды или флажки, определяющие режим работы системы прерываний.

SREG

I – флаг разрешения прерываний. Если 0 – система работы прерываний запрещена, если 1 – система прерываний работает.

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

В системе прерываний может быть разделение:

  1. Первая группа характеризуется тем, что при возникновении события прерывания и переходе к подпрограмме обслуживающий прерывания флаг сбрасывается.

  2. Вторая группа прерываний характеризуется тем, что переход к подпрограмме, обслуживающей прерывания может возникнуть только во время события прерывания. Если на момент возникновения события и до его окончания прерывания будут запрещены, то после того как прерывания будут завершены оно не будет обслужено.

Для организации внешних прерываний существуют 3 вывода: INT0, INT1, INT2.

Для управления системой прерываний существует ряд регистров:

GICP – регистр разрешения внешних прерываний. Существует 3 разряда, отвечающих за разрешение внешних прерываний. «1» - разрешает, «0» - запрещает.

GIFR – регистр флагов прерываний. Имеется 3 флага, которые при возникновении события прерывания устанавливаются в «1», а при отсутствии в «0».

Для определения режимов работы по входам INT0, INT1 существует регистр MCUCR, четыре разряда которого определяют режим работы входов (INT0, INT1) по два разряда на каждый вход.

00 – прерывание по низкому уровню сигнала на входе.

01 – не используется/зарезервировано.

10 – устанавливается флаг прерывания по совпадающему фронту сигнала на входе.

11 – установка флага по нарастающему сигналу на входе.

MCUCSR – для задания режима работы по входу INT2. Один разряд.

0 – спадающий фронт.

1

Нарастающий

фронт 0  1

Спадающий

фронт 1  0

1

1

0

0

– нарастающий фронт.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]