←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
L2 ¦ L1 ¦ L0 ¦ L----+-T--+-T--+-T--+----+----+-T--+-T--+-T---
¦ ¦ ¦ ¦ ¦ L--> Эти 3 бита опреде-
¦ ¦ ¦ ¦ L-------> ляют номер уровня
¦ ¦ ¦ L------------> прервания, если он
¦ ¦ ¦ требуется в команде.
¦ ¦ ¦
¦ ¦ ¦
¦ ¦ L---------------------------> 1-команда завер-
v v шения обработки
-----T----¬ аппаратного
¦ 0 ¦ 0 ¦ Используется вместе с EOI=1 прерывания
+----+----+
¦ 0 ¦ 1 ¦ Специфицированный EOI (сбрасывает бит, определя+----+----+ емый полями L0 - L2 в ISR)
¦ 1 ¦ 0 ¦ Циклический сдвиг приоритетов влево на одну
+----+----+ позицию
¦ 1 ¦ 1 ¦ Назначение низшего приоритета уровню, определяеL----+----- мому полями L0 - L2
Как уже говорилось, процедура обработки аппаратного прерывания должна перед своим завершением очистить свой бит в ISR выводом команды завершения обработки прерывания (End Of Interrupt, EOI). Существует два варианта команды EOI: обычный и специфицированный EOI. Обычный EOI очищает бит в ISR, соответствующий прерыванию с максимальным приоритетом. Специфицированный EOI (R=0, SL=1, EOI=1, L0 - L2 равно номеру уровня прерывания) очищает в ISR бит, соответствующий прерыванию с номером, указанным в L0 - L2 независимо от его приоритета. Команды с битом R=1 позволяют изменить приоритеты уровней. Циклический сдвиг приоритетов сдвигает приоритеты влево на единицу, при этом, если после обычного распределения
приоритетов, издать команду циклического сдвига, уровень 0 получит низший приоритет, уровень 1 - наивысший, уровень 2 следующий за ним и т.д. Команда явного назначения низшего приоритета одному из уровней изменяет приоритеты остальных уровней циклически. Таким образом, если Вы зададите низший приоритет уровню 5, то уровень 6 получит наивысший.
Третье слово рабочих приказов OCW3 позволяет установить и отменить режим специальной маски, перевести контроллер в режим опроса и прочитать содержимое IRR и ISR. Назначение битов OCW3 приведено на рисунке
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 0 ¦ 0 ¦ESMM¦ SMM¦ 0 ¦ 1 ¦ P ¦ RR ¦ RIS¦ L----+----+-T--+-T--+----+----+-T--+--T-+-T---
----------- ¦ ¦ ¦ ¦
¦ ------------ L-T---+---+--> 1-режим опроса
v v v v v
----T---¬ ----T---T---¬
¦ 1 ¦ 0 ¦-Отменить режим ¦ 0 ¦ 1 ¦ 0 ¦ Чтение IRR
+---+---+ специальной маски +---+---+---+
¦ 1 ¦ 1 ¦-Установить режим ¦ 0 ¦ 1 ¦ 1 ¦ Чтение ISR
L---+---- специальной маски L---+---+----
Единичное значение бита Р (бит опроса, Polling Bit) переводит контроллер в режим опроса. Если после этого считать данные из порта с четным адресом, в регистр AL загрузится байт следующего содержания:
7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----¬
¦ I ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ L2 ¦ L1 ¦ L0 ¦ L----+----+----+----+----+----+----+-----
Если I = 1, значит имеются запросы на прерывания и тогда L0 - L2 - это номер уровня с наивысшим приоритетом, по которому имеется запрос на прерывание.
Если P=0, Вы можете считать информацию из ISR или IRR. Для этого необходимо издать команду чтения ISR или IRR (см. рисунок выше) и затем считать значение из порта с нечетным адресом.
Единичное значение бита ESMM позволяет в зависимости от значения бита SMM установить или отменить режим специальной маски.
4. Таймер и генерация звука
4.1. Программируемый таймер 8253
Для задания временных интервалов и формирования сигналов с различными временными параметрами в IBM PC/XT применяется программируемый таймер 8253 (отечественный аналог КР580ВН53), в AT - 8254. С точки зрения программиста они идентичны. В состав таймера входят: буфер шины данных, схема управления вводом-выводом и три независимых канала, каждый из которых содержит регистр режима, схему управления каналом, буфер и 16-разрядный счетчик.
Программирование канала осуществляется путем вывода управляющих слов в регистр режима каналов и начального значения в его счетчики. Каждый канал имеет управляющий вход GATE и выход OUT и может работать в одном из следующих шести режимов.
Режим 0 (прерывание терминального счета). После записи управляющего слова в регистр режима канала на выходе ОUT устанавливается напряжение низкого уровня; загрузка счетчика не изменяет это состояние. Затем начинается декремент счетчика (последовательное вычитание из него единицы). В момент, когда счетчик обнулится, на выходе OUT установливается напряжение высокого уровня и сохраняется до загрузки счетчика новым значением. Счет возможен только при наличие сигнала высокого уровня на входе GATE. Низкий уровень этого сигнала или ниспадающий фронт запрещают счет.
Перезагрузка счетчика во время приводит к следующему: загрузка младшего байта останавливает текущий счет, загрузка старшего байта запускает новый цикл счета. Минимально допустимое значение счетчика равно 2.
Режим 1 (ждущий мультивибратор). На выходе OUT формируется отрицательный импульс длительностью t=n*T, где n - число, загруженное в счетчик, T - период тактовых импульсов. Низкий уровень на выходе OUT устанавливается со следующего такта после подачи на вход GATE сигнала высокого уровня.
Загрузка в счетчик нового числа не влияет на длительность текущего импульса, а учитывается при следующем запуске. Перезапуск счетчика производится нарастающим фронтом входа GATE (без перезагрузки счетчика). Минимальное допустимое n=1.
Режим 2 (генератор частоты). Каждый раз после достижения счетчиком нуля на выходе OUT появляется отрицательный импульс с длительностью один такт. Перезагрузка счетчика сказывается только после перезапуска счетчика. При исчезновении сигнала
высокого уровня на входе GATE прекращается счет и на выход OUT подается напряжение высокого уровня. Перезапуск счетчика происходит при наличии на входе GATE сигнала высокого уровня.
Режим 3 (генератор меандра). Аналогичен режиму 2, но положительный уровень выходного сигнала занимает первый полупериод, а отрицательный - второй полупериод. Точнее, если n (начальное значение счетчика) четно, то длительность положительного и отрицательного полупериодов равна n*T/2; если же n нечетно - то (n+1)*T/2 и (n-1)*Т/2 соотвественно. Низкй уровень сигнала на входе GATE запрещает счет, на выходе OUT устанавливается сигнал высокого уровня. Высокий уровень GATE разрешает счет, а нарастание его запускает счетчик начального состояния. Отметим, что n=3 в этом режиме недопустимо.
Режим 4 (счетчик событий). По окончании отсчета числа, загруженного в счетчик, на выходе OUT формируется отрицательный импульс длительностью один такт. Запись в счетчик во время счета младшего байта не влияет на текущий счет, а запись старшего байта перезапускает счетчик. Низкий уровень входа GATE запрещает счет,
←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
|
|