Аппаратные интерфейсы ПК

         

Интерфейс игровых устройств — Game-порт


Игровые устройства — джойстик, руль и педали автомобиля или иные — вырабаты­вают некоторые аналоговые и дискретные сигналы, которые можно ввести в ком­пьютер. С самых первых моделей IBM PC был введен и фактически стандартизо­ван интерфейс игрового адаптера — Game port, к которому можно подключить до двух джойстиков или иных устройств. Суммарно на порте доступно 4 координат­ных датчика (XI, Х2, Y1 и Y2), изменяющих сопротивление, и 4 дискретных входа для кнопок управления. Назначение координатных датчиков зависит от игры и кон­струкции манипулятора. Для авиасимуляторов XI может соответствовать переме­щению рукоятки вверх-вниз, Y1 — влево-вправо, Х2 — нажатие левой и правой педа­лей, Y2 — рукоятка сектора газа. Для автомобильных рулей XI — руль, Y1 — газ, Х2 — тормоз (газ и тормоз могут быть совмещены в координате Y1). Кроме игро­вых целей порт может применяться и для подключения «серьезных» датчиков.

Современные игровые устройства имеют свой интеллект (микроконтроллер) и подключаются к компьютеру цифровым интерфейсом — по шине USB или че­рез СОМ-порт. Их функциональные возможности богаче, они позволяют устанав­ливать и двустороннюю связь с игроком (вводить механические воздействия).

Адаптер Game-порта имеет в пространстве ввода-вывода один регистр с адресом 20 lh, биты которого при чтении отображают состояние кнопок и компараторов аналоговых сигналов. Ввод дискретных сигналов от кнопок пояснений не требу­ет. Упрощенная схема одного канала аналогового ввода приведена на рис. 8.19. В начале преобразования конденсатор разряжается через ключ, после чего начи­нается его заряд, скорость которого определяется величиной сопротивления дат­чика (чем больше сопротивление, тем медленнее заряд). Напряжение на кон­денсаторе контролируется компаратором, который срабатывает по достижении определенного уровня. Выходы компараторов всех четырех каналов преобразова­ния, как и дискретные входы, собираются в регистр (см. ниже), который может быть программно считан.
Преобразование выполняется чисто программно и на­ чинается по выводу любого байта в регистр адаптера (20lh), при этом биты 0-3 устанавливаются в единицу. Далее программа циклически выполняет чтение ре­гистра адаптера и измеряет время до возврата в нулевое состояние бит 0-3, соот­ветствующих четырем аналоговым каналам. Если аналоговый вход закорочен на шину GND или цепь измеряемого сопротивления разорвана, соответствующий бит не обнулится. Поэтому в программе преобразования должен быть предусмотрен тайм-аут. Для измеряемых сопротивлений в диапазоне 0-100 кОм время опреде­ляется по формуле

Т(мкс)=24,2+1 1хК(кОм).

350________ Глава 8. Специализированные интерфейсы периферийных устройств

Точность и линейность преобразования невысока, преобразование выполняется не быстро (до 1,12 мс) и сильно загружает процессор. Однако в отличие от «на­стоящих» аналого-цифровых преобразователей, этот достается даром — игровой адаптер входит в состав практически всех комбинированных плат последователь­ных и параллельных портов и звуковых карт.



Рис. 8.19. Канал аналогового ввода

Порт имеет разъем-розетку DB- 15S. Назначение выводов и соответствие сигналов битам регистра приведено в табл. 8.20. Резисторы подключаются к шине питания +5 В, кнопки — к шине GND (рис. 8.20). Замыканию кнопок соответствуют нули в битах 5-7. Аналоговые каналы можно использовать для дискретного ввода, если их входы подключить к кнопкам, замыкающим их на шину GND, и к резисторам, «подтягивающим» их к уровню + 5 В. Два джойстика (А и В) подключаются через Y-образный переходник-разветвитель. На звуковых картах через разъем «Game» вместе с джойстиками могут подключаться и внешние MIDI-устройства, исполь­зуя специальный кабель-адаптер, обеспечивающий гальваническую развязку вход­ного сигнала и ограничение выходного тока (см. рис. 8.18). Для интерфейса MIDI используются контакты 12 и 15, ранее предназначавшиеся для шин GND и +5V. Такое назначение делает безопасным подключение адаптера MIDI к «чистому» игровому порту и обычного джойстика к игровому порту с сигналами MIDI.



Таблица 8.20. Интерфейс игрового адаптера и MIDI



Бит

Назначение

Контакт

7

Джойстик В кнопка #2

14

6

Джойстик В кнопка #1

10

5

Джойстик А кнопка #2

7

4

Джойстик А кнопка #1

2

3

Джойстик В Y-координата (Y2)

13

2

Джойстик В Х-координата (Х2)

11

1

Джойстик А Y-координата (Y1)

6

0

Джойстик А Х-координата (Х1)

3

-

GND

4,5,(12)

-

+5 В

1,8,9,(15)

-

MIDI In (Rx) — вход (на звуковой карте)

15

-

MIDI Out (Tx) — выход (на звуковой карте)

12

8.6. Интерфейс игровых устройств — Game-порт

351



Рис. 8.20. Подключение датчиков к игровому адаптеру

Системную поддержку джойстика обеспечивает сервис BIOS Int 15 h при AH=84h. При вызове в DX задается код подфункции:

¦     DX=0 — опрос кнопок, возвращает в AL[7:4] состояние кнопок (соответствует битам порта 20lh);

¦      DX=1 — чтение координат X, Y джойстика А (в регистры АХ, ВХ) и В (в СХ, DX). При ошибочном задании кода в DX устанавливается CF-1. Стандартный джойстик поддерживается и ОС Windows.


Содержание раздела