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

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

Как подключить к компьютеру джойстик от игровой приставки.

Ранее автор уже рассказал о том, как с помощью джойстиков от различных видеоприставок и пакета программ DirectPadPro (DPP), разработанного в 1999 г. Эрлом Филхауэром (Earle F. Philhower), управлять работой не только компьютерных симуляторов “приставочных” игр, но и других прикладных программ.

Была сделана оговорка, что джойстики от игровой приставки “Sega” работают далеко не со всеми компьютерами. За прошедшее время автор упомянутой статьи не только разобрался в причинах несовместимости, но и, изменив схему подключения такого джойстика к порту LPT компьютера, доработал программы пакета DirectPadPro. Несовместимости больше не существует!

При подключении джойстика от видеоприставки “Sega” к LPT-порту по схеме, рекомендованной автором пакета DPP, современные IBM-совместимые компьютеры, в отличие от их морально устаревших версий, не реагируют на нажатия кнопок UP/Z и DOWN/Y джойстика. Согласно этой схеме ее можно найти в архиве dpadpr50.zip [1] в файле под названием genesis.gif упомянутые кнопки соединены с линиями STROBE и AUTOFEED порта LPT, состояние которых отображают разряды 0 и 1 регистра управления принтером. Для программиста это порт 37АН (LPT1) или 27АН (LPT2). Объяснения причины несовместимости не удалось найти ни на одном Интернет-сайте. Пришлось внимательно изучить устройство адаптеров LPT-порта персональных компьютеров различных поколений.

Рис.1.

На рис. 1 ,а приведена типовая схема входных и выходных цепей одного разряда регистра управления “старого” LPT-адаптера, применявшегося в IBM PC/XT, в их клонах и в некоторых компьютерах более поздних поколений. С контактом разъема непосредственно соединен выход с открытым коллектором инвертора DD1, нагруженный резистором R1.

Сюда же подключен и вход инвертора DD2. При стандартном использовании регистра для вывода сигналов управления принтером логический уровень на выходе элемента DD2 повторяет поданный на вход элемента DD1, а уровень на контакте разъема Х1.1 им инверсен.

Программный драйвер джойстика “Sega” использует “запрещенный прием”. Записью лог. 0 в соответствующий разряд регистра управления на выходе элемента DD1 установлен высокий уровень напряжения. В этом состоянии выходной транзистор инвертора DD1 закрыт и не влияет на работу узла. Подключенная к контактам разъема Х1 кнопка джойстика SB1, будучи нажатой, соединит вход инвертора DD2 с общим проводом.

В результате чтение регистра управления процессором компьютера даст в соответствующем разряде 0 при отпущенной кнопке и 1 при нажатой. В современных компьютерах входные и выходные цепи регистра управления построены по иной схеме, показанной на рис. 1,6, причем элементы DD1.1—DD1.3 находятся, как правило, внутри БИС. Логика стандартной (только на вывод) работы узла остается прежней, но описанный выше прием уже не проходит. Поэтому компьютер и не реагирует на нажатия кнопок UP/Z, DOWN Д джойстика.

Усовершенствованная схема соединения джойстика от видеоприставки “Sega” с компьютером показана на рис. 2. В ней три отличия от оригинала.

  • Во-первых, сигнал от кнопки DOWN/Y подан на свободный ранее контакт 15 (ERROR) вилки Х1.
  • Во-вторых, введены транзисторы VT1 и VT2, на базы которых поданы сигналы от кнопок UP/Z и LEFT/X, а их коллекторы соединены между собой и с контактом 10 (ACKNLG) вилки Х1. Эмиттеры транзисторов соединены соответственно с контактами 1 (STROBE) и 14 (AUTOFEED) вилки Х1.
  • В-третьих, добавлен диод VD8, уменьшающий вероятность проявления “тиристорного” эффекта в КМОП-микросхеме джойстика.

Положение кнопки DOWN/Y теперь отображается в разряде 3 регистра состояния принтера по адресу 379h для LPT1 или 279h для LPT2. В разряде 6 того же регистра в зависимости от уровней напряжения, установленных программно на эмиттерах транзисторов, отображается положение кнопки UP/Z или LEFT/X. Например, если на контакте 1 низкий, а на контакте 14 — высокий уровень, транзистор VT2 постоянно закрыт, a VT1 открыт при высоком и закрыт при низком уровне на линии UP/Z. При инверсии уровней на контактах 1 и 14 постоянно будет закрыт транзистор VT1, a VT2 открыт при высоком и закрыт при низком уровне на линии LEFT/X.

Рис.2.

Питание на джойстик поступает по цепи VCC через разделительные диоды VD1—VD8 от восьми линий LPT-порта, на семи из которых (контакты 3—9 вилки Х1) высокий логический уровень присутствует постоянно. Ток потребления джойстика зависит от числа одновременно нажатых кнопок и не превышает, как правило, 2...4 мА. Напряжение питания джойстика при этом не выходит за пределы 3,5...3,8В (VD1—VD8 — диоды Шотки, указанные на схеме) или 3,1...3,4 В (диоды обычные кремниевые).

Все элементы переходного устройства можно разместить внутри пластмассового корпуса 25-контактной вилки DB-25M (Х1), припаивая их выводы непосредственно к контактам. Вилка DB-9M (Х2) соединена с остальными элементами плоским девятипроводным шлейфом или жгутом многожильных изолированных проводов сечением не менее 0,2 мм2 и длиной не более 1,5 м.

Резисторы — любые малогабаритные. Номиналы двух из них (R1 и R3) некритичны и могут находиться в пределах от 22 до 82 кОм. Транзисторы — КТ315, КТ312, КТ3117 с любыми буквенными индексами или другие кремниевые маломощные структуры n-p-п. Не следует применять транзисторы со сверхвысоким (более 250) значением коэффициента п21Э.

Диоды с барьером Шотки 1N5819 можно заменить аналогичными КД923А. Если установить обычные кремниевые диоды, например, КД522Б, уменьшится напряжение питания джойстика, вследствие чего некоторые экземпляры могут работать со сбоями.

Для адаптации к новому способу подключения джойстика от приставки “Sega” в файлы dpadpro.vxd и dpadpro.dll пакета DPP версии 5.0 внесены изменения. Модернизированный пакет номер версии изменен на 6.0 упакован в архив dpadpr60.zip, где в папке C++ имеется также исходный текст новой подпрограммы опроса джойстика. Пакет программ DPP версии 6.0 можно скачать [2].

При установке нового пакета на компьютер воспользуйтесь рекомендациями упомянутой выше статьи, выбрав на соответствующем этапе процесса контроллер “Genesis” (джойстик с кнопками UP, DOWN, LEFT, RIGHT, А, В, С, START) или “Genesis 6 button” (добавлены кнопки X, Y Z, MODE). При работе с джойстиками от других видеоприставок новая версия ничем не отличается от исходной 5.0.

Если во время калибровки обнаружена неправильная реакция компьютера на нажатия кнопок джойстика, причина кроется, как правило, в ошибках монтажа согласующего устройства.

Пакет DPP рассчитан на работу в среде Windows-9х. Для операционных систем Windows-2000/XP потребуется дополнительный драйвер “NTPAD ХР” [3] его объем - 175 Кбайт

С. Рюмик

Литература:

1. Скачать dpadpr50.zip

2. Скачать dpadpr60.zip

3. http://24.232.29.41/dist/ntpadxp2.01.exe.

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

Hosted by uCoz