Ну что же, последний рывок
. Посмотрим, из чего сделана управляющая пррограммка, обрабатывающая сигналы с нашего девайса.
Сразу скажу, что описывать весь код мне ужасно лень. К тому же, некоторая часть этого кода писалась в состоянии весьма неоднозначном, поэтому некоторые вещи там нужно просто принимать как данность
. Поэтому я опишу лишь основные классы, некоторые ключевые моменты и основную идею. Если кому-то хочется залезть в дебри — милости просим
.
Внезапно увидел, что в черновиках дожидается порядочное количество недописанных статей. Исправляюсь
.
В последней статье мы обсудили схему нашего девайса и способ изготовления печатной платы. Теперь поговорим о самом интересном — написании прошиви для контроллера
.
Наконец-то появилось время продолжить рассказ про мой последний проект под названием «Oculus». В прошлый раз я рассказал общую теорию передачи сигналов по ИК-протоколам. Сегодня мы рассмотрим конкретную реализацию, которая в будущем позволит нам принимать любой сигнал с несущей частотой 36 КГц.

Сегодня я начну рассказывать о своём последнем проекте под названием «Oculus». Девайс представляет собой универсальный ИК-приёмник, подключаемый к компьютеру по USB и позволяющий управлять оным компьютером с любого пульта ДУ. Довольно полезная штука, особенно для тех, кто часто смотрит фильмы, честно скачанные купленные у официальных дилеров
.
Раз уж мы решили подключать джойстик по USB, то нам нужен некий девайс, который будет реализовывать протокол на аппаратном уровне, верно? Отличная новость: для этой цели подойдёт практически любой 8-битный контроллер AVR, который может завестись от кварца 12 МГц. Это сатло возможным благодаря программной реализации USB от http://obdev.at. Конечно, возможностей полномасштабного контроллера с аппаратной поддержкой USB тут ожидать не приходится, но нам и надо-то совсем немного
Реализация довольно компактная и занимает примерно 1,5 килобайта памяти. При этом мы можем создавать Custom Class, HID и Custom HID девайсы. Конечно, HID, не требующий драйвера и программы-обработчика на компьютере, выглядит очень заманчиво, но мне, если честно, было лень с ним разбираться
Поэтому я решил особо не мудрить и сделать Custom Class device, требующий присутствия на компьютере драйвера libusb-win32.
У каждой эпохи есть свои символы – вещи, с которыми ассоциируется данный отрезок времени. Вряд ли я сильно ошибусь, если скажу, что одним из таких символов для детей, выраставших в середине 90-х, стала всемирно известная приставка от Nindendo. 8-битный процессор, 2 килобайта оперативной и 48 килобайт памяти на картридже – вот те нехитрые комлектующие, которые и составляли ту самую Dendy, приводившую в восторг каждого ребёнка. Конечно, сейчас с высоты четырёхядерных монстров и терабайтных винчестеров такая конфигурация выглядела бы смешной. Выглядела бы, если бы старые игры, выжимающие всё возможное и невозможное из Ricoh 6502, не захватывали дух даже сейчас, по прошествие стольких лет. Ну что может противопоставить Crysis с его motion blur, нанокостюмом и реалистичной физикой старым добрым «Черепашкам Ниндзя»? Или «Супер Марио»? Сейчас просто не умеют писать игр, берущих от железа всё. «А вот мы щас присобачим двадцать потоков на обработку ввода с клавиатуры и ещё пятнадцать на мышь. Картинка тормозит? Ага, зачёркиваем GeForce 7900, пишем GeForce 9800. Опять не хватает? Не беда – напишем в пресс-релизе о революционных технологиях, опережающих своё время». А вы попробуйте уложиться в 64 спрайта и палитру в 48 цветов.
К чему я всё это пишу. Не так давно, разбирая в комнате, я наткнулся на ту самую приставку, которую мне подарили году эдак в 95. Сама приставка уже не работала, да и картриджи я кому-то успел подарить… Но желание вспомнить детство оказалось сильнее обстоятельств
Погуглив минут пять, я нашёл множество разных эмуляторов, равно как и кучу ROM’ов. Будучи восьмилетним пацаном, я мог только мечтать о таком богатстве
Однако поиграв некоторое время, я понял, что чего-то не хватает. Эмулятор воспроизводит картинку в точности, как на телевизоре; звук шипит и хрипит так, будто вместо пятиканальной Revolution я воткнул колонки в умирающий спикер… Клавиатура, вот что. Никакая клавиатура никогда не заменит старого доброго джойстика
Погуглив ещё некоторое время, я нашёл несколько способов подключения джойстка к компьютеру. Вариант с подключением в LPT через диоды был сразу с негодованием отвергнут. Не потому, что я весь такой аццкий электронщик (данное утверждение весьма далеко от истины
), а потому что инженеры Asus’а решили не перегружать мою материнскую плату LPT-портом. Следующим вариантом был переходник от джойстка на USB, собираемый на МК ATMega8. Вот его я и решил спаять. Однако меня ждало жестокое разочарование: то ли русские пираты были настолько суровы, что не соблюдали цветовую маркировку при разводке джойстика, то ли вообще протокол поменяли – в общем, переходник не работал. Казалось бы, вариантов больше нет. Ан нет. К тому моменту я уже твёрдо решил, что, во что бы то ни стало, хочу поиграть в денди со своим старым джойстиком, без вариантов
Немного пораскинув мозгами, я решил подойти к проблеме радикально. Раскрутил джойстик, вытащил из него плату, тщательно измерил положение всех контактных площадок, и… Забросил её обратно на антресоль. Ибо новый проект под кодовым именем «DUX» подразумевал создание всей начинки джойстика с нуля.
Долго ли, коротко ли, проект был завершён, джойстик собран, софт написан… А результат можно лицезреть на видео в начале поста. В следующей паре постов я постараюсь более подробно описать сам процесс разработки и сборки. А пока, с чувством выполненного долга от пройденных «Чипа и Дейла», отправляюсь спать
