Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа 5 / Лабораторная работа N 5

.doc
Скачиваний:
14
Добавлен:
01.05.2014
Размер:
105.47 Кб
Скачать

Лабораторная работа 5

Изучение системы приоритетных прерываний

в микроконтроллере P89LPC932

Цель работы: 1. Ознакомление с организацией системы

прерываний в микроконтроллере;

2. Изучение приемов программирования

и принципов построения программ об-

работки прерываний.

Общие сведения

В микроконтроллере P89LPC932 реализована четырех-уровневая приоритетная система прерываний, обслуживающая запросы на прерывание, поступающие от 15 источников, которые представлены в таблице 5.1. Каждый источник прерывания может быть подключен или отключен индивидуально путем установки соответствующего бита в регистре управления прерываниями (IEN0 и IEN1). Регистр IEN0 также содержит бит EA, который разрешает все прерывания.

Каждый источник прерываний может быть индивидуально запрограммирован на один из 4-х уровней приоритета путем установки или снятия битов в регистре приоритетов прерываний IP0, IP0H и IP1 и IP1H. Программа обработки прерывания может быть прервана прерыванием более высокого приоритета, но не прерыванием того же или более низкого уровня. Программа обработки прерывания наивысшего приоритета не может быть прервана никаким другим прерыванием. Если одновременно поступают запросы сразу от двух источников прерываний разных приоритетов, обслуживается запрос с наивысшим приоритетом.

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

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

Таблица 5.1

Прерывание

Флаги

Вектора

Разрешение

прерывания

Приоритет

Арбитражное ранжирование

Выход из реж. микропотребл.

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

IE0

0003h

EX0 (IEN0.0)

IP0H.0, IP0.0

1 (высш.)

+

Прерывание таймера 0

TF0

000Bh

EX0 (IEN0.1)

IP0H.1, IP0.1

4

-

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

IE1

0013h

EX1 (IEN0.2)

IP0H.2, IP0.2

7

+

Прерывание таймера 1

TF1

001Bh

EX1 (IEN0.3)

IP0H.3, IP0.3

10

-

Последовательн. порт Tx и Rx 1,4

TI&RI

0023h

ES/ESR

(IEN0.4)

IP0H.4, IP0.4

13

-

Последовательный порт Rx 1,4

RI

Отключение питания

BOF

002Bh

EBO (IEN0.5)

IP0H.5, IP0.5

2

+

Сторожевой таймер/часы реального времени

WDOVF/RTCF

0053h

EWDRT

(IEN0.6)

IP0H.6, IP0.6

3

+

Прерывание интерфейса I2R

SI

0033h

EI2C (IEN1.0)

IP1H.0, IP1.0

5

-

Прерывание клавиатуры KBI

KBI

003Bh

EKBI (IEN1.1)

IP1H.1, IP1.1

8

+

Компараторы 1 и 2

CMF1/CMF2

0043h

EC (IEN1.2)

IP1H.2, IP1.2

11

+

Прерывание интерфейса SPI

SPIF

003Bh

ESPI (IEN1.3)

IP1H.3, IP1.3

14

-

Блок захват/ сравнение

см. 2

005Bh

ECCU (IEN1.4)

IP1H.4, IP1.4

6

-

Зарезервировано

-

0063h

(IEN1.5)

IP1H.5, IP1.5

9

+

Последовательный порт Tx 3

TI

006Bh

EST (IEN1.6)

IP1H.6, IP1.6

12

-

Завершение записи EEPROM

EEPROM

0073h

EIEE (IEN1.7)

IP1H.7, IP1.7

15 (низш.)

-

1 – SSTAT.5=0 выбор комбинации Tx и Rx для последовательного порта (UART); SSTAT.5=1 выбор только Rx;

2 – данное прерывание имеет несколько источников;

3 – это прерывание используется для Tx последовательного порта (UART) только тогда, когда SSTAT.5=1 изапрещено в противном случае;

4 – если SSTAT.0=1, то этот флаг разрешает прерывания FE, BR, OE.

Структура приоритетов прерываний.

Ниже представлены четыре специальных регистра, связанных с четырьмя уровнями приоритетов: IP0, IP0H, IP1, IP1H. Каждое прерывание имеет пару битов в IPx и IPxH (х=0, 1) и поэтому может быть назначен один из четырех уровней, как показано в таблице 5.2.

Таблица 5.2

Биты приоритетов

Уровень приоритета прерывания

IPxH

IPx

0

0

Уровень 0 (самый низкий приоритет )

0

1

Уровень 1

1

0

Уровень 2

1

1

Уровень 3 (самый высокий приоритет)

Входы внешнего прерывания.

Микроконтроллер P89LPC935 имеет два входа для внешних прерываний. Эти входы прерываний аналогичны входам микроконтроллера 80С51. Внешние прерывания могут быть запрограммированы по уровню или фронту установкой или сбосом бита IT1 или IT0 в регистре TCON. Если ITn=0 то внешнее прерывание n управляется низким уровнем на входе INTn. Если ITn=1 то внешнее прерывание n управляется фронтом. В этом режиме, если последовательность сигналов на входе INTn имеет высокий уровень в одном цикле и низкий уровень в следующем, то в регистре TCON устанавливается флаг запроса прерывания IEn. . Так как внешние входы прерывания опрашиваются в каждом машинном цикле, то высокий или низкий уровень сигнала должен быть поддержан не менее одного машинного цикла, чтобы гарантировать правильную работу. Если внешнее прерывание запускается фронтом сигнала, то его источник должен поддерживать высокий уровень сигнала на входе не менее одного машинного цикла и затем держать низкий уровень сигнала также не менее одного машинного цикла. Это гарантирует что спад сигнала обнаружен и флаг прерывания IEn установлен. Флаг IEn сбрасывается автоматически центральным процессором когда вызывается основная программа.

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

На рис.1 представлена схема организации системы прерываний в ОМК, на которой показаны источники прерываний, сигналы разрешения прерываний, источники выхода из режима пониженного энергопотребления.

Рис. 1

Задания

1. Построить программу реализации "бегущего огня" на основе программно-аппаратной задержки .

Внешний сигнал прерывания INT0/ вызывает программу вывода в порт Р1 "решетки", например код 55H.

Изучить отличия формирования сигнала прерывания по фронту и уровню. Замаскировать прерывание INT0/ , а затем и прерывание от TF0, объяснить поведение программы (отсутствие индикации ).

2. Построить программу "бегущего огня" справа налево. По сигналу прерывания INT0/ обеспечить изменение направления перемещения огней. Запрограммировать формирование сигнала прерывания по срезу.

Убедится, что при формировании сигнала прерывания по уровню программа может работать неустойчиво.(При программировании регистров управления прерыванием обеспечить разрешение прерывания от T/C0 и INT0/).

3. Изучить режимы обработки запросов прерываний с различными приоритетами. Для этого назначить сигналу INT0/ приоритет, равный и меньше приоритета сигнала прерывания F0 от T/C0. Убедится, что программа, запускаемая от таймера/счечика 0, не прерывается.

Содержание отчета

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

2. Привести схемы алгоритмов, межпрограммные переходы при обработке прерываний.

3. Представить выводы по выполненным заданиям.

Соседние файлы в папке Лабораторная работа 5