Программирование параллельного интерфейса centronics

Интерфейс Centronics

Исторически параллельный интерфейс был введен в персональный компьютер для подключения принтера (аббревиатура LPTрасшифровывается как Line Printer, т.е. построчный принтер). Однако впоследствии он стал использоваться для подключения других периферийных устройств (ПУ) – сканеров, дисководов типа Zip и ряда других.

Стандарт на параллельный интерфейс IEEE 1284, принятый в 1994 году, регламентирует различные режимы обмена данными, физический и электрический интерфейсы. Следующие режимы обмена данными получили наибольшее распространение:

— Compatibility Mode – однонаправленный вывод по протоколу Centronics, который полностью соответствует стандартному порту SPP (Standard Parallel Port).

— ЕРР (Enhanced Parallel Port) Mode – двунаправленный обмен данными, при котором управляющие сигналы интерфейса генерируются аппаратно во время цикла обращения к порту (чтения или записи в порт). Режим эффективен при работе с устройствами внешней памяти, адаптерами локальных сетей.

— ЕСР (Extended Capability Port) Mode – двунаправленный обмен с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding), использования FIFO-буферов и режима прямого доступа в память DMA. Управляющие сигналы интерфейса генерируются аппаратно.

Базовая разновидность порта SPP позволяет передавать данные только в одном направлении – от ПК, однако позднее был разработан ряд стандартов двунаправленной передачи данных EPP и ECP. К главным недостаткам LPT порта следует отнести невысокую скорость (100÷150 Кб/сек) и необходимость привлечения ресурсов микропроцессора при передаче данных.

Читайте также:  Сколько учить язык программирования python

Стандартный LPT порт имеет 8-битную шину данных, 5-битную шину сигналов состояния и 4-х битную шину управляющих сигналов. Порт асимметричен – 12 линий работают на вывод и только 5 на ввод. Понятие интерфейса Centronics относится к набору сигналов, протоколу обмена и разъему, устанавливаемому в принтерах. Назначение сигналов и контакты разъема ПУ, на который они выведены, приведены в табл. 96.

Табл. 96. Сигналы интерфейса Centronics.

Сигнал Т Конт. Напр. Назначение
Strobe IN Строб данных. Передаваемые данные фиксируются по низкому уровню сигнала.
D0. D7 2-9 IN Линии данных (D0 — младший бит).
Ack OUT Acknowledge – сигнал подтверждения приема байта (запрос на прием следующего). Может использоваться для формирования прерывания.
Busy OUT ПУ занято. Прием данных возможен только при низком уровне сигнала.
PE OUT «1» сигнализирует о конце бумаги.
Select OUT «1» сигнализирует о включении принтера.
Auto LF IN Автоматический перевод строки Auto Feed Line. Если «0», то ПУ при получении символа CR (перевод каретки) выполняет функцию LF – перевод строки.
Error OUT Ошибка ПУ (нет бумаги, нет тонера, внутренняя ошибка).
Init IN Инициализация (переход к началу строки, сброс всех параметров на значения по умолчанию).
Slct In IN Выбор принтера. При «1» ПУ не воспринимает сигналы интерфейса.
GND Общий провод.

Столбец «T» определяет активный уровень сигнала: «1» – высокий активный уровень, «0» – низкий, столбец «Напр.» – направление передачи по отношению к принтеру: IN – вход, OUT – выход. Сигнал Auto LF практически не применяется, но его неправильное значение может приводить к ошибкам печати.

Обмен данными по интерфейсу Centronics можно описать с помощью временной диаграммы (рис. 46). Для передачи байта данных в ПУ вначале необходимо убедится, что уровень сигнала на линии BUSY равен 0, а уровень сигнала на линии ACK – единице. После этого следует установить код выводимого символа на линиях DATA.

Рис. 46. Временные диаграммы интерфейса Centronics.

Затем не ранее, чем через 0,5 мкс линию STROBE необходимо перевести в состояние логического нуля. При этом выводимый символ запишется во внутренний буфер ПУ. Сигнал STROBE необходимо удерживать в течение как минимум 0,5 мкс. После истечения интервала времени линию STROBE нужно вновь перевести в состояние логической единицы. После этого выходная линия принтера BUSY устанавливается в единицу, сигнализируя о том, что принтер занят обработкой полученного символа и временно не может принимать другие символы.

Когда ПУ полностью обработает выведенный байт данных, линия ACK перейдет в состояние 0. Приблизительно через 5 мкс. после этого линия BUSY также перейдет в состояние 0. Еще через 5 мкс линия ACK примет состояние 1. Теперь ПУ готово принять следующий байт данных.

Если в течение длительного времени (несколько секунд) источник не получает подтверждения ACK, то он принимает решение об ошибке «тайм-аут» устройства. Если после приема байта приемник не готов принимать данные, то он не снимает сигнал Busy. При программной реализации обмена желательно ограничить время ожидания снятия Busy (обычно 30÷45 сек), иначе возможно «зависание» программы.

Источник

Параллельные интерфейсы: centronics

Ознакомление с устройством параллельного интерфейса CENTRONICS, изучение физики его работы, разработка принципиальной схемы выполняющей функции интерфейса CENTRONICS и моделирование ее работы с помощью программы Electronics Workbench фирмы Interactive Image Technologies Ltd.

2 Краткое описание исследуемого интерфейса.

Понятие Centronics относится как к набору сигналов и протоколу взаимодействия, так и к 36-контактному разъему на принтерах. Традиционный порт SPP (Standard Parallel Port) является однонаправленным портом, через который программно реализуется протокол обмена Centronics. Порт вырабатывает аппаратное прерывание по импульсу на входе Ack#. Сигналы порта выводятся на разъем DB-25S (розетка), установленный непосредственно на плате адаптера (или системной плате) или соединяемый с ней плоским шлейфом.

Адаптер параллельного интерфейса представляет собой набор регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются относительно базового адреса порта, стандартными значениями которого являются 3BCh, 378h и 278h. Порт может использовать линию запроса аппаратного прерывания, обычно IRQ7 или IRQ5.Порт имеет внешнюю 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов,

BIOS поддерживает до четырех LPT-портов (LPT1-LPT4) своим сервисом — прерыванием INT 17h, обеспечивающим через них связь с принтером по интерфейсу Centronics. Этим сервисом

BIOS осуществляет вывод символа (по опросу готовности, не используя аппаратных прерываний), инициализацию интерфейса и принтера, а также опрос состояния принтера.

Стандартный порт имеет три 8-битных регистра, расположенных по соседним адресам в пространстве ввода/вывода, начиная с базового адреса порта (BASE).

Data Register (DR) — регистр данных. Данные, записанные в этот порт, выводятся на выходные линии интерфейса.

Status Register (SR) — регистр состояния; представляет собой 5-битный порт ввода сигналов интерфейса, отображающих состояние принтера (Busy, Ack, Paper End, Select, Error).

Control Register (CR) — регистр управления. Предназначен для программного управления принтером путем активизации линий Select, Init, AutoLF, Strobe# , задания режима прерывания и направления передачи данных

Процедура вывода байта по интерфейсу Centronics включает следующие шаги (в скобках приведено требуемое количество шинных операций процессора):

— Вывод байта в регистр данных (1 цикл IOWR#).

— Ввод из регистра состояния и проверка готовности устройства (бит SR. 7 — сигнал Busy). Этот шаг зацикливается до получения готовности или до срабатывания программного тайм-аута (минимум 1 цикл IORD#).

— По получении готовности выводом в регистр управления устанавливается строб данных, а следующим выводом строб снимается (2 цикла IOWR#).

Стандартный порт асимметричен — при наличии 12 линий, нормально работающих на вывод, на ввод работают только 5 линий состояния. Если необходима симметричная двунаправленная связь, на всех стандартных портах работоспособен режим полубайтного обмена — Nibble Mode. В этом режиме одновременно передаются 4 бита данных, пятая линия используется для квитирования. Таким образом, каждый байт передается за два цикла, а каждый цикл требует по крайней мере 5 операций ввода/вывода.

Источник

19. Структурная схема параллельного программируемого интерфейса. Основные режимы работы. Программирование вывода по протоколу Centronix.

1) Определяем CW=10001хх1=88h, РА – вывод в режиме 0, КС4 – на ввод.

2) Для управления работой КС0 используем 2 тип управляющего слова.

\ _/ \устанавливаемое значение

Программная процедура:

20. Организация ввода-вывода данных по запросам прерываний от схемы программируемого параллельного интерфейса.

Вывод данных по прерыванию с использование режима 1 (асинхронный вывод)

1. Инициализация (в основной программе).

2. Определение указателей для массива символов, для длины сообщения и стека.

3. Настройка ППИ на режим работы 1 канала вывода CW=1010хххх.

4. Разрешение прерывания от ППИ из КА CW=00001101.

5. Программное включение STROB.

6. Разрешить работу системных прерываний в МП.

7. Выполнение основной программы.

2. Запрет внешних прерываний.

4. Чтение символа сообщения из памяти.

7. Увеличение указателя массива, уменьшение счетчика длины сообщения.

6. Проверка условия: конец сообщения. Если да, то шаг 7, если нет то шаг 8.

7. Запрет прерывания от ППИ.

8. Разрешение внешних прерываний в МП.

Асинхронный обмен данными через ППИ

Временная диаграмма для вывода

Временная диаграмма для ввода

36. Параллельный обмен данными с внешними устройствами в микроконтроллерных системах. Обмен с квитированием.

Обмен данными (2-10 упакованными числами) между МК51 и ВУ.

Передача байта

;инициализация указателей обмена и портов

clr P2.0; снятие сигнала ЗПр

Ввод потетрадно через Р13-0

clr P2.0; данные получены

ad – адрес ячейки внешнего сегмента данных.

Инициатор – МК || ВУ. 1 – Каждый раз запрос к к ВУ. Обмен после приема от ВУ сигнала подтверждения. МК: обмен, снимает запрос, ждет снятия сигнала ВУ, продолжает работу.

2 — МК ожидает сигнала запроса от ВУ, выставляет сигнал готовности к обмену, производит обмен, снимает сигнал готовности, ждет снятия запроса от ВУ, продолжает работу. Обмен управляющими сигналами между МК и ВУ осуществляется при каждой передаче.

Передача с квитированием — генерация приемником дополнительного сигнала, подтверждающего прием, –квитанции для передатчика (отсюда и слово — квитирование). Передатчик может выдать на шину следующий код, лишь получив «квитанцию» в приеме предыдущего.

Источник

Оцените статью