Управление обработкой прерывания от SCC-каналов производится контроллером прерывания с помощью регистров запросов CIPR в СРМ и IPR в СР, регистра маски CIMR в СРМ и IMR в СР и регистра обслуживаемого прерывания CISR в СРМ и ISR в СР. В контроллерах МРС860 - контроллер прерывания входит в состав коммуникационного модуля СРМ.
Если некоторый SCC-канал желает прервать работу центрального процессора, то он должен установить i бит в регистре запросов на прерывание IPR (табл. 2.5), который соответствует прерыванию от этого канала. При желании пользователь может замаскировать прерывание от выбранного SCC-канала, сбросив в 0 i бит в регистре маски IMR. Если же центральный процессор в текущий момент времени занят обработкой прерывания от выбранного SCC-канала, то в регистре обслуживаемых прерываний ISR будет установлен в 1 i бит, соответствующий этому SCC-каналу. Во всех регистрах обслуживания прерывания i бит соответствует одному и тому же SCC-контроллеру.
Таблица 2.5. Прерывание от каналов.
Канал ввода/вывода |
Номера битов, закрепленных за каналом в регистрах контроллера прерываний. |
МРС860 |
|
SCC1 |
30 |
SCC2 |
29 |
SCC3 |
28 |
SCC4 |
27 |
Ошибки SDMA |
22 |
Таблица RISC-таймеров |
17 |
I2C |
16 |
SCP(SPI) |
5 |
SMC1 |
4 |
SMC2(PIP) |
3 |
Взаимные приоритеты запросов на прерывание между 4 SCC-каналами в СРМ программируются в регистре конфигураций контроллера прерываний CICR (рис. 4). Имеется 4 позиции приоритетов (а, Ь, с, d), самая приоритетная -позиция а.
Биты SCCaP, SCbP, SCcP и SCdP определяют, какой SCC-канал занимает выбранную позицию в таблице приоритетов (табл. 2.6).
Таблица 2.6. Приоритеты каналов.
Биты SCxP |
Канал |
00 |
SCC1 |
01 |
SCC2 |
10 |
SCC3 |
11 |
SCC4 |
Бит SPS определяет абсолютные приоритеты запросов от SCC-каналов среди запросов от других модулей контроллера (табл. 2.7). Если бит SPS=0, то все запросы от SCC-каналов сгруппированы вместе и имеют высокий приоритет относительно других запросов. Если бит SPS=1, то запросы от SCC-каналов распределены по таблице приоритетов среди других запросов.
Следует отметить, что регистр CICR производит настройку приоритетов только SCC-каналов и не влияет на приоритеты других каналов ввода/вывода.
Таблица 2.7. Уровни приоритетов модулей коммуникационного процессора в МРС860.
Канал ввода/вывода |
Вектор прерывания |
Уровень приоритета |
|
Бит SРS=0 |
Бит SРS=1 |
||
SCCa |
11110(1E) |
11110(1E) |
Высокий |
SCCb |
11101 (ID) |
10011(13) |
|
SCCc |
11100(1C) |
01101 (OD) |
|
SCCd |
11011 (1В) |
01000(08) |
|
Ошибки SDMA |
10110(16) |
10110(16) |
|
RISC-таймеров |
10001(11) |
10001(11) |
|
I2C |
10000(10) |
10000(10) |
|
SPI |
00101 (05) |
00101 (05) |
|
SMC1 |
00100(04) |
00100(04) |
|
SMC2/PIP |
00011(03) |
00011(03) |
Низкий |
Остальные биты в регистре CICR определяют работу самого контроллера прерывания. Бит IEN при значении lEN=1разрешает работу контроллера прерывания, а при значении lEN=0 - запрещает.
Биты IPL определяют уровень приоритета запросов на прерывание от контроллера прерывания к центральному процессору. Уровень 0 соответствует самому высокому приоритету, а уровень 7 — самому низкому. Обычно для нормальной работы механизма прерывания устанавливают уровень приоритетности запросов от контроллера прерывания равным IPL=4.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.