←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
1. В то же время бит 4 в OCW2 и OCW3 равен 0, а в ICW1 равен 1. Таким образом по значению, выводимому в порт с четным адресом, однозначно определяется, в какой регистр (ICW1, OCW2 или OCW3) заносятся данные.
Порт с нечетным адресом используется для вывода ICW2, ICW3, ICW4 и OCW1. Неоднозначности интерпретации данных в этом случае так же не возникает, т. к. слова инициализации ICW2 - ICW4 должны непосредственно следовать за ICW1, выведенным в порт с четным адресом и выводить в промежутке между ними OCW1 не следует, онo не будет опознанo контроллером.
Выводом в порт с четным адресом управляющего слова инициализации ICW1 начинается инициализация ПКП. В процессе инициализации контроллер последовательно принимает управляющие слова ICW1 - ICW4. При наличии в системе одного контроллера ICW3 не выводится. Наличие ICW4 определяется содержанием ICW1. При наличии каскада из нескольких ПКП каждый из них инициализируется отдельно.
Формат ICW1 следующий:
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 0 ¦ -- ¦ -- ¦ -- ¦ 1 ¦LTIM¦ ADI¦SNGL¦ IC4¦ L----+----+----+----+----+-T--+-T--+-T--+-T---
¦ ¦ ¦ ¦
¦ ¦ ¦ L-> 1=будет вывод ICW4
¦ ¦ ¦ 0=не будет
¦ ¦ L------> 1=один контроллер
¦ ¦ 0=каскад
¦ L-----------> игнорируется L----------------> 0=запуск запросов
фронтом
1=запуск запросов уровнем
Бит 4, равный 1, определяет, что выводится ICW1, а не OCW2 или OCW3.
Бит 3 (LTIM), равный 0, задает запуск запросов фронтом, при этом действует описанная выше схема: бит в IRR сбрасывается при установке соответствующего бита в ISR.
Бит 2 (ADI) используется только в ПЭВМ на базе микропроцессоров Intel 8080/8085.
Бит 1 (SNGL) указывает на наличие в системе одного контроллера (если равен 1) или каскада из нескольких контроллеров (если равен 0). Если этот бит равен 1, то ICW3 не выводится в процессе инициализации и следом за ICW2 сразу должно следовать ICW4.
Бит 0 (IC4) определяет, будет ли выводиться ICW4. Если ICW4 не выводится (бит 0 = 0), то оно автоматически заполняется нулями. В описываемых ПЭВМ наличие ICW4 обязательно, т. к. тип микропроцессора 8086/8088 задается в нем значением 1 в одном из битов.
Управляющее слово ICW2 задает номер вектора прерывания для прерываний уровня 0 (например 8 для IBM PC, у которых по уровню 0 происходят прерывания от таймера). Так как вектора аппаратных прерываний располагаются подряд друг за другом, вывод в ICW2 значения 8 не только задает восьмой вектор для таймера, но и девятый для прерываний уровня 1, десятый (0Ah) для прерываний уровня 2 и т. д.
Управляющее слово ICW3 выводится только при наличии каскада и имеет разный формат для ведущего и ведомых контроллеров. ICW3 ведущего указывает, к каким входам IR0 - IR7 подключены ведомые контроллеры, при этом соответствующие биты устанавливаются в 1. Остальные биты при этом равны 0. ICW3 следующего вида:
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ L----+----+----+----+----+----+----+----+-----
задает, что в каскаде имеется 2 ведомых контроллера, подключенных к входам IR1 и IR4.
ICW3 ведомого (подчиненного, slave) ПКП в трех младших битах задает номер уровня, на котором работает ведомый
контроллер. Для ведомого контроллера, работающего на уровне 1 ICW3 будет выглядеть следующим образом:
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ L----+----+----+----+----+----+----+----+-----
Если ведомый контроллер работает на уровне 4, то его ICW3 будет таким:
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ L----+----+----+----+----+----+----+----+-----
Последнее слово инициализации (ICW4) имеет следующий формат:
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦SFNM¦ BUF¦ M/S¦AEOI¦ mPM¦ L----+----+----+----+-T--+-T--+-T--+-T--+-T---
¦ ¦ ¦ ¦ ¦
¦ ¦ ¦ ¦ L---> 1=8088/8086
¦ ¦ ¦ ¦ 0=8080/8085
¦ ¦ ¦ L--------> 1=AEOI
¦ ¦ ¦ 0=EOI
¦ ¦ L-------------> 1=ведущий
¦ ¦ 0=ведомый
¦ ¦ (только при BUF=1)
¦ L------------------> 1=режим
¦ буферизации
L-----------------------> 1=специальный вложенный режим
Бит 0 (mPM) определяет, с каким микропроцессором работает ПКП (0 - 8080/8085, 1 - 8086/8088).
Бит 1 (AEOI), равный 1, задает режим автоматического завершения обработки прерывания, описанный выше. Если этот бит равен 0, действует обычное соглашение: процедура обработки аппаратного прерывания должна сама сбрасывать свой бит в ISR.
Бит 2 (M/S) игнорируется, если бит 3 (BUF) = 0. При наличии одного контроллера и BUF = 1 устанавливается в 1. При наличии каскада должен быть равен 1 только для ведущего контроллера.
Бит 4 (SFNM) устанавливает специальный вложенный режим, применяемый при каскадировании для определения приоритетов запросов от разных контроллеров (Special Fully Nested Mode).
После инициализации ПКП готов к работе в заданном режиме. Для изменения режимов работы, задаваемых при инициализации требуется переинициализировать его заново.
В процессе работы с ПКП Вы можете без переинициализации:
- маскировать и размаскировать аппаратные прерывания;
- изменять приоритеты уровней;
- издавать команду завершения обработки аппаратного прерывания;
- устанавливать/сбрасывать режим специальной маски;
- переводить контроллер в режим опроса и считывать состояние регистров ISR и IRR; для этого Вам потребуется вывести в порты ПКП одно из трех слов рабочих приказов OCW1 - OCW3.
Формат первого слова рабочих приказов OCW1:
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 1 ¦ M7 ¦ M6 ¦ M5 ¦ M4 ¦ M3 ¦ M2 ¦ M1 ¦ M0 ¦ L----+----+----+----+----+----+----+----+-----
Единичное значение одного из битов М0 - М7 означает, что прерывания соответствующего уровня (IR0 - IR7) маскируются и не будут обрабатываться контроллером.
Второе слово рабочих приказов (OCW2) предназначено для вывода команды завершения обработки аппаратного прерывания (EOI), циклического сдвига и явного изменения приоритетов уровней. Назначение битов OCW2 следующее:
A0 7 6 5 4 3 2 1 0
-----T----T----T----T----T----T----T----T----¬
¦ 0 ¦ R ¦ SL ¦ EOI¦ 0 ¦ 0 ¦ L2
←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
|
|