Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 324

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 318 319 320 321 322 323 < 324 > 325 326 327 328 329 330 .. 528 >> Следующая

Таблица 5.62
Основные команды управления работой QMS-каналов ввода/вывода
Команда и ее код QMC OPCODE. Описание команды. Действия контроллера при
получении команды
STOP TRANSMIT 001 Команда обычно передается при выключении передатчика и
приводит к остановке передачи на выбранном канале и сбросу бита POL в
регистре CHAMR. При получении этой команды во время передачи кадра
контроллер выдает в канал ABORT символ (0х7Е) и далее продолжает
передавать или символы флага или символ(-ы), как это определено в бите
IDLM. Указатель текущего буфера TBPTR не изменяется. Если команда
получена в интервале между кадрами, то контроллер начинает передавать или
символы флага или IDLE-символы. Для возобновления передачи необходимо
установить бит POL := 1. После получения команды для деактивации канала
необходимо сбросить бит V = 0 в TSA-таблице и бит ENT := 0 в регистре
режима.
STOP RECEIVE ООО Команда обычно передается при выключении приемника и
приводит к остановке приема на выбранном канале. Указатель текущего
буфера RTBPTR не изменяется. Для возобновления приема необходимо
проинициализировать переменные в ячейках ZDSTATE и RSTATE,. установив бит
POL := 1. После получения команды для деактивации канала необходимо
сбросить бит V = 0 в TSA-таблице и бит ENT := 0 в регистре режима.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
RST QMC OPCODE 1 1 1 0 0 CHNUM - FLG
Рис. 5.99. Формат регистра команд RISC-контроллера CR для QMC
Механизм обработки прерываний. При обработке прерываний используются
регистр событий SCC-канала (рис. 5.100), который работает с QMC-
протоколом, и циклическая таблица прерываний, к которой обращаются
логические каналы при своей работе. Напоминаем, что сброс битов в
регистре событий производится записью в соответствующий бит кода "1". При
желании пользователь может замаскировать прерывание от отдельных событий,
установив в "1" соответствующий бит в регистре маски SCCM.
Формат ячеек в таблице прерываний зависит от типа протокола, с которым
работает канал, и был описан выше (см. рис. 5.94, 5.97). Переменная
INTBASE указывает на расположение первой ячейки таблицы прерываний во
внешней памяти контроллера. Переменная INTPTR указывает на текущую пустую
ячейку в таблице, доступную для RISC-контроллера. Бит W = 1 (Wrap) в
составе каждой ячейки отмечает последнюю ячейку таблицы прерываний.
Таблица прерываний обрабатывается циклически - после обработки последней
ячейки RISC-контроллер перейдет к обработке первой ячейки таблицы и
произойдет переназначение указателя INTPTR := INTBASE.
576
ПОДДЕРЖКА ПРОТОКОЛОВ В КОММУНИКАЦИОННЫХ КОНТРОЛЛЕРАХ
Рис. 5.100. Регистр событий SCCE и регистра маски SCCM-контроллера при
работе с QMC-протоколом
Когда один из QMC-каналов генерирует запрос на прерывание, то RISC-
контроллер проверяет, маскировано это прерывание в регистре INTMSK или
нет. Если прерывание не маскировано, то контроллер заполняет следующую
свободную ячейку таблицы. Эта ячейка (рис. 5.101) содержит номер
логического канала в поле "номер канала" и тип события, вызвавшего
прерывание. Затем устанавливается бит V = 1 (Valid), который указывает,
что данная ячейка используется и содержит флаги прерываний. Также
увеличивается счетчик в ячейке INTPTR. После записи прерывания в таблицу
QMC-контроллер устанавливает бит соответствующего прерывания в регистре
событий SCCE SCC-контроллера. Если это прерывание RXF (прерывание,
регистрирующееся после приема каждого кадра), то уменьшается счетчик
GRFCNT, который контролирует, после приема скольких кадров будет
выработано прерывание. Если этот счетчик не равен 0, то обработка
прерывания прекращается. Если счетчик GRFCNT равен 0 или зарегистрировано
другое прерывание, то в регистре событий используется дополнительный бит
GINT, установка которого в "1" регистрирует, что в очереди на прерывание
заполнена новая ячейка. После сброса бита GINT центральный процессор
начинает обрабатывать очередь на прерывание. После чтения содержимого
очередной ячейки таблицы процессор сбрасывает бит V := 0 и переходит к
обработке следующей ячейки таблицы, и так продолжается, пока в таблице
есть ячейки с установленным битом V = 1.
Если RISC-контроллер делает попытку записать данные о запросе на
прерывание в ячейку, которая еще не обработана, т. е. у этой ячейки
установлен бит V = 1, то регистрируется ошибка переполнения таблицы
прерываний и в регистре событий устанавливается бит IQOV := 1. При
возникновении этой ошибки данная ячейка таблицы немедленно программно
сбрасывается и последнее прерывание теряется.
Бит NID (not idle) в ячейке таблицы устанавливается в "1", когда приемник
получает данные, формат которых отличается от формата IDLE-символа. При
работе с Transparent-протоколом NID-прерывание не регистрируется.
Бит IDL используется при работе с HDLC-протоколом для регистрации приема
IDLE-сим-вопа (OxFFFE). При работе с протоколом Transparent прерывание
IDL не регистрируется.
Бит MRF устанавливается в "1" при работе с HDLC-протоколом, когда
Предыдущая << 1 .. 318 319 320 321 322 323 < 324 > 325 326 327 328 329 330 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed