Пульт от «Dendy» в любительских конструкциях

в 21:33, , рубрики: 74HC595, dendy, diy или сделай сам, Nes, snes, SPI, Электроника для начинающих, метки: , , , ,

image

Часто радиолюбители сталкиваются с проблемой оформления выносного пульта управления устройством. Если число кнопок на нем велико, то для сокращения числа проводов в соединительном кабеле пульт оснащают шифратором команд нажатых кнопок, а устройство дешифратором. В этой ситуации может выручить старый джойстик, от некогда популярных игровых приставок «Dendy». Задача радиолюбителя сильно упрощается, так как джойстик имеет неплохой дизайн и оснащен готовым шифратором команд нажатия кнопок.

Что внутри джойстика?

Примерная схема шифратора, применяемого в джойстиках «Dendy» приведена на рис. 6, в конце статьи. Сведения об интерфейсе между джойстиком и игровой приставкой, вариант схемы джойстика, а также варианты схем дешифраторов можно найти на страницах журнала «Радио». [л] Информация о нажатых кнопках джойстика передается в последовательном формате с использованием тактирующего сигнала «Clock» от управляемого устройства. Для синхронизации с ним джойстик имеет вход «Latch», на который подается короткий импульс с высоким логическим уровнем в начале каждого цикла получения данных от джойстика.

Устройство дешифратора и его работа

Предлагаемое устройство, электрическая принципиальная схема которого изображена рис. 1, является дешифратором, преобразующим сигналы джойстика в дискретные логические уровни, соответствующие нажатым кнопкам.
image
Его основа — микросхема 74HC595N (DD3), представляющая собой 8-разрядный регистр сдвига с последовательным вводом и последовательным и параллельным выводом информации. Параллельный вывод информации осуществляется через буферный регистр с выходами, которые имеют три состояния. Информационный сигнал подают на вход SER (вывод 14), сигнал записи — на вход SCK (вывод 11), а сигнал вывода («защелкивания») — на вход RSK (вывод 12). Этот регистр принимает байт, несущий в себе информацию о нажатых кнопках, последовательно, и выдает на выходы Q0 — Q7 в параллельном виде. Таким образом, состояние каждого отдельного выхода, выходного регистра микросхемы, будет соответствовать сопоставленной ему кнопке на джойстике. Соответствие выводов регистра и кнопок джойстика показано в представленной ниже таблице.

image

На микросхеме DD2 собран формирователь синхроимпульса «Latch», необходимый для фиксирования состояния кнопок на джойстике и вывода старшего бита данных из джойстика на выход «Data». Происходит это, по положительному фронту импульса. По отрицательному фронту этого импульса, начинается цикл считывания байта данных. Этот момент обозначен как «цикл опроса джойстика» (смотрим рис. 2). Следующие по порядку биты, будут выдаваться на выход «Data» с появлением положительного фронта тактового импульса, на входе «Clock» джойстика. Также, синхроимпульс «Latch» подается на вход RSK регистра сдвига, это необходимо для «защелкивания» принятого байта в выходном регистре и выводе его на выходы Q0 — Q7 в параллельном виде. «Защелкивание» принятого байта происходит по положительному фронту импульса. Этот момент времени обозначен как «цикл обновления информации на выходе регистра 74НС595» (смотрим рис. 2). С приходом каждого синхроимпульса, информация на выходе регистра будет обновлена.
image
На микросхеме DD1 собран генератор тактовых импульсов. Частота которого равна 100 килогерц. Тактовые импульсы подаются на вход «Clock» джойстика и на вход SCK приемного регистра 74НС595. Данные о состоянии кнопок джойстика выдаются на выход «Data» по порядку, начиная со старшего бита — D7, D6… D0. Происходит это по положительному фронту тактового импульса на входе «Clock» джойстика. Считываемые с выхода «Data» биты, подаются на вход SER регистр 74НС595. Запись принятого бита в регистр происходит также по положительному фронту импульсов этого генератора.

— чувак! У тебя момент обновления бита информации на выходе «Data» совмещен с моментом чтения установленного бита на выходе «Data»!
— да… это точно. Но джойстик довольно «тормозной», и обновление бита, после прихода положительного фронта тактового импульса, происходит спустя 120 nC. Пока джойстик раздумывает, шустрый 74НС595 успевает записать предыдущее значение c выхода «Data», за 20 nC.
— эээ, «Кулибин»! За время действия импульса «Latch» у тебя в выходной регистр 74НС595 пишется мусор — подряд два бита D7!
— да, признаюсь — халтура. Но после окончания цикла записи всего байта, лишние биты «вывалятся» из регистра в никуда, и никак не повлияют на точность принятой информации.

Интерфейс SPI

И еще один момент… Многие, посмотрев на картинку (Рис. 2) увидели схожесть с таймингом коммуникационного интерфейса SPI. Да да да… за некоторыми отличиями, это он и есть! Надо подменить названия сигналов: «Latch» на CS или SS, сигнал «Clock» на CSLK или CLK, сигнал «Data» на MISO, SDO или SO (кому как больше нравится). Джойстик можно опрашивать встроенным в МК периферийным модулем SPI. Для этого надо отсылать на устройство байт, неважно какой, например FF.

Правда если кому-то этот байт может пригодиться, его можно загружать нужной информацией. Например, для регистра со светодиодами. Или же не загружать, а пересылать принятую информацию от джойстика еще кому-то. То есть, пин MOSI можно использовать.

Принятый байт будет содержать информацию о нажатых кнопках. Нажатой кнопке будет соответствовать бит равный нулю, а не нажатой единице. Если на джойстике не нажата ни одна кнопка, то будет принят байт FF, если умудрится зажать все кнопки сразу, то принятый байт будет содержать 00. SPI интерфейс необходимо настроить для работы в режиме ведущего (Master), ну это-то и так понятно… а режим синхронизации настроить CPOL=1, CPHA=0 (Mode 2). При таком раскладе, данные с выхода «Data» (MISO для МК) будут считываться микроконтроллером по отрицательному перепаду тактового сигнала CSLK, поданного на вход «Clock» джойстика. А обновление бита информации на выходе «Data» джойстика и на входе MISO микроконтроллера, будет происходить по положительному фронту тактового импульса. Таким же способом джойстик можно подключить к плате «Arduino».
image

«Turbo A» и «Turbo B»

Ранние модели джойстиков содержали 8 кнопок, более поздние десять. Добавилось две кнопки «Turbo A» и «Turbo B». Но на протоколе обмена данными, это никак не отразилось — он остался прежним. Добавленные турбо кнопки эквивалентны кнопкам «А» и «В» с той лишь разницей, что при нажатии на кнопку «Turbo A» будет нажиматься кнопка «А», только со скоростью 12 с половиной раз в секунду. Это справедливо и для кнопок «Turbo B» и «В». Генератор турбо нажатий добавили в сам джойстик (см. рис.6, выделен красным). При нажатии на турбо кнопки на выходах Q6 и Q7 регистра DD3 будут присутствовать импульсы с периодом 80 мС и скважностью равной двум.

image

Встречаются джойстики с еще большим количеством кнопок, а также и с меньшим. Нажатие дополнительных кнопок на таких джойстиках эквивалентно нажатию сразу двух кнопок на старых моделях. При подключении к дешифратору контрольных светодиодов, разобраться с работой кнопок «супер джойстиков» будет не сложно. (По-моему это были джойстики от «Sega Mega Drive»)

Интерфейс SNES, NES

Совместно с предлагаемым дешифратором можно применить любой джойстик, который обладает интерфейсом SNES, NES или «Virtual Gameboy». А также их многочисленными клонами — «Dendy», «Sega» и прочие. Отличия состоят в дизайне и в разъеме подключения джойстика к игровой приставке. Назначение контактов известных мне разъемов показано на рис. 3.
image

Подключение приборов к дешифратору

Сигналы на выходе дешифратора соответствуют уровням TTL. Нажатой на пульте кнопке соответствует — высокий уровень, низкий — не нажатой. Если подключаемое к дешифратору устройство согласуется по уровням TTL, то дополнительных мер по согласованию не требуется.

Если на выходе дешифратора необходимы инверсные состояния сигналов (кнопка нажата — ноль, кнопка не нажата — единица) то, элемент DD1.4 (Рис. 1) необходимо исключить из схемы.
В тех случаях, когда приборами, подключенными к дешифратору, нельзя управлять логическими уровнями или требуется гальваническая развязка по питанию, следует применить реле или оптопару рис. 4 а, б.
image
Если для управления, чем-либо требуются сигналы управления статического типа (кнопку нажал, чета там включились, нажал еще раз, выключилось), устройство необходимо дополнить триггером. Применив одну микросхему К155ТМ2 (смотрим рис. 4 в), кнопки «Start» и «Select» можно превратить в переключатели. Возможно, тут проявится эффект дребезга контактов (если подавление не реализовано в самом джойстике). В этом случае необходимо уменьшить частоту тактового генератора, например до 100 герц. При этом джойстик будет опрашиваться 10 раз в секунду, и проблема дребезга будет решена.

Конструкция устройства

Большинство деталей монтируются на печатной плате из одностороннего фольгированного стеклотекстолита толщиной 1…1,5 мм, чертеж печатной платы приведен на рис. 5. Светодиоды можно устанавливать только на этапе настройки, для наглядности.
image
В устройстве применены резистор С2-23, МЛТ, пленочный конденсатор К10-17, керамические конденсаторы КМ-6, оксидные конденсаторы К50-35 или импортные аналоги перечисленных типов деталей. Разъем XR1 позаимствован в неисправном DVD плеере. При отсутствии оригинального разъема, устройство необходимо оснастить любым другим, подходящим по конструкции и габаритным размерам. Питают устройство от источника питания 12 В и током 50 мА.
image

Литература:

Джойстик Dendy – выносной пульт управления
С. КУЛЕШОВ, г. Курган
Журнал «Радио» №4 2002 г.

Автор: KurilkaRymin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js