Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
404
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

Вместе с тем можно предположить, что команда LDM, выполняемая до 20 тактов не встречается в программе, а самая «медленная» команда в программе выполняется 3 такта; команда STM сохраняет не все регистры и выполняется 4–7 тактов. Основываясь на этих предположениях, можно считать, что задержка от появления запроса IRQ до первой эффективной команды обработчика ориентировочно составляет от до тактов. Для FIQ задержка на 1 такт меньше.

Время реакции на прерывание FIQ можно существенно уменьшить, приняв следующие меры:

а) В процедуре обработки прерывания использовать только регистры R8–R12, отдельные для режима FIQ. Это даст возможность не сохранять и не восстанавливать их командами LDM, STM.

б) Не оформлять обработчик быстрого прерывания как процедуру, а размещать его команды, начиная с адреса 0x0000001С. Этот адрес последний в таблице векторов исключительных ситуаций, поэтому все последующие адреса свободны.

Компилятор RealView не содержит необходимых для этого средств, поэтому потребуется для случая а) обработчик прерывания создавать с использованием ассемблера (директива asm), а для случая б) включать код обработчика прерывания непосредственно в стартовый код Startup.s.

1.12 Внешние прерывания

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

1.12.1 Регистры управления блоком внешних прерываний

Схема управляющих регистров показана на рисунке 1.12.1.

Регистр EXTINT

Биты 0–3 (EINT0–EINT3). Флаги запроса внешних прерываний. Каждый из этих разрядов устанавливается в единицу при обнаружении запроса внешнего прерывания. Флаг сбрасывается путем записи в него единицы.

Регистр INTWAKE

Биты 0–3 (EXTWAKE0–EXTWAKE3). Единица в каждом из разрядов разрешает вывод МК из режима отключения запросом внешнего прерывания с соответствующим номером.

Биты 5 (USBWAKE). Установка бита в единицу разрешает вывод МК из состояния отключения при появлении активности на шине USB.

Биты 14 (BODWAKE). Установка бита в единицу разрешает вывод МК из состояния отключения сигналом монитора питания (при падении напряжения питания до 2,6 В).

Биты 15 (RTCWAKE). Установка бита в единицу разрешает вывод МК из состояния отключения сигналом от часов реального времени.

48

EXTINT – флаги запроса внешних прерываний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

8

7

 

 

 

 

4

 

3

 

 

 

2

 

 

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

T2

 

 

T1

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

T

 

 

 

 

 

 

T

 

 

 

 

 

 

 

 

 

 

 

IN

 

 

IN

 

IN

 

IN

 

 

 

 

 

 

 

 

 

 

 

 

E

 

 

 

 

E

 

 

 

E

 

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Флаги прерываний

INTWAKE – Разрешение выхода из отключенного режима

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

8

7

6

5

 

4

 

3

 

 

 

2

 

 

 

1

 

0

 

 

D

 

E

RTC KE

 

 

B

 

E

 

EXT

 

 

3

EXT

 

2

EXT E1

T

E0

BO

 

 

 

US

 

 

 

E

E

EX

 

K

 

 

K

 

 

AK

 

 

 

K

 

 

 

K

 

AK

 

A

 

A

 

 

A

 

 

 

 

 

A

 

 

A

 

 

W

 

 

W

 

 

W

 

 

 

W

 

 

 

 

W

 

 

 

W

 

 

W

 

 

 

 

Монитор

 

 

Часы реального времени

 

 

USB

 

Внешние прерывания

питания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EXTMODE – Режим: перепад/уровень

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

8

7

 

 

 

 

4

 

3

 

 

 

2

 

 

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

E

T

 

 

 

E

T

 

2

E

T

1

EXT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

DE

 

DE

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

E3

X

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MO

 

 

 

 

O

 

 

 

O

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

M

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Уровень/перепад

 

 

EXTPOLAR – фронт/срез, низкий/высокий уровень

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

8

7

 

 

 

 

4

 

 

3

 

 

2

 

 

1

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

T

3

 

 

T

2

 

 

T

1

 

T

 

0

 

 

 

 

 

 

 

 

 

 

EX

 

 

R

EX

 

R

 

X

R

X

 

 

R

 

 

 

 

 

 

 

 

 

 

LA

LA

E

OLA

E

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

O

 

 

 

 

O

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

P

 

 

 

P

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

Полярность/выбор фронта

Рисунок 1.12.1 – Схема регистров управления реакциями на внешние прерывания

Регистр EXTMODE

Биты 0–3 (EXTMODE0–EXTMODE3). Установка единицы в каждый разряд включает реакцию соответствующего входа прерывания на перепад сигнала. Регистр EXTPOLAR (см. ниже) определяет спадающий или нарастающий фронт. Сброс в ноль этих битов заставляет соответствующую линию реагировать на статический логический уровень. Запрос прерывания постоянно вырабатывается, пока фиксируется активный логический уровень. Низкий или высокий активный уровень определяется регистром EXTPOLAR.

Регистр EXTPOLAR

Биты 0–3 (EXTPOLAR0–EXTPOLAR3). Сброс в ноль каждого разряда делает активным, спадающий фронт сигнала или на низкий логический уровень в зависимости от значения EXTMODE. Установка единицы заставляет линию прерывания реагировать на нарастающий перепад или высокий логический уровень.

1.12.2 Порядок настройки блока внешних прерываний

1.Перевести в соответствующий режим портовые линии, которые используются для запроса внешних прерываний. Настройка производится через регистры PINSEL0–PINSEL1 (раздел 1.9.3).

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

3.Выбрать активный уровень или фронт сигнала внешнего прерывания через регистр EXTPOLAR. По умолчанию выбран активный логический ноль или спадающий фронт.

49