СЕКРЕТЫ ИГРОВОГО ПОРТА IBM PC (Часть 2)


С. РЮМИК, г. Чернигов, Украина

Однако у такого джойстика есть существенный недостаток: из-за большого (0,1...2 кОм) электрического сопротивления контактов кнопок фиксация компьютером их нажатия может быть ненадежной. Кроме того, общие цепи кнопок SB1-SB4 и SB5-SB8 должны быть раздельными, из-за чего приходится перерезать печатные проводники на плате геймпэда.

Доработка по схеме, показанной на рис. 4, сложнее, зато благодаря введению инверторов DD1.3-DD1.6 свободна от указанных недостатков. Оставшиеся два инвертора микросхемы DD1 образуют генератор импульсов с частотой повторения 5...10 Гц. Кнопками SB9, SB 10 импульсы подают в цепи кнопок SB5 и SB6, имитируя многократное нажатие последних (автоповтор). Резистор R1 защищает выход элемента DD1.1 от замыкания с цепью +5 В, возникающего при одновременном нажатии кнопок SB5 и SB9 или SB6 и SB 10. Переменные резисторы R9, R10 служат органами пропорционального управления по "осям" 3 и 4. С их помощью регулируют, например, тягу двигателей в авиасимуляторах.

gam2port1.gif

Игровому адаптеру в IBM PC первоначально был выделен интервал адресов ввода/вывода 200H-20FH, но, начиная с IBM PC/AT, его "урезали" до 200Н-207Н. Практически используется всего один восьмиразрядный порт с адресом 2011-1, хотя встречаются устройства и с другими адресами из указанного интервала. Узнать, имеется ли в ПК игровой порт и каков его адрес, поможет программа, приведенная в таблице. Она выводит на экран монитора все адреса, по которым "откликается" игровой адаптер. Подключать джойстик во время проверки не обязательно.

Сообщение "Игровой порт по адресу 201 Н" соответствует стандартному игровому адаптеру, строка "Игровой порт не найден" означает его отсутствие или нестандартную архитектуру. Появление на экране нескольких адресов, различающихся цифрами в старших разрядах (201 Н, 601Н, OD01H, ...), говорит о том, что адаптер имеет неполную дешифрацию адреса. Вообще говоря, это не является недостатком, если только какое-либо другое периферийное устройство не использует порт, адрес которого совпадает с одним из "ложных" адресов игрового. Избавиться от конфликта обычно не составляет труда, так как адреса выше 3FFH применяются только в устройствах сравнительно недавней разработки и, как правило, предусмотрена возможность их изменения пользователем.

ю мм с-port т*"1

20 RKM QBkSIC for IBM PC 30 C-0: CLS : PRINT-Игровой порт ";

40 FOR 1-0 TO 63:КЖ J-0 TO 7

50 ArtH200+J+I*"a400

60 IP 1КР(А)<-"ИГГ GOTO 90

70 PRIMT-по адресу ";Н"Х$ (А) ;"Н"

80 С"1

90 НКХТ:НЮСТ

100 IF C-0 THXN PRINT-H" найдм."

вивалентны рассматриваемому и отличаются только тем, что почти все элементы "упрятаны" в БИС.

На микросхемах DD1, DD3, DD4 и двух элементах DD2 выполнен 16-разрядный дешифратор адреса порта. Соединяя перемычкой (джампером) соответствующие штыри колодки Х1, можно выбрать любой в диапазоне 200Н- 207Н. В положении перемычки "OFF" адаптер выключен. Когда адрес на шине АО-А15 совпадает с заданным и низкий уровень сигнала AEN свидетельствует о том, что центральный процессор обращается к внешнему устройству, сигнал, поступающий на входы (выводы 10 и 12) двух нижних (по схеме) элементов микросхемы DD2 от дешифратора, разрешает прохождение на их выходы (выводы 8 и 11 соответственно) сигнала записи в порт (IOW) или чтения из него (IOR). Сигнал чтения открывает шинный формирователь D05, и на шину данных выдаются сигналы с выходов таймеров DA2-DA5 (им соответствуют разряды 00-D3) и с кнопок джойстика (разряды D4-D7). Сигнал записи никаких данных в игровой порт не записывает, а лишь служит пусковым импульсом для таймеров DA2-DA5.

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

Таймеры DA2-DA5 питаются напряжением +5 В от стабилизатора DA1, оно же поступает на соответствующие гнезда розетки XS1. Конденсаторы С1-С5, С14 и дроссель L1 - фильтрующие. Такое схемное решение защищает таймеры от случайного запуска помехами, проникающими по цепи питания, а главное, благодаря имеющейся в интегральном стабилизаторе токовой защите, предохраняет от перегрузки блок питания ПК. В большинстве адаптеров промышленного изготовления напряжение +5 В поступает на разъем игрового порта непосредственно с шины питания ПК, и его случайное замыкание в джойстике на общий провод приводит к срабатыванию защиты самого блока питания и сбою программы.

Резисторы R9-R12 поддерживают уровень логической 1 на разомкнутых контактах кнопок джойстика, конденсаторы С15-С18 защищают от помех. Следует иметь в виду, что для устранения "дребезга" контактов этих конденсаторов недостаточно, требуется дополнительная программная защита.

gam2port2.gif
Puc.5

Все детали адаптера размещают на печатной плате (рис. 6) из двустороннего фольгированного стеклотекстолита толщиной 1,5 мм. При ее изготовлении следует обратить особое внимание на присоединительные размеры печатной вилки ХР1. Шаг ее контактных площадок - 2,54 мм. Плату необходимо снабдить стандартной для IBM PC установочной планкой, зажав ее под крепежные втулки розетки XS1. Расположение остальных деталей показано на рис. 7.

gam2port3.gif
Puc.6

gam2port4.gif
Puc.7

Плата рассчитана на установку резисторов ОМЛТ, конденсаторов К50-35 (С4) и КМ-56 (остальные). Дроссель L1 - ДМ или ДПМ с индуктивностью 30... 100 мкГн на ток не менее 0,4 А. Конденсаторы С1 и С5 можно не устанавливать, а дроссель заменить перемычкой, если это не приводит к сбоям. В качестве Х1 применены двухрядные штыревые соединители PLD с джампером MJ-0 (MJ-C). При их отсутствии допустимо просто соединить соответствующие контактные площадки на печатной плате проволочной перемычкой. Розетка XS1 - DRB-15F (с угловыми выводами под печатный монтаж). Если изготовить дополнительный кронштейн, вместо нее можно использовать DB-15F или РП15-15Г. У отечественной розетки нужно срезать металлическую обечайку. Стабилизатор DA1 - КР142ЕН5А, КР142ЕН5В или любой зарубежного производства с выходным напряжением +5 В (например, AN7805). Поскольку потребляемый таймерами ток невелик, теплоотвод стабилизатору не требуется. Но если от розетки игрового порта предполагается питать какие-либо приставки к ПК, лучше его все-таки предусмотреть. Это может быть пластина из алюминиевого сплава максимально возможной площади и толщиной не менее 2 мм. Для уменьшения нагрузки наj шины ПК в качестве DD1-DD5 желательно применить микросхемы серии КР1533, хотя устойчиво работают и микросхемы серий К555, К155.

Налаживания устройство не требует. Его работу проверяют при подключенном джойстике с помощью тестовой программы, например, Checkit, QuickTech, или открыв пиктограмму "Игровые устройства" на панели управления Windows 95 или Windows 98. Как отмечалось в упоминавшейся статье, вместо переменных резисторов джойстика к адаптеру можно подключать различные резистивные датчики, например температуры. Дискретными входами удобно пользоваться для приема любых логических сигналов с уровнями ТТЛ. В последнем случае нет необходимости инициализировать игровой порт записью какого-либо кода по его адресу.

Полезным дополнением (его можно ввести как в самодельное, так и в промышленное устройство) может быть индикатор опроса, который позволит определять, обращается ли в данный момент программа к джойстику, или манипулировать его рукояткой бесполезно. Принципиальная схема индикатора показана на рис. 8. Его работа основана на том, что при опросе напряжение на переменных резисторах джойстика - импульсное частотой 25...80 Гц, а в его отсутствие - постоянное.

gam2port5.gif
Puc.8

Импульсы с одного из резисторов (с какого именно безразлично, все таймеры игрового адаптера запускаются синхронно) поступают на вход счетчика DD1.1. Подключенный к его выходу светодиод HL1 во время опроса джойстика мигает с частотой 3...10 Гц, а все остальное время погашен или горит постоянно.

Если сопротивление переменного резистора, с которым соединен вход счетчика, в крайнем положении уменьшается до нуля, светодиод индикатора перестает мигать. Для устранения этого недостатка последовательно с переменным следует включить постоянный резистор сопротивлением 1...2 кОм. Вызванное им небольшое изменение пределов регулировки легко учитывается при калибровке. В игровых адаптерах промышленного изготовления ограничительные резисторы, как правило, предусмотрены.


Радио 1/2000