Pull to refresh

Comments 30

Мне кажется что сдесь можно использовать SPI для чтения байта. Разве что Latch надо будет через GPIO делать, хотя можно попробовать использовать CS.
Проблему смотрите не в CS, а в бите кнопки А.
У SPI часто бывают по варианты по какому фрону вести захват данных по верхнему или по нижнему. Если поставить по нижнему, то вполне может получится. На днях попробую.
Я не вижу никакого тактового фронта при бите кнопки А.
Ну потому что вы смотрите на эту картинку с этой датаграмой. А если отойти от картинки и поэкспериментировать, то выясняется вот что.
1. Пока Latch в верхнем уровне регистр не защёлкнут что хорошо видно по тому что наатие на A сразу попадает на линию Data(нажимаем кнопку там один отпускаем ноль)
2. Защёлкивание происходит когда латч переходит с верхнего уровня в нижний.
3. Смена бита на линии дата происходит при смене уровня линии CLK(Pulse) из нижнего в верхний.
(это всё проверено на реальном джойстике)

В итоге если SPI настроен так что хватает данные при переходе по CLK из верхнего уровня в нижний, то по идее можно получить вариант что на момент старта CLK в верхнем уровне CS уходит в нижний. SPI опускает CLK и хватает первый бит который как раз A.
Вот оно как. Но думаю не выйдет, ибо наверняка будет по барабану джойстику 1 на LE или ноль. Он работает по переднему фронту. Т.е формально можно поставить режим cs и всё будет нормально, но без бита А.
Проверил только что, всё рабоатет. Правда проверял не на Raspberry а на DE0-Nano-SoC. Если интересно вот датаграммы.
Ничего не нажато:

Нажата A:

Нажата A+RIGHT:

Нажата B+RIGHT:


Данные снял только что на дендевском джойстике. В качестве Lacth использовал CS для SPI в программе тоже отлично прочиталось.
Джойстик нормально тянет скорость гед то до 2.2MHz потом начинает не успевать за клоком.
Это копеечный логический анализатор saleae logic =) Наверное, копеечный. А может и оригинал за кучу денег.
Присмотрелся, 50МГц, это оригинал…
Интересно, супер. (Нафиг не нужно мне это, но реально интересно) Я думал о том, чтобы держать CLK в '1', но то ли отвлёкся, то ли не знаю что.
Почему на последних двух скриншотах Data выставляется невпопад с CLK? Я бы понял, если бы загнали частоту слишком большую и было запаздывание, но на последнем видно, что фронты как бы идут на опережение.
Там много веселых моментов, как идут данные очень зависит от количества нажатых кнопок. То есть когда нажата одна кнопка картинка идеальная если две всё чуть плывет, но считывание всё равно происходит как надо. Нужно было сразу аналог снять на всякий там может быть картина понятней бы стала. Но по частоте тут 2MHz снято, на 2.4 данные уже нормально не считывались. Так что по частоте возможно уже на пределе. Надо глянуть на какой реальная денди это делает.
Я немного не в курсе. У SPI регулируется частота на линии Clock? У сдвиговых регистров, которые применяются в оригинальных геймпадах есть ограничение по частоте, что-то вроде 5 МГц, если правильно помню.
«Частота» тактового сигнала может быть даже нестабильной, сигнал может быть со скважностью отличной от 2.
У всех что я видел регулировалась делителем.
Проверил мой джойстик тянул где то 2.2MHz дальше начинает явно не успевать.
Тут есть интересный момент, в английском языке правильное название controller, но как будет правильно в русском языке зависит от официального перевода. Не знаю на счёт NES (он официально не продавался в России), но замечу что Xbox 360 Controller — «геймпад», а контроллер от PS — «контроллер». Узнал из статьи на хабре: Локализация консольных игр: между контроллером и геймпадом.
С «джойстиками» вообще интересно, в тот период (90-е) когда они входили в оборот русского языка было еще одно конкурентное слово — «кнюппель», а кто пользовался ZX Spectrum знали слово «кемпстон».
«Кемпстон» получается было тогда нарицательным. Слово «кнюппель» похоже до сих пор используется в авиации.
Да «кнюппель» обитал в тех местах, где была авиация, ПВО либо оборонная промышленность этой специализации. Никогда не встречал это слова пока не увидел на Youtube интервью с водителем Лунохода В.Довгань, где он объяснял как помощью «кнюппеля» он управлял. Некоторое время гуглил это новое слово пока не нашел, что оно пришло от захваченных у немцев систем ПВО с дистанционно управляемыми ракетами. А параллельно выяснилось что «кнюппель» — это компьютерный джойстик и джойстик мобильных телефонов в некоторых регионах.
«Кемпстон» было нарицательным для устройств на 31 порту, а были ещё «Синклер» джойстики, цеплявшиеся к цифрам клавиатуры…

Потом, когда по ползли приставки, геймпэды, народ по привычке называл джойстиками.
На пикабушке есть замечательный пост по теме — http://pikabu.ru/story/igrovaya_pristavka_svoimi_rukami_4546616
Я думаю, что и на первом RPI можно такое организовать.
Я прошу прощения, не граммар наци ни разу, но пунктуацию мозг подсознательно всё-таки использует во время чтения, и
пришлось обращаться к одному из celebrity из всё тех же «Пока все играют», с просьбой прокомментировать участки кода, и ткнуть носом

не могло не прочтись как «пришлось обращаться к celebrity и ткнуть его носом, чтобы заставить прокомментировать» :)

В личку написать не могу как рид энд коммент, так что можете просто не аппрувить этот комментарий, просто поправить или проигнорировать :)
Я понимаю, когда мозг подсознательно переставляет или подставляет буквы в слова, но вот чтобы он подставлял или переставлял слова в предложении:). Сижу вот думаю, как исправить.
Sign up to leave a comment.

Articles