Приставки > Джойстики и прочие манипуляторы

Джой для сеги на ардуино

<< < (2/5) > >>

Rumata:

--- Цитата: Skay от 12 Август 2018, 21:35:57 ---я один эту строку вижу?
--- Конец цитаты ---
Нет. Но как-то странно трактуешь. Нафига нам тут мост? Мост не нужен. Мост - он между устройствами, его (джойстика) у нас как раз и нету

Skay:
Rumata, в первоначальном моем сообщение писалось что есть хорошая основа. Да и  платка по себе мелкая, и все в ней 'из коробки'. Мы же не знаем что и как умеет человек.  А допиливать что то имеющееся порой проще чем с нуля пилитьпротокол.

megavolt85:

--- Цитата: Skay от 12 Август 2018, 21:28:04 ---а внимательнее почитать что там?
--- Конец цитаты ---

вплоть до схемы и исходного кода


--- Цитата: Skay от 12 Август 2018, 21:28:04 ---про декап яж написал 'Чтоб было'.
--- Конец цитаты ---

декап нужен если хочешь повторить устройство на ПЛИС и/или не вариант просчитать протокол


--- Цитата: Skay от 12 Август 2018, 21:35:57 ---я один эту строку вижу?
--- Конец цитаты ---

ты её просто не верно трактуешь


Добавлено позже:

--- Цитата: Skay от 12 Август 2018, 21:56:32 ---в первоначальном моем сообщение писалось что есть хорошая основа.
--- Конец цитаты ---

а ты исходный код то хоть смотрел? по genesis/megadrive там ничего нет

Skay:
megavolt85, смотрел, еще лет 5 назад когда только опубликовали.  Знаю что нет.  И упомянаемого денди вроде тоже небыло.
У меня Были слова что есть хорошая основа)
Ну ладно.  Нет так нет.

Rumata:

--- Цитата: Skay от 12 Август 2018, 21:56:32 ---есть хорошая основа
--- Конец цитаты ---
И что толку от этой основы, если она не для этой задачи? Железо там избыточно, для данного случая многократно. Там Altera EPM3032A плюс ARM Cortex M3 STM32F103. И никакого "допиливать" тут не будет, ибо там задачи совершенно другие. Надо будет всё делать с нуля.

demolition.nick:

--- Цитата: Rumata от 12 Август 2018, 21:48:53 ---Единственно, я бы не стал привязываться к Адурине. Борды, шилды, скетчи - это конечно, здорово, но даже самая мелкая Адуринка для встраивания в портативку великовата. Есть смысл смотреть в сторону непосредственного программирования AVR. Там, небось, и ATtiny хватит, главное 17 линий GPIO.

--- Конец цитаты ---
Я собственно это и подразумевал. Даже в самой мелкой ардуинке есть USB-TTL, стабилизатор напряжения и куча штырьков. В моём случае всё это не нужно.

Подойдём к вопросу с другой стороны. Все альтернативные вприанты мне известны и в данной теме не интересны. Готовых решений как я понял нет. Чтоб самому написать скетч, нужно хорошо понимать работу джоя. Раньше статью находил про устройство и сигналы сеговских джоев, щас найти не могу. Мб кто поделится?

megavolt85:

--- Цитата: demolition.nick от 12 Август 2018, 22:26:22 ---Я собственно это и подразумевал.
--- Конец цитаты ---

всё бы ничего, только посмотри что у AVR есть со столькими свободными GPIO и ты сам вернёшься к выпиливанию капли из джоя
а так уверенно я говорю потому что твоя идея пришла мне в голову ещё тогда, когда ты только заикнулся про микрухи джоев для своей портативке в теме про MD350. я ещё тогда прикинул как это будет выглядеть в микрике, посмотрел продукцию atmel'a и взвесил все за и против  ;)

Rumata:

--- Цитата: megavolt85 от 12 Август 2018, 22:37:06 ---только посмотри что у AVR есть со столькими свободными GPIO
--- Конец цитаты ---
А что есть? o_0 Вот ATtiny2313, 18 GPIO.

megavolt85:

--- Цитата: Rumata от 12 Август 2018, 22:49:52 ---ATtiny2313, 18 GPIO.
--- Конец цитаты ---

где? на первой странице даташита?
пока пишешь код в теории, то вроде всё ажурно, а как начинаешь гонять в железе, то понимаешь что внутренний осцилятор не удовлетворяет требованиям, особенно когда надо использовать прерывания по 20 микросекунд, приходится вешать внешний, вот уже минус две ноги.
это только пример с осцилятором, а таких подводных камней валом, в итоге требование в 17 GPIO выльется в то, что  кнопки прийдётся разводить на разные порты и всё в таком духе

Rumata:
И что там такого устрашающего на первой станице?
И зачем нам прерывания по 20 мкс, если опрос идёт с периодом 20 мс?
Ну собственно хорошо, берём ATmega8, 23 GPIO. Тоже мало?

demolition.nick:

--- Цитата: megavolt85 от 12 Август 2018, 22:37:06 ---всё бы ничего, только посмотри что у AVR есть со столькими свободными GPIO и ты сам вернёшься к выпиливанию капли из джоя
а так уверенно я говорю потому что твоя идея пришла мне в голову ещё тогда, когда ты только заикнулся про микрухи джоев для своей портативке в теме про MD350. я ещё тогда прикинул как это будет выглядеть в микрике, посмотрел продукцию atmel'a и взвесил все за и против  ;)

--- Конец цитаты ---
И какие "против"? Я могу повторить всё что писал выше.

Добавлено позже:
Валяются у меня 2 платы с Atmega16

megavolt85:

--- Цитата: Rumata от 12 Август 2018, 23:55:15 ---И зачем нам прерывания по 20 мкс
--- Конец цитаты ---

потому что джой шестикнопочный и сразу после прерывания по низкому уровню SEL нужно заводить таймер на 20-25 мкс, если за это время не прелетит прерывание по SEL, то работаем в режиме трёх кнопочного


--- Цитата: Rumata от 12 Август 2018, 23:55:15 ---ATmega8, 23 GPIO. Тоже мало?
--- Конец цитаты ---

может и достаточно, но не рентабельно, рублей 80 мега + кварц + керамика, а джой 135 стоит


--- Цитата: demolition.nick от 13 Август 2018, 00:09:33 ---И какие "против"?
--- Конец цитаты ---

цена + размер = неоправданное создание проблем для себя самого

Rumata:

--- Цитата: megavolt85 от 13 Август 2018, 00:26:17 ---может и достаточно, но не рентабельно, рублей 80 мега + кварц + керамика, а джой 135 стоит
--- Конец цитаты ---
Блин, ну автор же давно озвучил свои условия.

--- Цитата: megavolt85 от 13 Август 2018, 00:26:17 ---неоправданное создание проблем для себя самого
--- Конец цитаты ---
Ну тут лучшее решение - вообще ничего не делать :lol:


--- Цитата: megavolt85 от 13 Август 2018, 00:26:17 ---потому что джой шестикнопочный и сразу после прерывания по низкому уровню SEL нужно заводить таймер на 20-25 мкс, если за это время не прелетит прерывание по SEL, то работаем в режиме трёх кнопочного
--- Конец цитаты ---
Я, видимо, что-то не улавливаю. Определение режима делается один раз. Или нет?

megavolt85:

--- Цитата: Rumata от 13 Август 2018, 00:44:02 ---Определение режима делается один раз. Или нет?
--- Конец цитаты ---

тут как бы не совсем определение режима.

SET_L_1: D0 = вверх, D1 = вниз, D2 = 0,        D3 = 0 ,         D4 = A, D5 = START
SET_H_1: D0 = вверх, D1 = вниз, D2 = влево, D3 = вправо, D4 = B, D5 = C
SET_L_2: D0 = 0,        D1 = 0,      D2 = 0,        D3 = 0,          D4 = A, D5 = START
SET_H_2: D0 = Z,       D1 = Y,       D2 = X,        D3 = MODE,   D4 = 1, D5 = 1
SET_L_3: D0 = 1,       D1 = 1,       D2 = 1,        D3 = 1,          D4 = A, D5 = START

1) начало цикла
2) пока SEL в высоком уровне выводим SET_H_1 и ждём прерывания по SEL
3) если прилитело прерывание по низкому уровню SEL выводим SET_L_1
4) ждём 20 микросекунд, если SEL перешёл в высокий уровень, то выводим SET_H_1, иначе ждём пока SEL в низком уровне и переходим в начало
5) ждём 20 миллисекунд, если SEL перешёл в низкий уровень, то выводим SET_L_1, иначе переходим в начало
6) ждём 20 микросекунд, если SEL перешёл в высокий уровень, то выводим SET_H_1, иначе ждём пока SEL в низком уровне и переходим в начало
7) ждём 20 миллисекунд, если SEL перешёл в низкий уровень, то выводим SET_L_2, иначе переходим в начало
8) ждём 20 микросекунд, если SEL перешёл в высокий уровень, то выводим SET_H_2, иначе ждём пока SEL в низком уровне и переходим в начало
9) ждём 20 миллисекунд, если SEL перешёл в низкий уровень, то выводим SET_L_3 , иначе переходим в начало
10) ждём перехода SEL в высокий уровень и возвращаемся в начало

ну собственно я уже и расписал всю логику программы, осталось перевести это в код  :lol:
единственно надо будет поиграть ожиданием в 20 микросекунд, думаю надо начинать с 30 мкс

Skay:

--- Цитата: demolition.nick от 12 Август 2018, 22:26:22 ---Раньше статью находил про устройство и сигналы сеговских джоев, щас найти не могу. Мб кто поделится?

--- Конец цитаты ---
Ты про эту  ? http://www.emu-land.net/forum/index.php/topic,8876.msg1327061.html#msg1327061

HardWareMan:
Ммм. Теперь я понимаю причину несовместимости некоторых китайских 6-ти кнопочных джойстиков с некоторыми 3х кнопочными играми (вроде того же Golden Axe). Оригинальный или качественный клон 6ти кнопочного считает импульсы для переключения на расширенные кнопки, а некачественный клон тупо имеет одновибратор задержки от первого импульса. Таким образом, Если на оригинальный или качественный клон подать длинный импульс SYN то они всё равно отдадут базовые кнопки, а если на некачественный - то он через некоторое время после активации вместо базовых кнопок начнет отдавать расширенные. Замечу, что в рекомендации программирования заявлены установки программных задержек при управлении сигналом SYN (обычна пара-тройка команд NOP, или производить другие необходимые вычисления).

demolition.nick:
Да уж. Врядли я это осилю

Rumata:
Да, ещё один момент. Попадались китайские джойстики, которые в игре определялись как 3-кнопочные.
И ещё. Кнопка MODE. Удерживаемая при старте системы она должна однозначно перевести джойстик в 3-кнопочный режим, даже если игра в состоянии работать с 6-кнопочным.

HardWareMan:

--- Цитата: Rumata от 13 Август 2018, 21:39:03 ---И ещё. Кнопка MODE. Удерживаемая при старте системы она должна однозначно перевести джойстик в 3-кнопочный режим, даже если игра в состоянии работать с 6-кнопочным.

--- Конец цитаты ---
Уточнение: при подаче питания на джой. Т.е., можно просто перетыкнуть с зажатым MODE. Но производитель запрещает перетыкать на включенную, и мы безоговорочно придерживаемся этих правил, правда?

Rumata:
Ну следствия перетыкания я видел. Выбитая линия порта. Что на клонах, что на оригиналах (на оригиналах интереснее :D)
А так - да, правила созданы для того, чтобы их нарушать  :lol:

Добавлено позже:
Да, ещё есть "горячее" перетыкание картриджей в поисках ништяков. Производитель тоже запрещает, но мы же не ищем лёгких путей, правда?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии