Russian HamRadio - Расширитель порта принтера.
Сайт радиолюбителей Республики Коми.

: главная: странички:

Расширитель порта принтера.

При конструировании и налаживании различных устройств часто можно ускорить процесс, если использовать дорогостоящее оборудование — запоминающий осциллограф, генератор сигналов сложной формы, анализатор спектра и т. д. Все эти приборы устроены примерно одинаково — содержат устройство ввода/вывода сигнала, блок математической обработки и память. В зависимости от типа прибора изменяются входные цепи и законы математических преобразований, а суть в целом остается одной и той же.

Поэтому возникает вопрос, а нельзя ли соединить их вместе? Ведь в этом случае для преобразования одного прибора в другой достаточно лишь изменить устройства ввода/вывода и перепрограммировать математический блок. Наиболее простой способ получить такое устройство — использовать в качестве математического и запоминающего блоков персональный компьютер, причем желательно любой, независимо от его быстродействия.

Основная задача разработки такого прибора — создание блока сопряжения устройств ввода/вывода с компьютером. Именно такое устройство описывается в публикуемой статье. Для подключения к персональному компьютеру (ПК) внешних устройств можно использовать свободные слоты системной платы, последовательный или параллельный порты, разъем USB-шины. Подключение к слотам системной платы представляется довольно сложным по причине изготовления печатной платы устройства со строго выдержанными размерами разъема.

Это удобно и просто:

  • Во-первых, это (разъем находится снаружи корпуса);
  • Во-вторых, этот порт имеется во всех ПК;
  • В-третьих, его интерфейс позволяет одновременно и независимо использовать различные части на ввод и вывод информации (три регистра);
  • В-четвертых, он имеет 17 бит для ввода и вывода информации: регистр данных — 8 бит ввода/вывода, регистр управления - рискованно экспериментировать с системной платой (особенно на новом компьютере).

Подключение к USB-шине возможно только у новых машин. Последовательный порт удобен, но его интерфейс предоставляет не более восьми бит и, кроме того, требуется преобразование логических уровней при подключении устройств на микросхемах ТТЛ.

  Рис.1.

Наиболее подходящим в данном случае можно считать параллельный порт. 4 бита ввода/вывода, регистр статуса — 5 бит для ввода информации в ПК. Рассмотрим коротко принципы работы параллельного порта.

Он может работать в нескольких режимах:

  • Compatibility Mode — стандартный однонаправленный Centronics;
  • ЕРР (Enhanced Parallel Port) Mode — двунаправленный обмен данными, при котором управляющие сигналы интерфейса генерируются аппаратно во время обращения к порту (чтение или запись в порт). Эффективен при работе с устройствами внешней памяти, адаптерами локальных сетей;
  • ЕСР (Extended Capability Port) Mode — двунаправленный обмен данными с возможностью аппаратного сжатия данных по методу RLE (Run Length Encoding) и использования FIFO-буферов и DMA.

В современных ПК с LPT-портом на системной плате режим его работы — SPP, ЕРР, ЕСР или ЕСР+ЕРР — задается в BIOS Setup.

В этих режимах возможно обращение к трем регистрам:

  • данных (Data Register — DR): адрес в пространстве ввода/вывода — BASE, регистр работает в режимах ввода и вывода. Порт — восьмибитный;
  • управления (Control Register -CR): адрес — BASE+2, работает в режимах ввода и вывода. Регистр четырехбитный (биты 0—3), выходы с открытым коллектором. Биты 0, 1, 3 инвертируются, бит 4 разрешает прерывание IRQ7 (IRQ5) по отрицательному перепаду сигнала на выводе 10 разъема интерфейса. Бит 5 определяет направление передачи данных через регистр данных. Биты 4 и 5 не “выведены” на разъем порта принтера, но программно они доступны;
  • статуса (Status Register — SR): адрес — BASE+1, работает только на ввод данных в ПК. Пятибитный порт (биты 3-7), бит 7 — инвертирован.

  Рис.2.

Стандартными являются базовые адреса (BASE) 3BCH (956), 378Н (888) и 278Н (632), в скобках указаны десятичные значения адресов портов. Доступ к регистрам осуществляется командами in и out.

Число бит, с помощью которых можно управлять внешними устройствами, ограничено 17, поэтому необходим блок расширения параллельного порта, и уже к нему должны подключаться все устройства ввода/вывода. Число каналов для подключения внешних устройств определяется решаемыми задачами, при этом блок должен быть легко преобразуем для подключения большего числа устройств.

Принципиальная схема возможного варианта такого блока изображена на рис. 1. Его основная часть содержит регистр адреса DD1 и дешифратор адреса DD2. Подключаемые к ней блоки являются каналами ввода или вывода. Число восьмибитных каналов ограничено 16. Введение второго дешифратора, подключенного к свободным выводам 16—19 регистра DD1, позволяет получить 32 канала (в принципе, при использовании одного регистра DD1 число каналов можно увеличить до 256). Режим работы каналов (на ввод или вывод) и их число выбирает пользователь. Обращение к каждому каналу происходит индивидуально, результат запоминается в регистре ввода или вывода. Установлен такой дешифратор, что может быть выбран один канал или ни одного.

 

Рис. 3.

При подключении расширителя к компьютеру переключатель SB1 должен находиться в положении, показанном на схеме (на входе дешифратора адреса DD2 — уровень лог. 1). При этом все каналы неактивны и регистры ввода информации в ПК (3DD1, 4DD1) находятся в третьем состоянии.

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

Рассмотрим взаимодействие программы с расширителем (для корректной работы необходимо установить двунаправленный режим обмена данными порта, т. е. в BIOS должны быть выбраны режимы ЕРР, ЕСР или ЕРР+ЕСР).

При запуске программы на входе EI (вывод 11) регистра адреса DD1 устанавливается уровень лог. О, и он переходит в режим хранения, поэтому любые изменения регистра данных DR ПК не приведут к изменению состояния DD1.

На входах же С1 и С2 дешифратора адреса DD2 устанавливается уровень лог. 1, т. е. он переводится в режим, когда не выбран ни один из каналов. Все регистры ввода/вывода находятся либо в третьем состоянии (регистры ввода 3DD1, 4DD1), либо в режиме хранения (регистры вывода 1DD1, 2DD1). Регистр данных DR переведен в режим ввода в ПК.

Регистры вывода информации 1DD1, 2DD1 управляются через инверторы на транзисторах 1VT1, 2VT1, регистры ввода 3DD1, 4DD1 — непосредственно дешифратором адреса, а режим записи в них включается узлами на транзисторах 3VT1, 3VT2 и 4VT1, 4VT2, реализующими логическую функцию 2И-НЕ. Обновление содержимого регистров происходит только тогда, когда будет инициировано обращение к регистру и включен режим записи.

Все описываемые далее действия предполагают, что система находится именно в этом, начальном состоянии, а переключатель SB1 установлен в нижнее (по схеме) положение (дешифратором адреса DD2 управляет ПК).

Процедуры и функции для работы с расширителем порта принтера (на языке Pascal для Delphi) [1]. Рассмотрим режимы доступа и управления устройством (в скобках указано название процедуры на ассемблере, выполняющей это действие).

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

  • перевести регистр данных DR в режим вывода информации из ПК (процедура DR_To_Buff);
  • вывести в регистр данных DR адрес канала, к которому происходит обращение;
  • разрешить запись в регистр адреса DD1 (изменяя бит 0 регистра управления CR; процедура RG_ON);
  • запретить запись в регистр адреса (бит 0 регистра управления CR), при этом адрес канала запомнен в регистре DD1 (процедура RGJDFF);
  • перевести регистр данных DR в режим ввода в ПК (изменяя бит 5 регистра управления CR; процедура Buff_To_DR);
  • разрешить работу дешифратора адреса DD2 (изменяя бит 3 регистра управления CR), при этом регистр ввода 3DD1 выйдет из третьего состояния и выдаст на шину данных содержащуюся в нем информацию (процедура DC_ON);
  • произвести чтение из регистра данных DR;
  • запретить работу дешифратора адреса (изменяя бит 3 регистра управления CR; процедура DCJDFF).

Для записи информации в регистр вывода (процедура SaveDataToReg):

  • перевести регистр данных DR в режим вывода (процедура DR_To_Buff);
  • вывести в регистр данных DR адрес регистра вывода;
  • разрешить запись в регистр адреса DD1 (процедура RGJDN);
  • запретить запись в регистр адреса DD1 (адрес сохраняется в регистре; процедура RGJDFF);
  • — разрешить работу дешифратора адреса DD2 (регистр вывода активизируется; процедура DC_ON);
  • вывести в регистр данных число, записываемое в регистры вывода 1DD1.2DD1;
  • запретить работу дешифратора DD2 (данные запомнены в регистре вывода; процедура DC_OFF);
  • перевести регистр данных DR в режим ввода в ПК (процедура Buff_To_DR).

Для записи данных от внешних устройств в регистры расширителя (процедура RestoreData):

  • перевести регистр данных DR в режим вывода (процедура DR_To_Buff);
  • вывести в регистр данных DR адрес регистра для обновления;
  • разрешить запись в регистр адреса DD1 (процедура RG_ON);
  • запретить запись в DD1 (процедура RGJDFF);
  • установить режим записи в регистры ввода информации (бит 1 регистра управления CR; процедура Set_Regime_Write);
  • разрешить работу дешифратора адреса DD2 (данные записываются в регистры ввода 3DD1, 4DD1; процедура DC_ON);
  • запретить работу дешифратора адреса DD2 (процедура DC_OFF);
  • отменить режим записи в регистры ввода (процедура Set_Regime_NoWrite);
  • перевести регистр данных в режим ввода информации в ПК (процедура Buff_To_DR).

 

Рис.4

Каждое указанное действие описывается отдельной процедурой на ассемблере, но для ускорения работы можно объединять несколько управляющих команд в одну.

Подключив к регистрам вывода описываемого устройства цифро-аналоговый преобразователь (ЦАП), можно превратить его в генератор сигналов произвольной формы, максимальная частота которых будет определяться тактовой частотой процессора.

На ПК с процессором 80286 такой генератор в состоянии работать на частоте до 60 кГц. При работе одновременно с несколькими каналами максимальное значение частоты, к сожалению, будет уменьшаться. Нижний предел диапазона не ограничен.

Запоминающий осциллограф примерно с такой же полосой пропускания можно получить, подключив к регистрам ввода аналого-цифровой преобразователь (АЦП). Используя последний, можно также создать анализатор спектра (выполняя преобразование Фурье программно).

Кроме этого, ЦАП и АЦП позволяют записывать и воспроизводить звуковой или какой-либо другой сигнал, преобразуя его из одного диапазона в другой. Непосредственное подключение к регистрам ввода точек отлаживаемого цифрового устройства дает возможность анализировать уровни сигналов в различные моменты (логический анализатор). Используя набор электронных ключей, легко построить анализатор микросхем, позволяющий тестировать элементы любой сложности.

Таким образом, даже самый старый IBM-совместимый ПК можно превратить в целую исследовательскую лабораторию. Чертежи печатных плат расширителя показаны на рис. 2 - 4. В предлагаемом варианте устройства ввода/вывода подсоединяют одно за другим шлейфом. Их число можно менять простым добавлением или изъятием блоков. Без каких-либо изменений в схеме и чертежах плат вместо К555ИР23 можно применить регистр К555ИР22.

Д. Негодин

Литература:

1. Скачать процедуры и функции расширителя порта принтера - LPTrashiritelX.

Материал подготовил А. Кищин (UA9XJK).

Rambler's Top100
Rambler's Top100
Copyright © Russian HamRadio

Hosted by uCoz