Подготовка параллельного порта |
Предыдущая Содержание Следующая |
Хотя параллельный интерфейс прост, он может вызвать прерывание. Эта возможность используется принтером для уведомления драйвера lp, что он готов принять следующий символ в буфере.
Как и большинство устройств, параллельный порт на самом деле не генерирует прерывания, если ему поручили это делать; стандарт параллельного порта говорит, что установка бита 4 порта 2 (0x37a, 0x27a, или иного) разрешает уведомление прерываниями. для установки этого бита short выполняет простой вызов outb в момент инициализации модуля.
После разрешения прерываний параллельный интерфейс генерирует прерывание, когда электрический сигнала на выводе 10 (так называемый бит ACK, acknowledge, подтверждение) изменяется от низкого до высокого. Простейшим способом заставить интерфейс генерировать прерывания (за исключением подключения принтера к порту) является соединение контактов 9 и 10 на разъёме параллельного порта. Короткий кусок провода, вставленный в соответствующие отверстия в разъёме параллельного порта с обратной стороны системного блока, создаёт такое соединение. Назначение выводов параллельного порта показано на Рисунке 9-1.
Контакт 9 является самым старшим значащим битом байта данных параллельного порта. Если вы запишете бинарные данные в /dev/short0, вы сгенерируете несколько прерываний. Однако, запись текста ASCII в порт совсем не будет генерировать прерывания, поскольку набор символов ASCII не имеет записей с установленным старшим битом.
Если вы предпочитаете избегать соединять контакты вместе, но у вас под рукой есть принтер, вы можете запустить пример обработчика прерывания используя реальный принтер, как показано ниже. Однако, следует отметить, что представляемые нами исследовательские функции зависят от наличия перемычки между выводами 9 и 10, и она необходима для экспериментирования с помощью нашего кода.
|
Предыдущая Содержание Следующая |