Вход

Просмотр полной версии : ZX Remote GamePad



Страницы : [1] 2

zx-kit
15.01.2014, 06:12
ОПРОС (концепция описана ниже):

Давайте обсудим разные способы управления в играх без использования аналоговых стиков в геймпадах.
Для спектрумовских игр на реале или в эмуляторе. Например, в играх "OLLI&LISSA", "RENEGADE".
Пока отложим рассматривать вопросы расстояния до компьютера и наличие проводов/радиоканала.
Обсуждаем только удобство расположения пальцев при управлении игровым объектом.

1. Клавиатура на столе. Раскладка типа "QAOPM":
влево - правый указательный палец
вправо - правый средний палец
вверх - левый средний палец
вниз - левый указательный палец
огонь - правый большой палец


2. Клавиатура на столе. Раскладка типа "ASDW + кнопка огонь":
влево - левый безымянный
вправо - левый указательный
вверх и вниз - левый средний
огонь - правый указательный


3. Клавиатура на столе. Раскладка типа "стрелочный курсор + кнопка огонь":
влево - правый указательный
вправо - левый безымянный
вверх и вниз - правый средний
огонь - левый указательный


4. "ZX-KEYPAD" на столе. (Вариант конструктива в виде двух соединенных проводом коробочек по 6 механических кнопок).
Три предыдущих варианта раскладок на выбор + перепрограммируемые кнопки.

http://s018.radikal.ru/i515/1401/1c/fcd5d22796bbt.jpg (http://s018.radikal.ru/i515/1401/1c/fcd5d22796bb.png)


5. Геймпад "SEGA" на столе. "Крестик (D-pad)+кнопка огонь":

http://s006.radikal.ru/i213/1401/3f/3f701619fdfbt.jpg (http://s006.radikal.ru/i213/1401/3f/3f701619fdfb.jpg)

влево - левый средний
вправо - левый указательный
вверх - левый средний
вниз - правый большой
огонь - правый указательный


6. Геймпад "SEGA" в руках. "Крестик (D-pad)+кнопка огонь":

http://s019.radikal.ru/i623/1401/fb/28245c5434c6t.jpg (http://s019.radikal.ru/i623/1401/fb/28245c5434c6.jpg)

влево - левый большой
вправо - левый большой
вверх - левый большой
вниз - левый большой
огонь - правый большой


7. Геймпад "PS3" и его аналоги в руках. "Крестик (D-pad)+кнопка огонь":
http://s003.radikal.ru/i204/1401/df/b71a45234055t.jpg (http://s003.radikal.ru/i204/1401/df/b71a45234055.jpg)
влево - левый большой
вправо - левый большой
вверх - левый большой
вниз - левый большой
огонь - правый указательный


8. Геймпад "Xbox 360" и его аналоги в руках. "Крестик (D-pad)+кнопка огонь":

http://s020.radikal.ru/i720/1401/b0/3037b6fb799at.jpg (http://s020.radikal.ru/i720/1401/b0/3037b6fb799a.jpg)

влево - левый большой
вправо - левый большой
вверх - левый большой
вниз - левый большой
огонь - правый указательный


На мой взгляд - реагирование на обстановку в игре для Спектрума более четкое, когда для каждой кнопки используется отдельный палец. Этому условию соответствуют варианты 1 и 4.

А как считаете вы ? Прошу написать, какие варианты управления вам более удобны.

-----------------------------------------------------------------------------
КОНЦЕПЦИЯ "REMOTE ZX-KEYPAD" (www.zxkot.ru)

Текущие варианты подключения компьютеров к телевизору обладают рядом недостатков. Даже если компьютер маленький типа Speccy2010 - он всё равно занимает всю комнату! Обычно между телевизором и креслом/диваном ставится табуретка, на которую ставится компьютер и подключается к блоку питания и телевизору. Также к компьютеру подключаются PS/2 клавиатура и два SEGA-джойстика. Человек, который собирается поиграть, садится на диван напротив телевизора, берет в руки джойстик и кладет рядом клавиатуру. На клавиатуре нажимает клавиши загрузки, выбора типа джойстика, а на джойстике играет. Всё происходит на весу и не очень удобно. Если кто-то неаккуратно захочет пройти через комнату между телевизором и диваном - может запнуться о висящие кабели и произойдет поломка компьютера, джойстика или обрыв кабеля до телевизора.

Для повышения удоства общения с нашим ретро-компьютером придуман новый способ управления и компоновки компьютера:


Компьютер устанавливается близко к телевизору и подключается к нему и блоку питания.
Человек садится на расстоянии 2-5 метров от телевизора и кладет перед собой ZX Remote KEYPAD на книгу, табуретку или столик.
KEYPAD соединяется с компьютером кабелем и заменяет собой клавиатуру и джойстик для игры.
В KEYPADе предусмотрена возможность выбора типа джойстика, перепрограммирование кнопок, и макросы сброса компьютера и ввода команд загрузки игры.
На KEYPADе также предусмотрено гнездо и схема загрузки игры с MP3-плеера или подобного источника звука.
Первый вариант конструкции будет представлять небольшой корпус, в котором установлены LCD-индикатор, 9 кнопок CHERRY с позолоченными контактами, схема на микроконтроллере ATMEGA или STM32. Второй вариант - в большом плоском корпусе два кнопочных блока по 6 кнопок, LCD и две круглые кнопки управления режимами. Третий вариант - два небольших корпуса по 6 кнопок, в одном LCD, в другом - две круглые кнопки. Эскизы приведены ниже.
Одна из 9-ти кнопок - управляющая кнопка SELECT. С помощью нее выбирается тип джойстика, перепрограммируются кнопки и запускаются команды загрузки.
Также нажатие кнопки SELECT позволит ввести любую из 40 кнопок клавиатуры, перемещая курсор по LCD.
При выборе джойстика 4 кнопки геймпада, кроме курсора и SELECT, становятся кнопками джойстика ОГОНЬ. Можно выбрать одну из четырех для стрельбы, а остальные 3 перепрограммировать на другие кнопки клавиатуры. Это позволяет управлять курсором на выбор - левой или правой рукой.


Таким образом, происходит освобождение места в комнате между телевизором и игроком. Соединяющий кабель можно проложить под ковром, тогда об него не будут запинаться и рвать. Играть становится удобнее. Игрок избавлен от необходимости держать рядом клавиатуру и переключать механически разъемы джойстиков.

ZX Remote GamePad находится в процессе разработки будет распространяться через сайт www.zxkit.ru


Прошу обсудить новую концепцию ZX-Spectruma.

(http://www.zxkit.ru)[/URL]Эскизы конструктива:

[URL=http://s017.radikal.ru/i423/1401/54/22186d162b6c.png]http://s017.radikal.ru/i423/1401/54/22186d162b6ct.jpg (http://www.zxkit.ru) http://s019.radikal.ru/i643/1401/68/3a9ba85db655t.jpg (http://s019.radikal.ru/i643/1401/68/3a9ba85db655.png) http://s018.radikal.ru/i515/1401/1c/fcd5d22796bbt.jpg (http://s018.radikal.ru/i515/1401/1c/fcd5d22796bb.png)

jerri
15.01.2014, 10:05
Будет ли предложен концепт арт?

zx-kit
15.01.2014, 11:04
Будет ли предложен концепт арт?
Эскиз геймпада:

http://s017.radikal.ru/i423/1401/54/22186d162b6ct.jpg (http://s017.radikal.ru/i423/1401/54/22186d162b6c.png)

Кабель длиной около 5 м. На конце 2 разъема DB-9 - на плату декодера и кемпстон джойстик. В корпусе компьютера с портом FЕ устанавливается декодер.

KeKc
15.01.2014, 11:22
Я, кстати, тоже думаю сделать что-то подобное. Только чтоб совсем уйти от кучи "лишних" проводов, вместо телевизора буду использовать TFT LCD от Sony PSP. В качестве источника питания будет АКБ от ноута, например. Таким образом получится компактный компьютер, который можно будет использовать почти везде, где только захочется.

jerri
15.01.2014, 11:29
Эскиз геймпада:

http://s017.radikal.ru/i423/1401/54/22186d162b6ct.jpg (http://s017.radikal.ru/i423/1401/54/22186d162b6c.png)

Кабель длиной около 5 м. На конце 2 разъема DB-9 - на плату декодера и кемпстон джойстик. В корпусе компьютера с портом FЕ устанавливается декодер.

Кабель плохо... В идеале кабеля быть не должно.

scl^mc
15.01.2014, 12:24
Эскиз геймпада:
имхо, нечто, напоминающее по форме или хотя бы по расположению кнопок джойстик от той же денди или ту же psp было бы более предпочтительным

Дмитрий
15.01.2014, 12:44
джойстик от той же денди или ту же psp
Поддерживаю, ибо двумя руками предложенным манипулятором будет играть неудобно - пальцы будут перекручиваться! Огнекнопки и курсор должны быть разнесены в разные строны, под разные руки.

---------- Post added at 10:41 ---------- Previous post was at 10:39 ----------

хотя разнеся кнопки под разные руки наткнемся на другую проблему - игры, требующие нажать одновременно комбинации "вверх-всторону" идут лесом :(

---------- Post added at 10:44 ---------- Previous post was at 10:41 ----------

джойстик должен быть не просто 4мя кнопками, а джойстиком... вроде бы в китае встречались в продаже джойстики...

Hacker VBI
15.01.2014, 12:49
Дмитрий, лучше кнопки, но курсор справа, стрельбы/другое слева
более эргономично разместить. сейчас расположение отвратительное, инженерное))
джойстик выходит настольным, а это тоже неплохо.

perestoronin
15.01.2014, 16:02
безпроводной может сделать ?

zx-kit
15.01.2014, 16:24
Дмитрий, лучше кнопки, но курсор справа, стрельбы/другое слева

Я считаю, что кнопки в играх для Speccy лучше, так как в них нужна большая точность - часто любая ошибка и сразу смерть.


более эргономично разместить. сейчас расположение отвратительное, инженерное))

Это была попытка сделать геймпад минимального размера. Можно взять корпус побольше (220х160х30 мм) и сделать два поля кнопок по 6 шт.


джойстик выходит настольным, а это тоже неплохо.

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

Ну а основная идея - что компьютер нужно подвинуть поближе к телевизору, а человека - к дивану вам понравилась ?

---------- Post added at 17:24 ---------- Previous post was at 17:23 ----------


Кабель плохо... В идеале кабеля быть не должно.

Кабель экономит деньги на батарейки, дополнительные детали и внешнее освещение для индикатора. К тому же он не дорогой.

Дмитрий
15.01.2014, 16:41
К тому же он не дорогой.
Но увы не решает проблему:

Если кто-то неаккуратно захочет пройти через комнату между телевизором и диваном - может произойти поломка компьютера, джойстика или обрыв кабеля

CLR
15.01.2014, 17:09
Я как раз недавно начал обдумывать концепцию беспроводного геймпада для спектрум-атари-комодор-амиги. Чтобы схема передатчика помещалась в корпус геймпада от Сеги, а приемник в корпус разъема DB9. Хочу сделать прототип на базе такой схемы: http://radiokot.ru/circuit/digital/game/20/
Только к ней надо добавить еще аккумулятор лионный и цепь зарядки от, скажем, миниUSB.

solegstar
15.01.2014, 18:03
можно попробовать использовать уже имеющиеся разработки для SEGA - http://telekit.ru/price/07259.htm . Тем более опыт подключения SEGA джойстиков уже имеется...

dosikus
15.01.2014, 20:35
схема на микроконтроллере ATMEGA.

Я извиняюсь конечно, но почему делать на AVR которое под подобное совершенно не подходит ?
Дорого, уныло устарело и вообще г. несусветное .
Дешевые, мощные STM32F05xx или STM32F03xx пойдут куда лучше , ну и плюс nRF24xxx или синезуб модули.
В gamepad контроллер + радиомодуль, на спекки так же . Или же обычные wireless клава +мышь - и на стороне спеки STM32 c USB HOST с подключенным USB приемником ...

---------- Post added at 20:35 ---------- Previous post was at 20:29 ----------


Хочу сделать прототип на базе такой схемы: http://radiokot.ru/circuit/digital/game/20/


Поменьше читайте радиокота , там еще не то насоветуют .
nRF24xxx , жрут немного, обмен обычный SPI ...

goodboy
15.01.2014, 22:21
Кабель экономит деньги на батарейки, дополнительные детали и внешнее освещение для индикатора.
я достаточно долго юзал вот такие ИК джойстики. в каждом 4ре мизинчиковых батарейки - хватало не-надолго.
http://mlu-s1-p.mlstatic.com/controles-inalambricos-quickshot-qs-127-sega-msx-atari-1715-MLU3785329907_022013-F.jpg

zx-kit
15.01.2014, 22:59
Я извиняюсь конечно, но почему делать на AVR которое под подобное совершенно не подходит ?
Дорого, уныло устарело и вообще г. несусветное .

В основном - легкость смены прошивок. У всех есть для AVR программатор.


Дешевые, мощные STM32F05xx или STM32F03xx пойдут куда лучше

Возможно, но у нас задача - сканировать несколько кнопок, преобразовать в 40 бит состояния клавиатуры + 5 бит KEMPSTON-джойстика + несколько управляющих компьютером сигналов и передать эти биты через UART. С этим любой контроллер справится.



, ну и плюс nRF24xxx или синезуб модули.
В gamepad контроллер + радиомодуль, на спекки так же . Или же обычные wireless клава +мышь - и на стороне спеки STM32 c USB HOST с подключенным USB приемником ...

Хотелось бы сделать простой выбор кнопок курсором на LCD с подсветкой, без заморочек с батарейками и радиомодулями.
Сначала можно сделать простую версию. А на будущее, конечно, ваша информация пригодится .

---------- Post added at 23:59 ---------- Previous post was at 23:50 ----------


Но увы не решает проблему:
Если кто-то неаккуратно захочет пройти через комнату между телевизором и диваном - может произойти поломка компьютера, джойстика или обрыв кабеля
Кабель можно спрятать под ковер, проложить вдоль стенки и т.п. К тому же один кабель, лежащий на полу легче перешагнуть, чем 2-3 натянутых кабеля от клавиатуры и джойстика.
Конечно лучше USB-клавы и мышки, но это пока только в новых клонах будет. А к старым компьютерам можно через кабель.

Во сколько обойдется изготовление преобразователя USB клавы - сигналы как у механической клавиатуры ?

dosikus
15.01.2014, 23:03
В основном - легкость смены прошивок. У всех есть для AVR программатор.
Для STM32 вообще программатор как таковой не нужен - USB(RS232)<>UART
адаптер.




Возможно, но у нас задача - сканировать несколько кнопок, преобразовать в 40 бит состояния клавиатуры + 5 бит KEMPSTON-джойстика + несколько управляющих компьютером сигналов и передать эти биты через UART. С этим любой контроллер справится.

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

И все же уйти от проводов и прикрутить радиоканал , уже готовые модули стоят не так уж и дорого http://www.aliexpress.com/item/2pcs-lot-Free-shipping-NRF24L01-wireless-data-transmission-module-2-4G-the-NRF24L01-upgrade-version-New/1294701465.html

zx-kit
15.01.2014, 23:10
Для STM32 вообще программатор как таковой не нужен - USB(RS232)<>UART
адаптер.

Это хорошо.


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

Пригодилась бы программаная поддержка, так как я с армами не знаком. Успеет АРМ за время чтения Z80 кода из порта клавиатуры сформировать код данных из произвольного старшего байта и 40-битного (8 байтов) состояния клавиатуры. А для чего вместо одной кнопки нажимать две? Курсор ?

Одно время я планировал сделать переключение на геймпаде только стандатных джойстиков, но людям требуется также и возможность перепрограммирования кнопок. Также по индикатору удобнее нажимать произвольную кнопку на клавиатуре. В двух строках индикатора влезет пол-клавиатуры. Стрелками можно передвигать вверх-вниз и влево-вправо и нажать нужную кнопку.

Индикатор должен быть с подсветкой, так как вечером без подсветки ничего не увидеть, а подсветка - это ток около 40-80 мА.

dosikus
15.01.2014, 23:14
Успеет АРМ за время чтения Z80 кода из порта клавиатуры сформировать код данных из произвольного старшего байта и 40-битного (8 байтов) состояния клавиатуры.
Все успеет.



А для чего вместо одной кнопки нажимать две? Курсор ?

Прыжок вправо или влево. Только наоборот, нажали одну на выходе получаем две .

zx-kit
15.01.2014, 23:20
Все успеет.

Нужно для старшего байта адреса проанализировать все 8 бит. И если бит 0, то добавить байт, соответствующий 5 кнопкам полу-ряда к результату по схеме И. Если бы с этим справился АРМ, тогда это избавило бы от набора регистров сдвига для формирования сигналов клавиатуры. Но регистры внушают больше доверия, так как у них результат получается мгновенно и параллельно. Вернее записывать в регистры сдвига можно медленно и последовательно, но на выход все сигналы записываются одновременно. В АРМе 40 битов приходили бы последовательно и в момент прерывания при чтении Z80 может быть какое-то промежуточное состояние кнопок между старым и новым.


Прыжок вправо или влево. Только наоборот, нажали одну на выходе получаем две .
То есть курсор должен быть как на цифровом поле справа у PC клавиатуры и диагональные кнопки имитировать две ? Я раньше это делал диодами...

Курсор удобнее как курсор на PC. Большая часть игроков на PC играет на клавиатуре подобным курсором, но в левой части (ASDW). На мой взгляд курсор в правой руке удобнее, чем в левой, и удобнее, чем на геймпаде от Сеги и других приставках.

dosikus
15.01.2014, 23:33
Я вообще-то имел ввиду только джойстик, но если надо заменить и клаву то и сие STM32 под силу .
Если я понимаю- ваша концепция :
модуль подключаемый к разъему клавиатуры и джойстика <- транспорт ( в вашем случае UART) <- модуль клавиатура + gamepad .

zx-kit
15.01.2014, 23:45
Я вообще-то имел ввиду только джойстик, но если надо заменить и клаву то и сие STM32 под силу .
Если я понимаю- ваша концепция :
модуль подключаемый к разъему клавиатуры и джойстика <- транспорт ( в вашем случае UART) <- модуль клавиатура + gamepad .
Да, модуль, устанавливаемый в корпус компьютера, формирует из полученных по проводам данным, сигналы как с обычной механической клавиатуры и кемпстон джойстика. Компьютер и не заметит, что человек сидит не рядом с ним, а на диване или в кресле. Данные можно передавать 3-4 раза за время отображения одного кадра на телевизоре.

Только геймпад заменяет и клавиатуру и основные виды джойстиков - для игр клавиатура теперь не нужна. Произвольную кнопку можно нажать с помощью выбора на LCD (2 строки по 12-16 символов + подсветка). Часто используемые кнопки можно будет запрограммировать на свободные кнопки геймпада. Без LCD это делать трудно. Макросы загрузки будут формировать сигнал сброса, а затем последовательность кнопок типа LOAD " " ENTER. Ну а для компьютеров без дисковода возможна загрузка с MP3-плеера, лежащего рядом. К компьютеру теперь подходить вообще не надо.

zx-kit
16.01.2014, 19:01
http://s019.radikal.ru/i643/1401/68/3a9ba85db655t.jpg (http://s019.radikal.ru/i643/1401/68/3a9ba85db655.png)

Новый эскиз геймпада. Для двух рук. После выбора типа джойстика при нажатии левой круглой кнопки оба курсора и кнопки со звездочками настроены на этот джойстик. Можно выбрать какой рукой управлять курсором, а какой кнопкой стрелять. Остальные кнопки можно перепрограммировать. Для этого нажать левую круглую кнопку, удерживая ее нажать перепрограммируемую кнопку, а затем курсором выбрать на LCD нужную кнопку. После нажатия одной из звездочек кнопка запрограммируется.

Правая круглая кнопка - для выбора команды.

CLR
16.01.2014, 19:46
Честно говоря, не совсем понимаю смысл концепта. Сидеть за пару метров от телевизора большой диагонали с шлангом от этого пада до компьютера?
Ежели сидеть далеко от телевизора небольшой диагонали то элементарно не будет видно текстов. Судя по эскизам геймпада он жутко неэргономичен. Может, у автора нет опыта общения с действительно эргономичными геймпадами типа дуалшока2-3 или решений типа Thrustmaster? Понимаю, что геймпад анатомически адаптированной формы много сложнее и дороже при массовом производстве, нежели прямоугольная коробка.
Вот еще вопрос: эту конструкцию придется держать на коленях или на дополнительном столике, упираясь обеими руками в клавиши сверху? Или же возможен вариант удерживания контроллера на весу при управлении большими пальцами?
Не хочу никого обидеть, но конструкция в своем текущем состоянии на мой личный взгляд будет крайне неудобна в эксплуатации.
Просто я знаком со многими весьма удобными в эксплуатации джойстиками и геймпадами и хорошо представляю, о чем говорю.


---------- Post added at 21:46 ---------- Previous post was at 21:43 ----------


Поменьше читайте радиокота , там еще не то насоветуют .
nRF24xxx , жрут немного, обмен обычный SPI ...

Несомненно лучше сколхозить на STM а еще лучше сразу на i7, гулять так гулять! :D

Что и где читать, я пожалуй сам разберусь, на коте мне никто и ничего не советовал, но спасибо за заботу :)

zx-kit
16.01.2014, 20:24
Честно говоря, не совсем понимаю смысл концепта. Сидеть за пару метров от телевизора большой диагонали с шлангом от этого пада до компьютера?

До телевизора должно быть не менее 1.5 м. Держать в руках джойстик или геймпад - неудобно. Большими пальцами стрелять - не удобно. Оригинальных спектрумовских джойстиков - не найти. Компьютер не должен мешаться между телевизором и игроком. Его проще поставить рядом, над или под телевизором. Через SCART можно подключить большинство клонов, но у него кабель короткий и толстый. А если компьютер будет стоять рядом с телевизором, этот кабель уже не будет мешать. Если компьтер соединяется с геймпадом тонким длинным кабелем - это удобно. 5 метров - это с запасом. Можно поставить геймпад и на стол перед монитором, если потребуется. Но на телевизоре изображение лучше и привычнее.


Ежели сидеть далеко от телевизора небольшой диагонали то элементарно не будет видно текстов. Судя по эскизам геймпада он жутко неэргономичен. Может, у автора нет опыта общения с действительно эргономичными геймпадами типа дуалшока2-3 или решений типа Thrustmaster? Понимаю, что геймпад анатомически адаптированной формы много сложнее и дороже при массовом производстве, нежели прямоугольная коробка.
Вот еще вопрос: эту конструкцию придется держать на коленях или на дополнительном столике, упираясь обеими руками в клавиши сверху? Или же возможен вариант удерживания контроллера на весу при управлении большими пальцами?
Не хочу никого обидеть, но конструкция в своем текущем состоянии на мой личный взгляд будет крайне неудобна в эксплуатации.
Просто я знаком со многими весьма удобными в эксплуатации джойстиками и геймпадами и хорошо представляю, о чем говорю.

Я предлагаю геймпад положить на колени или столик перед собой. Держать в руках не удобно. Геймпады все однотипные - управлять левой рукой. Кнопки резиновые. Откуда вообще взяли, что левой рукой играть удобнее ? Мне удобнее правой. Для геймпадов игры специальные, где не нужна така точность, как в играх на Спектруме. Если бы можно было сделать джойстик - сделал бы. Пока технологии не позволяют. Выбор корпусов тоже ограничен.

CLR
16.01.2014, 20:42
Держать в руках джойстик или геймпад - неудобно. Большими пальцами стрелять - не удобно.

Вот, о чем я и говорю. У вас просто нет опыта общения с эргономичными геймпадами. Расскажите, что держать в руках геймпад неудобно, например 155 миллионам пользователей PS2 либо ~80 миллионам пользователей xbox360 и примерно стольким же миллионам пользователям PS3, не говоря уже о миллионах пользователей необъятного парка остальных консолей.

Но о чем речь, если автору неудобно - следовательно, неудобно должно быть всем.


Откуда вообще взяли, что левой рукой играть удобнее ? Мне удобнее правой. Если бы можно было сделать джойстик - сдалал бы. Пока технологии не позволяют.

Удобнее всего играть обеими руками и устройством, которое лежит в руках наиудобнейшим способом.
Вы же пытаетесь, грубо говоря, просто отдалить кусок клавиатуры (с доп. функционалом) от компьютера на расстояние в полтора метра с болтающимся посредине проводом. Сидеть на диване, положив устройство на колени. Одумайтесь, пока не поздно :)

---------- Post added at 22:42 ---------- Previous post was at 22:36 ----------


может подумаем над подключением уже готовых девайсов? Мне тоже будет интересно подрубить один такой к U16 (http://zx.pk.ru/showpost.php?p=652698&postcount=437).

Вот кстати да, если на микроконтроллере сделать юсб стек (для многих достаточно развитых есть готовые юсб либы), а со стороны спектрума подключалось бы к портам стандартных джойстиков и клавиатуры, ну и некоторый функционал для переназначения клавиш спектрума на любые клавиши геймпада (там избыточных кнопок будет навалом), то вангую вполне коммерчески жизнеспособное изделие!

zx-kit
16.01.2014, 20:52
Если уж взялись делать, то уже что-то универсальное. Чтобы и к PC, или от PC можно было подключить. Не вижу проблемы для фанов подключить к примеру вот это - [1 (http://www.youtube.com/watch?v=aaRDcV1Ryr8)]. Думаю, что этот (http://www.razerzone.ru/product/gaming-controllers/sabertooth) мега игровой контроллер будет дешевле подрубить к любому спеку и не только, чем разработать костыли на шнурке.

Подключить тот геймпад с индикатором было бы хорошо. Только в отзывах про него написано, что через месяц ломается крестовина. А стоит он 3500 руб.
В принципе можно было бы подключить более дешевый проводной геймпад за 400-500 руб. к коробочке с USB-разъемом и LCD индикатором. А она подключается кабелем 5 м. к любому Спектруму с декодером.

Но на Спектруме с геймпадом играть - руки устанут. Механические кнопки - лучше !


zst, может подумаем над подключением уже готовых девайсов? Мне тоже будет интересно подрубить один такой к U16 (http://zx.pk.ru/showpost.php?p=652698&postcount=437).

Моя концепция дистанционного управления Спектрумом предлагает замену громоздкой клавиатуры на геймпад с возможностью перепрограммирования кнопок с помощью LCD. Для вашего нового компьютера можно сделать вот как:

1. Раз обычный геймпад подойдет для Спектрума - подключаете USB-геймпад, тут я вам помочь не могу. Могу предложить следующее. На бордере под активной частью экрана организуйте область, аналогичную индикатору LCD в моем геймпаде. При нажатии специальных кнопок выбора на геймпаде можно показывать на этом индикаторе список для выбора типа джойстика. При необходимости нажатия или перепрограммирования кнопок - отображать виртуальную клавиатуру с курсором для выбора.

2. Для питания вашего компьютера можно использовать разъем USB телевизора, в который обычно включают флешки для просмотра и записи фильмов.

dosikus
16.01.2014, 22:15
Несомненно лучше сколхозить на STM а еще лучше сразу на i7, гулять так

Без обид- подобное пишут люди далекие от МК , знаешь сколько я подобных реплик отшил уже ????
Расскажи мне как ты на своем девайсе (ссылка на котов) собираешь контролировать пакеты ...:biggrin:

Кстати nRF24xx это совсем не STM32 ... :biggrin: :biggrin:
Это всего лишь транспорт, но в миллион раз лучше девайса с котов...


[/COLOR]

Моя концепция дистанционного управления Спектрумом предлагает замену громоздкой клавиатуры на геймпад с возможностью перепрограммирования кнопок с помощью LCD.

А обязателен 2х строчник ? Снова же -жрет как слон, тяжелый,габаритный, куча пинов задействована.
Не пойдет 7ми сегментный LCD на 9-8 символов ?

zx-kit
16.01.2014, 22:19
А обязателен 2х строчник ? Снова же -жрет как слон, тяжелый,габаритный, куча пинов задействована.
Не пойдет 7ми сегментный LCD на 9-8 символов ?
Нужно такой индикатор, чтобы можно было отобразить аналог клавиатуры ZX SPECTRUM-a: 4 ряда по 10 символов. Нужен ЖК алфавитно-цифровой с подсветкой или OLED или графический.

Кстати на одном из геймпадов RAZER ONZA кабель 4.5 метра (http://market.yandex.ru/model-spec.xml?modelid=7348923&hid=91117). Говорят за счет этого время отклика меньше, чем у оригинальноно микрософтовского беспроводного. Также проводной легче, чем на батарейках.

Одним большим пальцем левой руки управлять 4-мя кнопками курсора - это ужас!

Никто не пробовал подключать к Speccy аналоговый джойстик от PSP ? Но опять же - кнопками управлять точнее.

dosikus
16.01.2014, 22:34
Нужно такой индикатор, чтобы можно было отобразить аналог клавиатуры ZX Spectum-a: 4 ряда по 10 символов. Нужен ЖК с подсветкой алфавитно-цифровой или графический или OLED.


OLED дорого , TFT мелкие (1.8") так же дешевле 200р. не встречал .
Разве только старые монохром :
Дисплей Nokia 1112, 1110i
http://www.sv72.ru/parts/9058-displei_nokia/displei_nokia_1112_1110i
Там и подсветка есть и функционал подходит.
SPI интерфейс AVR тянет - делал уже .
А если дешевле и чтоб меньше жрало :
TIC33M
TIC55M
http://www.trt.ru/products/tic/segment.htm
Но они 7ми сегментники.

zx-kit
16.01.2014, 22:39
OLED дорого , TFT мелкие (1.8") так же дешевле 200р. не встречал .
Разве только старые монохром :
Дисплей Nokia 1112, 1110i
http://www.sv72.ru/parts/9058-displei_nokia/displei_nokia_1112_1110i
Там и подсветка есть и функционал подходит.
SPI интерфейс AVR тянет - делал уже .
А если дешевле и чтоб меньше жрало :
TIC33M
TIC55M
http://www.trt.ru/products/tic/segment.htm
Но они 7ми сегментники.

LCD двухстрочный оптом можно купить рублей за 150. А по габаритам, если под две руки - не важно. И паять легче.

Если сделать дешевле, то это вместо самодельного геймпада из кнопок с индикатором можно взять дешевую PS/2 клавиатуру за 200 руб. Кнопки конечно не механические... Но она готовая.

К ней только удлиннитель и плату на микроконтроллере в корпус компьютера. Микроконтроллер с регистрами будут переназначать кнопки курсора и другие для выбора типа джойстика по комбинациям клавиш.

Надо такую плату сделать в LENINGRAD-2012 вместо KEYB&SINC !

dosikus
16.01.2014, 22:59
Кстати я с CLR согласен , даже джойстик от NES удобней намного огрызка от клавы . Сегодня подобный, без переделки, подключил к атари , завтра попробую к спекки. Ну а не будет лень подрублю радиоканал ...

zx-kit
17.01.2014, 06:17
Кстати я с CLR согласен , даже джойстик от NES удобней намного огрызка от клавы . Сегодня подобный, без переделки, подключил к атари , завтра попробую к спекки. Ну а не будет лень подрублю радиоканал ...

Я вот такой от МАГИСТР 16 БИТ подключал без переделки:
http://s018.radikal.ru/i520/1401/a4/736be43dff9ft.jpg (http://s018.radikal.ru/i520/1401/a4/736be43dff9f.jpg)

У сына на PC есть геймпад USB:
http://s019.radikal.ru/i603/1401/0f/363320e4d43ct.jpg (http://s019.radikal.ru/i603/1401/0f/363320e4d43c.jpg)

Но мы то раньше играли на клавиатуре или таком джойстике:
http://s019.radikal.ru/i605/1401/a1/90328e7bd0dat.jpg (http://s019.radikal.ru/i605/1401/a1/90328e7bd0da.jpg)

Я, наверно, буду делать на механических кнопках по первому эскизу:
http://s020.radikal.ru/i706/1401/2d/e54e05e94086t.jpg (http://s020.radikal.ru/i706/1401/2d/e54e05e94086.png)

Может вместо трех квадратных кнопок будет 2 круглых. Название GamePad у большинства ассоциируется с определенной формой устройства. Надо назвать по-другому - не клавиатура, не джойстик, не геймпад. Игровой манипулятор на кнопках имеет право на жизнь. Название подходящее нужно. Это для тех, кому подойдет. Я же не массовым производством занимаюсь. Кнопочный модуль, клавиатурный модуль, кнопочный пульт...

dosikus
17.01.2014, 08:17
Надо назвать по-другому - не клавиатура, не джойстик, не геймпад.

Назвать как есть - keypad ...

zx-kit
17.01.2014, 10:42
Назвать как есть - keypad ...

Да, KeyPad - более подходящее название. Можно разделить кейпад на два корпуса по 6 кнопок. В одном будет еще микроконтроллер, LCD, а в другом - две круглые кнопки выбора режимов. Это позволит расположить кнопки левой и правой руки на удобном расстоянии без жесткой привязки в большом корпусе.

Пока остается возможность установки на столе перед монитором или на расстоянии нескольких метров от компьютера. Соединение тонким кабелем.

CLR
17.01.2014, 17:56
Без обид- подобное пишут люди далекие от МК , знаешь сколько я подобных реплик отшил уже ????

Если сразу было непонятно - поясняю: это была такая смешная шутка юмора. Просто навязчивость, с которой ты стал навяливать STM32 была весьма забавной.
Не знаю кто там далек, а кто близок к МК или наоборот, но любому толковому электронщику, а тем более работающему с коммерческими изделиями должно быть понятно, что не нужно использовать STM там, где вполне справится AVR, так же как и не нужно использовать AVR там, где вполне справится PIC, да и не стоит использовать PIC там, где достаточно мелкой логики.
zst весьма авторитетный в данных вопросах специалист, чтобы сразу оценить необходимые ресурсы и выбрать оптимально подходящий контроллер.


Расскажи мне как ты на своем девайсе (ссылка на котов) собираешь контролировать пакеты ...:biggrin:

Кстати nRF24xx это совсем не STM32 ... :biggrin: :biggrin:
Это всего лишь транспорт, но в миллион раз лучше девайса с котов...


Задача моего будущего девайса - удаленно нажимать 5 кнопок (не блокируя друг друга). Какие еще пакеты? :) Там лежит схема практически готового девайса, который прекрасно справится с такой задачей. Прошивка есть, все отлаженное и готовое к эксплуатации. Но как же! Есть же волшебная nRF24xx которая в миллион раз лучше чегото там и к которой придется писать код и мастерить схему, отлаживать ее, это же куда спортивнее, чем взять полностью готовую и отлаженную схему.

---------- Post added at 19:56 ---------- Previous post was at 19:53 ----------


Кстати я с CLR согласен , даже джойстик от NES удобней намного огрызка от клавы . Сегодня подобный, без переделки, подключил к атари , завтра попробую к спекки. Ну а не будет лень подрублю радиоканал ...

Боюсь, что именно в джойстиках от NES используется некий последовательный протокол, а в шнуре идут всего 4 провода, посему без дешифрации такой джойстик в атари ну ни как не включится. Не так давно брал подобный для переделки, и обнаружив 4 провода, успел вернуть в магазин.

Насчет огрызка от клавы - это да, но автору завсегда виднее, как надо делать дистанционные контроллеры, тут медицина бессильна :)

zst, предлагаю сделать опрос - кто считает, что удобнее в качестве контроллера - джойстик формы "дуалшок" либо часть клавиатуры, ну и другие распространенные типы игровых контроллеров.

psb
17.01.2014, 18:46
но любому толковому электронщику, а тем более работающему с коммерческими изделиями должно быть понятно, что не нужно использовать STM там, где вполне справится AVR, так же как и не нужно использовать AVR там, где вполне справится PIC
серьезно что ли??

CLR
17.01.2014, 18:53
серьезно что ли??

Конечно нет, все надо делать исключительно на STM32, даже выключатель света в комнате и кнопку дверного звонка.

ZEK
17.01.2014, 19:12
даже выключатель света в комнате и кнопку дверного звонка.
ну если дешевле, доступней, более развитые средства разработки, отладки, программирования, прошивки, не вижу причин почему бы и нет, я в выключатели именно STM32 и воткнул

CLR
17.01.2014, 19:20
Если дешевле обычной кнопки, то действительно, почему не?

ZEK
17.01.2014, 19:31
Если дешевле обычной кнопки, то действительно, почему не?
ну выключатель за 80грн, контролер за 7грн, так что дешевле

zx-kit
17.01.2014, 20:18
Новый эскиз конструкции пульта управления "ZX-KEYPAD":

http://s018.radikal.ru/i515/1401/1c/fcd5d22796bbt.jpg (http://s018.radikal.ru/i515/1401/1c/fcd5d22796bb.png)

В первом посте (http://www.zx.pk.ru/showthread.php?t=22509) сделал опрос - удобное расположение пальцев для спектрумовских игр.

dosikus
17.01.2014, 20:27
CLR, спасибо поржал от души. То есть юзать STM ты категорически запрещаешь? :biggrin: пЫк и AVR forever ?



Боюсь, что именно в джойстиках от NES используется некий последовательный протокол, а в шнуре идут всего 4 провода, посему без дешифрации такой джойстик в атари ну ни как не включится. Не так давно брал подобный для переделки, и обнаружив 4 провода, успел вернуть в магазин.


Угу, там весьма засекреченный протокол - последовательный регистр с защелкой . :biggrin:
Ты уж извини, не послушался я тебя ,
заюзал STM32F030F4 20 TSOP 16руб. штучка . :biggrin:
А а считывание , так же извини , не ногодрыгом а аппаратный SPI на 16 бит , ибо на очереди джойстик от SNES и PS . Ну и радиоканал ...

CLR
17.01.2014, 21:42
CLR, спасибо поржал от души. То есть юзать STM ты категорически запрещаешь? :biggrin: пЫк и AVR forever ?

Ты опять ничего не понял. Если есть готовая отлаженная схема на пике, то на кой от нее отказываться и начинать все с нуля на STM? Слишком много свободного времени? Выбор контроллера зависит от многих факторов, как выше заметил zst, если на руках у людей дофига программаторов для авр и собственно, опыта работы с авр, то это только на руку.

Насчет джойстика так и скажи: "сделал дешифратор на STM" а не "Сегодня подобный, без переделки, подключил к атари", или переобуваться на ходу - твой метод? :)

Насчет опроса - голосую за 6, 7, 8, только геймпад, только в руках :)

(Не припомню игр для Спектрума, в которых при управлении одним из стандартных джойстиков понадобилось нажимать одновременно более двух кнопок, и соответственно, схема управления большими пальцами этому условию полностью удовлетворяет. Более того, даже конструкция классических джойстиков не позволяет более двух событий создавать).

goodboy
17.01.2014, 21:58
особенно много разных комбинаций встречается в драках/поединках.
если не ошибаюсь в DoubleDragonII есть вариант вверх+вниз+огонь, на геймпаде (а тем более джойстике) такое физически выполнить невозможно, но это наверное еденичный случай.

CLR
17.01.2014, 22:09
В файтингах обычно бывают комбо или QTE - quick time events, когда надо быстро надолбить требуемую комбинацию; может, все-таки в ДаблДрэгоне2 вверх+вниз делались последовательно? Не путаете с NES/SEGA/etc?

dosikus
17.01.2014, 22:18
Ты опять ничего не понял. Если есть готовая отлаженная схема на пике, то на кой от нее отказываться и начинать все с нуля на STM? Слишком много свободного времени? Выбор контроллера зависит от многих факторов, как выше заметил zst, если на руках у людей дофига программаторов для авр и собственно, опыта работы с авр, то это только на руку.

Это ты ничего не понял. Не задачу выбирают под контроллер а наоборот.
Выше озвученное тобой было бы верно - если бы у zst уже был бы пилотный вариант а не концепция. А пока все в фантазиях лучше выбрать современную элементную базу , тем более лишенную детских болезней - коими AVR так и кишит.
И что с того , что у всех "пять проводков" в ящике стола валяются и меги горой насыпаны?




Насчет джойстика так и скажи: "сделал дешифратор на STM" а не "Сегодня подобный, без переделки, подключил к атари", или переобуваться на ходу - твой метод? :)

А расскажи мне как еще можно связать между собой девайсы с разными протоколами, без инвазивного вмешательства ???? :biggrin:

---------- Post added at 22:18 ---------- Previous post was at 22:15 ----------


особенно много разных комбинаций встречается в драках/поединках.
если не ошибаюсь в DoubleDragonII есть вариант вверх+вниз+огонь, на геймпаде (а тем более джойстике) такое физически выполнить невозможно, но это наверное еденичный случай.

Подобные комбинации можно в виде макросов реализовать или записывать их в процессе ,
естественно вешать их на отдельные кнопки не задействованные в основных функциях...

creator
17.01.2014, 22:19
В Enduro Racer часто очень полезно бывает нажимать одновременно вверх и вниз (едем на дыбах и газуем), а если ещё и влево-вправо к этому безобразию добавить (а если точнее, то до него), то мотоциклиста начинает сносить в нужную нам сторону дороги, очень удобно проходить повороты получается.

dosikus
17.01.2014, 22:24
В Enduro Racer часто очень полезно бывает нажимать одновременно вверх и вниз (едем на дыбах и газуем), а если ещё и влево-вправо к этому безобразию добавить (а если точнее, то до него), то мотоциклиста начинает сносить в нужную нам сторону дороги, очень удобно проходить повороты получается.

Вот вот, говорю же кобинации кнопок не помешают .
Единственное нужен gamepad c кучей кнопок и не фэйковых как у NES ,
хотя и у него 8 реальных .

goodboy
17.01.2014, 22:27
В файтингах обычно бывают комбо или QTE - quick time events, когда надо быстро надолбить требуемую комбинацию; может, все-таки в ДаблДрэгоне2 вверх+вниз делались последовательно? Не путаете с NES/SEGA/etc?только что проверил на спектруме.
колесо делается нажатием вверх+вниз+всторону+огонь, но такая жесть в играх встречается очень редко. под эмулем PCшная клава на такие подвиги реагирует тоже с трудом.

CLR
17.01.2014, 22:35
Не задачу выбирают под контроллер а наоборот.

Мда, рукалицо... Я уже несколько постов именно эту мысль пытаюсь тебе внушить. Кажется, ты что-то начал понимать :) Не останавливайся на достигнутом! :)


Выше озвученное тобой было бы верно - если бы у zst уже был бы пилотный вариант а не концепция. А пока все в фантазиях лучше выбрать современную элементную базу , тем более лишенную детских болезней - коими AVR так и кишит.
И что с того , что у всех "пять проводков" в ящике стола валяются и меги горой насыпаны?

Ну давай, попытайся убедить zst, да так, чтобы он в итоге сделал девайс на STM. Дерзай, успехов!



А расскажи мне как еще можно связать между собой девайсы с разными протоколами, без инвазивного вмешательства ???? :biggrin:

Разумеется, соврав и тут же переобувшись :D Да ладно, забей, а то мы слишком уж тут нафлеймили. Давайте по существу уже.

Насчет Enduro Racer подозреваю, что это не баг и не фича, а незапланированная автором случайно обнаруженная особенность движка :) Все таки большинство джойстиков не позволяло такие вольности и было бы странным если бы управление на клавиатуре давало больше возможностей, чем на джойстике.

Может, кто-нибудь вспомнит еще игр с необычными двенадцатипальцевыми жестами? :)

P.S. Кстати, не стесняйтесь отписываться по опросу, а то он потонет в потоке нашего оффтопика :)

dosikus
17.01.2014, 22:51
Мда, рукалицо... Я уже несколько постов именно эту мысль пытаюсь тебе внушить.

Мда ? А может не будем врать? Не ты ли втирал, что задачу под контроллер выбирать надобно -
"-у народа есть пЫк и AVR их надобно юзать и только их" - это не твои слова ????



Разумеется, соврав и тут же переобувшись :D

Что и где я соврал? Мной было озвучено - подключил без переделки джойстик от NES к atari
Моей вины нет, если твоя фантазия настолько богата и извращенна ...

---------- Post added at 22:51 ---------- Previous post was at 22:49 ----------



Ну давай, попытайся убедить zst, да так, чтобы он в итоге сделал девайс на STM. Дерзай, успехов!


Зачем? Я и сам сделаю . Выдалось свободное время между проектами на запрещенных STM32 ... :biggrin::biggrin::biggrin:


ЗЫ. И собственно если тебя так раздражают новшества - те же STM32 , извиняюсь если задел за больное место... :biggrin::biggrin::biggrin::biggrin:

zx-kit
17.01.2014, 23:00
Выше озвученное тобой было бы верно - если бы у zst уже был бы пилотный вариант а не концепция. А пока все в фантазиях лучше выбрать современную элементную базу , тем более лишенную детских болезней - коими AVR так и кишит.
И что с того , что у всех "пять проводков" в ящике стола валяются и меги горой насыпаны?

А какой МК вы бы поставили в компьютер для имитации сигналов механической клавиатуры, кемпстон-джойстика и управления Z80 ?

Основные сигналы:
A8-A15 - подаются через диоды - 8 сигналов для выбора полуряда клавиатуры
KL0-KL4 - подтянуты к +5В через резисторы около 10К - 5 сигналов состояния кнопок полуряда
KJ0-KJ4 - подтянуты к +5В через резисторы около 10К - 5 сигналов состояния кнопок KEMPSTON JOYSTICK
IN FE - сигнал чтения из порта клавиатуры - подавать на прерывание MK
WAIT, RESET, NMI - подтянуты к +5В, подавать через диоды - 3 сигнала управления Z80.
RX - вход последовательных данных из выносной части ZX-KEYPAD.

Итого: 8+5+5+1+3+1=23 сигнала, совместимых с уровнем +5В.

Скорость формирования сигналов KL0-KL4 из A8-A15 и принятого массива данных клавиатуры из линии связи должна быть достаточной для формирования на лету при чтении Z80 из порта FE. Нужно предусмотреть то, что при этом 0 бит может быть на нескольких линиях A8-A15.
Можно зарезервировать еще несколько сигналов для конфигурации компьютером.

CLR
17.01.2014, 23:02
"-у народа есть пЫк и AVR их надобно юзать и только их" - это не твои слова ????
Нет, я такое не говорил - приведи точную цитату. Насчет удобства авр именно сейчас и именно для него высказывался сам zst.


Что и где я соврал? Мной было озвучено -
подключил без переделки джойстик от NES к atari
Вот именно тут и наврано :) Подключил без переделки, а как оказалось впоследствии - с переделкой. Посему я призываю сразу выражаться корректно, во избежание подобных диалектических противоречий :)


Зачем? Я и сам сделаю . Выдалось свободное время между проектами на запрещенных STM32 ... :biggrin::biggrin::biggrin:

Никто никакие STM нигде не запрещал. Более того, я буду рад, если выйдет конкурирующее изделие, ведь это только улучшит результат.
И да, новшества меня совсем не раздражают, я за новшества обеими руками за!

dosikus
17.01.2014, 23:12
А какой МК вы бы поставили в компьютер для имитации сигналов механической клавиатуры ?


Не надо ко мне на Вы .
Я еще не заслужил , да и не настолько стар .

Если ткнете носом в схему, что бы не на слух переваривать ,то можно посмотреть.
А так - скорости STM32 и ресурсов хватит и на захват и на обработку и выхлоп.
Причем большую часть , если не всю, можно сделать аппаратно.
Порты 16 битные , DMA может работать с GPIO(портами) и на всос и на выхлоп.
Только мне кажется проще переделать сей промежуточный узел - я имею ввиду регистры клавиатуры. Сильно не вдавался, но у caro же одна атмега всем рулит.

---------- Post added at 23:12 ---------- Previous post was at 23:09 ----------



Вот именно тут и наврано :) Подключил без переделки, а как оказалось впоследствии - с переделкой. Посему я призываю сразу выражаться корректно, во избежание подобных диалектических противоречий :)


Ну ты и зануда.:biggrin:
Там четко написано :

Сегодня подобный, без переделки, подключил к атари ,

Имелось ввиду что ни джойстик не изменял ни атари ...

psb
17.01.2014, 23:13
приведи точную цитату

любому толковому электронщику, а тем более работающему с коммерческими изделиями должно быть понятно, что не нужно использовать STM там, где вполне справится AVR, так же как и не нужно использовать AVR там, где вполне справится PIC, да и не стоит использовать PIC там, где достаточно мелкой логики.
достаточно точно? теперь поясни :)

zx-kit
17.01.2014, 23:17
Не надо ко мне на Вы .
Я еще не заслужил , да и не настолько стар .

Извините, но мне так привычнее.


Если ткнете носом в схему, что бы не на слух переваривать ,то можно посмотреть.
А так - скорости STM32 и ресурсов хватит и на захват и на обработку и выхлоп.
Причем большую часть , если не всю, можно сделать аппаратно.
Порты 16 битные , DMA может работать с GPIO(портами) и на всос и на выхлоп.
Только мне кажется проще переделать сей промежуточный узел - я имею ввиду регистры клавиатуры. Сильно не вдавался, но у caro же одна атмега всем рулит.

Пример стандартного интерфейса клавиатуры и джойстика:
http://s020.radikal.ru/i710/1401/0c/2723132403det.jpg (http://s020.radikal.ru/i710/1401/0c/2723132403de.png)

dosikus
17.01.2014, 23:25
zst, Как нуб в спекки спрошу :

Что есть выходы для данной схемы что входы , точней для подключаемого контроллера.
Или же есть сигналы двунаправленые ?
Чисто прикинуть кол-во необходимых пинов и ресурсы само-собой.

И еще :
Я так понимаю функционал разъема "джойстик" и "клавиатура" не взаимозависим ?
А разъем "Addon" это опция к "клавиатура" ?

zx-kit
17.01.2014, 23:29
zst, Как нуб в спекки спрошу :

Что есть выходы для данной схемы что входы , точней для подключаемого контроллера.
Или же есть сигналы двунаправленые ?
Чисто прикинуть кол-во необходимых пинов и ресурсы само-собой.

Схема типового интерфейса клавиатуры и джойстика:
http://s020.radikal.ru/i710/1401/0c/2723132403det.jpg (http://s020.radikal.ru/i710/1401/0c/2723132403de.png)
Основные сигналы МК:
Входы: КA8-КA15 - подаются через диоды - 8 сигналов для выбора полуряда клавиатуры
Вход: IN_K&K - сигнал чтения из порта клавиатуры - подавать на прерывание MK
Вход: RX - вход последовательных данных из выносной части ZX-KEYPAD.

Выходы: KL0-KL4 - подтянуты к +5В через резисторы около 10К - 5 сигналов состояния кнопок полуряда
Выходы: UP, DOWN, LEFT, RIGHT, BUTTONC - подтянуты к +5В через резисторы около 10К - 5 сигналов состояния кнопок KEMPSTON JOYSTICK
Выходы: WAIT, RESET, NMI - подтянуты к +5В, подавать через диоды - 3 сигнала управления Z80.


Итого: 8+5+5+1+3+1=23 сигнала, совместимых с уровнем +5В.


И еще :
Я так понимаю функционал разъема "джойстик" и "клавиатура" не взаимозависим ?
А разъем "Addon" это опция к "клавиатура" ?

Клавиатура и KEMPSTON JOYSTICK - два разных порта и разъема. Но на некоторых компьютерах могут выходить на один большой разъем на корпусе компьютера. Состояние кемпстона не зависит от шины адреса Z80, а клавиатуры - зависит.

Cхема типовой механической клавиатуры:
http://s019.radikal.ru/i617/1401/1c/7fd15000e250t.jpg (http://s019.radikal.ru/i617/1401/1c/7fd15000e250.png)
Через разъем Addon подключается контроллер клавиатуры Caro, в "LENINGRAD-2012" - это "KEYB&SINC-3" на ATMEGA48PA-AU. Он формирует сигналы WAIT, NMI, RESET.

dosikus
17.01.2014, 23:42
[B]


Итого: 8+5+5+1+3+1=23 сигнала, совместимых с уровнем +5В.

Итого 10 входов и 13 выходов . И единственно критичный 8бит шириной .
Легко.
Да я вижу что Вы напоминаете о 5v .:biggrin:
Что бы не увеличивать стоимость , выбирая чип с достаточным кол-вом FT,
входа можно и через делители .
Найти же 13 пинов FT на выход не проблема ,

CLR
17.01.2014, 23:44
достаточно точно? теперь поясни :)

Сообщение dosikus:
"-у народа есть пЫк и AVR их надобно юзать и только их" - это не твои слова ????"

Мое сообщение:
"любому толковому электронщику, а тем более работающему с коммерческими изделиями должно быть понятно, что не нужно использовать STM там, где вполне справится AVR, так же как и не нужно использовать AVR там, где вполне справится PIC, да и не стоит использовать PIC там, где достаточно мелкой логики."

Одно и то же, не так ли?

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

dosikus
17.01.2014, 23:46
Хз чего тут непонятного, но поясню: контроллер выбирают по совокупности ряда причин - достаточной производительности для решения задачи, итоговой совокупной цены изделия, общего опыта разработки под данный контроллер, каких-то программных преимуществ типа наличия обширных библиотек, покрывающих какие угодно цели и т.д. Так понятнее?

В итоге все озвученные тобой МК полностью проиграли .:biggrin:

CLR
17.01.2014, 23:51
Имелось ввиду что ни джойстик не изменял ни атари ...

Не хочу показаться занудой, но это можно понять однозначно как джойстик от NES без переделки включенный в атари без переделки. Никакой иной трактовки не придумывается :)

Кстати, что за девайс-то затевается, примерные характеристики? Может, таки обычный недорогой писишный USB-геймпад к спектруму?

---------- Post added at 01:51 ---------- Previous post was at 01:50 ----------


В итоге все озвученные тобой МК полностью проиграли .:biggrin:

Включая STM? :)

А проиграли то что? Специальную олимпиаду? :) zst пока что достаточно ясно выразился, на чем собирается делать :)

dosikus
18.01.2014, 00:17
zst, В итоге весь функционал без addona сводится к:
захват входов с анализом сканирующего бита .
И вывод из массива по результатам сканирующего бита.
Джойстик - тупой вывод значения .
А вот что с addonom , насколько помниться у caro клавиатура от ББ .

zst, Кстати , напомните , я прослушал :
- связь между модулем на спекки и модулем keypad планируете UART ?
И насколько я понял направление только от keypad к модулю ?


[/COLOR]

Кстати, что за девайс-то затевается, примерные характеристики? Может, таки обычный недорогой писишный USB-геймпад к спектруму?

Ну я же писал . Подключить джойстики к атари и спекки .
Без изменений самих девайсов,
но с расширением функционала - задействовать "лишние" кнопки на комбо . Ну и радиоканал в дальнейшем.

На счет USB -
помнишь раньше был такой киножурнал и песенка из него:
"-Орешек знаний тверд , но расколоть его поможет..":biggrin:
И вот здесь тебе действительно поможет ненавидимый тобой STM32 .
USB Host на F4 и вперед...





Да я вижу что Вы напоминаете о 5v .:biggrin:


Кстати , специально для неугомонного CLR , у STM32 есть жЫрное преимущество - выходы с FT и OD .:biggrin:

psb
18.01.2014, 00:46
Хз чего тут непонятного, но поясню: контроллер выбирают по совокупности ряда причин - достаточной производительности для решения задачи, итоговой совокупной цены изделия, общего опыта разработки под данный контроллер, каких-то программных преимуществ типа наличия обширных библиотек, покрывающих какие угодно цели и т.д. Так понятнее?
смотря что понятнее. в целом - все правильно, а вот почему порядок именно такой: stm - avr - pic - рассыпуха - вот это нифига не понятно. даже для каких-то простых вещей, которые делаются из 2-3 микрух на рассыпухе можно взять самый простой стм. почему это может быть зазорно - я не понимаю. всем плевать на недоиспользованные ресурсы гораздо больше, чем, например, на цену и габариты. не говоря уже о том, например, что на мк можно что-то сделать гибче, чем на тупой логике (где обычно в ход потом идут конденсаторы, резисторы и прочая настройка, лишь бы стабильно работать начало).

думаю, если бы было заявлено: у меня УЖЕ есть куча авр, которые надо израсходовать, мне лень изучать новое, мне лень искать/заказывать новые мк - это было бы ближе к реальности. а вот ранжирование "stm круче avr, а avr круче pic, а..." или "у каждого есть программатор авр" - это фигня какая-то (идите расскажите ААА про программатор и еще заодно половине форума).

ZEK
18.01.2014, 02:19
Варианты 6,7,8 можно сделать беспроводной джой + какой нить беспроводной контролер с экранчиком, что бы управлять этим всем делом, в качестве среды передачи можно ИК, дешево и сердито

zx-kit
18.01.2014, 09:22
контроллер выбирают по совокупности ряда причин - достаточной производительности для решения задачи, итоговой совокупной цены изделия, общего опыта разработки под данный контроллер, каких-то программных преимуществ типа наличия обширных библиотек, покрывающих какие угодно цели и т.д.


думаю, если бы было заявлено: у меня УЖЕ есть куча авр, которые надо израсходовать, мне лень изучать новое, мне лень искать/заказывать новые мк - это было бы ближе к реальности. а вот ранжирование "stm круче avr, а avr круче pic, а..." или "у каждого есть программатор авр" - это фигня какая-то и еще заодно половине форума).
CLR, psb - вы оба правы. И это все достаточно трудно увязать все между собой. Тем более я, на данный момент, не все микроконтроллеры изучил. Скорее всего те, кто изучил их больше и лучше - им виднее, что можно сделать другим способом. И к мнению специалистов надо прислушиваться. В конечном счете можно ориентироваться на цену изделия. Если бы STM32 были мощнее и значительно дороже - вопросов бы не было. Но они по цене получаются очень эффективны. И в кругу радиолюбителей все больше распространены.

Выбирать трудно, но надо. Одному человеку новое внедрять труднее. Если бы была бесплатная поддержка в разработке программного обеспечения - это бы упростило проблему выбора. А если надеяться только на себя - думаешь, а хватит ли на изучение нового времени и сил ?

Как говорится - время - деньги. А при покупке конструкторов у меня платят в основном за детали, работу по комплектации и доставке. Разработку концепции, конструкции, схемы, печатной платы, программного обеспечения - они в принципе не оплачиваются. У нас в стране разработку никто оплачивать не будет. Тем более, у нас нет такой поддержки и финансирования, как в проекте ZX - клавиатуры типа ELITE. Поэтому в наше время надо разрабатывать все коллективно. То есть надо общими силами добиваться эффективности проектов.

Поэтому надо стремиться к сокращению затрат на разработку. Если человеку не помогают, ему проще сделать так, как он умеет, даже если комплектующие будут на 50 рублей дороже.

Короче, сложный вопрос выбора. Тем более нужно учитывать возможность покупки деталей в достаточно большом количестве, а не 1-2 шт. Но обсуждать элементную базу надо. Одна голова - хорошо, а несколько лучше.

Ко всем мнениям я прислушиваюсь и пытаюсь увязать их в единое целое.

dosikus
18.01.2014, 09:30
в качестве среды передачи можно ИК, дешево и сердито
Многие USART имеют IrDA ...

zx-kit
18.01.2014, 09:35
Многие USART имеют IrDA ...
Давайте сначала сделаем базовый вариант на проводах. Потом можно будет каждому доработать, как раньше было принято в журнале "РАДИО".

Нужно учитывать, что нам нужно передавать сигналы постоянно, а не кратковременно, как в ПДУ телевизоров. Поэтому готовьтесь иметь проблемы с заменой батареек.

dosikus
18.01.2014, 10:06
Выбирать трудно, но надо. Одному человеку новое внедрять труднее. Если бы была бесплатная поддержка в разработке программного обеспечения - это бы упростило проблему выбора. А если надеяться только на себя - думаешь, а хватит ли на изучение нового времени и сил ?



Да главный вопрос - время , а его катастрофически не хватает, и вот в связи с этим возникает вопрос :
А стоит ли тратить, сие драгоценное время, на реализацию девайсов на
устаревшей базе?
Зацикливаясь на попытках - впихнуть невпихаемое , изобредая программные вариации того что реализуется аппаратно .
Ортодоксы, как и скупые, платят дважды .

Контроллер( боюсь уже STM32 произносить ) имеет кучу ресурсов , достаточно дешев , имеет отличные средства разработки/отладки .
Есть гнутые IDE, так что с копирастами проблем не будет.
Есть клоны прошивателей/дебуггеров - один изготавливается на коленке, другой стоит с пересылкой ~500р.

---------- Post added at 09:50 ---------- Previous post was at 09:45 ----------



Нужно учитывать, что нам нужно передавать сигналы постоянно, а не кратковременно, как в ПДУ телевизоров. Поэтому готовьтесь иметь проблемы с заменой батареек.


Я почему спрашивал о UART ?
Имея двунаправленный вариант при изменении сканбита можно отсылать keypad запрос на посылки .
А сам keypad переводить в sleep/power down при отсутствии активности юзера.

И что значит передавать постоянно ? Период 10mS вполне достаточен для исключения видимых задержек , а это куча времени ...

---------- Post added at 10:06 ---------- Previous post was at 09:50 ----------


как в ПДУ телевизоров.

IrDA не есть "протокол от ПДУ" , этот тот же UART ...

zx-kit
18.01.2014, 10:09
Да главный вопрос - время , а его катастрофически не хватает, и вот в связи с этим возникает вопрос :
А стоит ли тратить, сие драгоценное время, на реализацию девайсов на
устаревшей базе?
Зацикливаясь на попытках - впихнуть невпихаемое , изобредая программные вариации того что реализуется аппаратно .
Ортодоксы, как и скупые, платят дважды .

Контроллер( боюсь уже STM32 произносить ) имеет кучу ресурсов , достаточно дешев , имеет отличные средства разработки/отладки .
Есть гнутые IDE, так что с копирастами проблем не будет.
Есть клоны прошивателей/дебуггеров - один изготавливается на коленке, другой стоит с пересылкой ~500р.

---------- Post added at 09:50 ---------- Previous post was at 09:45 ----------




Я почему спрашивал о UART ?
Имея двунаправленный вариант при изменении сканбита можно отсылать keypad запрос на посылки .
А сам keypad переводить в sleep/power down при отсутствии активности юзера.

И что значит передавать постоянно ? Период 10mS вполне достаточен для исключения видимых задержек , а это куча времени ...
Насчет программаторов для прошивки STM32.
За несколько лет тут ситуация улучшилась. Благодаря китайским интернет-магазинам, Zorel-у с барахолки, да и моему конструктору USB-UART (http://www.zxkit.ru/katalog-1/zxkit-008) c переключателем 3.3V/5V тут проблем уже нет. Каждый желающий может приобрести по доступной цене. Так что - отсутствие программатора для смены прошивки - это при выборе микроконтроллера STM32 уже не аргумент.

Для подачи сигналов на порты клавиатуры и джойстика изначально прикидывал использовать 9 регистров 74HC595 и 40 диодов. По себестоимости недорого. Это позволило бы по трем проводам подавать 40+5+3=48 битов информации. Добавляются еще +5В и GND, цифровой сигнал с магнитофона. Итого 6 проводов. Прикинул сколько стоит 6-ти жильный экранированный провод. Цена около 30 руб за метр. Толщина примерно как у обычной клавиатуры.

Потом решил заменить провод на обычный телефонный 4-х жильный по 3 руб. за метр. Для уменьшения кол-ва проводов до 4-х данные нужно передавать по UART. Тогда на тот конец ставим дополнительно микроконтроллер. Так как в контроллере PS/2 клавиатуры был ATMEGA48PA-AU, логичнее было не плодить номенклатуру деталей, а его и использовать в компьютерной и выносной части KEYPADa - 32 ноги, частота до 20 МГц, питание +5В. Достаточно хороший выбор.

Частота передачи через UART планировалась как PS/2 клавиатурах около 11 КГц. Пока односторонняя с контрольной суммой для устранения ложных срабатываний.

Радиоканал и ИК-канал рассматривались, но они имеют недостатки. В основном батарейки, дополнительные детали, дополнительное время на изучение и отладку.

С какой частотой нужно передавать данные, чтобы была экономия энергии. В принципе LCD можно сделать с отключаемой подсветкой тумблером или программно.

Все ли так гладко при использовании предлагаемых вами трансиверов. Можем мы их врезать в линию связи вместо UART без изменения программы ?

dosikus
18.01.2014, 10:18
Насчет программаторов для прошивки STM32.
Так что - отсутствие программатора для смены прошивки - это при выборе микроконтроллера STM32 уже не аргумент.

Можете, для тех кто желает заняться STM32, изготовить конструктор клона
STLinkv2 . Единственное - китайцы вовсю уже им торгуют.

Информация - схема/прошивка ,
все в свободном доступе http://forum.easyelectronics.ru/viewtopic.php?f=17&t=6620&hilit=%D1%80%D0%B5%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D 0%BD%D0%B3
Сей прошиватель/дебаггер для STM8 и STM32 , но без транслятора уровней.
Там же есть схема, список и сканы печатки полноценного STLink ...

zx-kit
18.01.2014, 10:32
Можете, для тех кто желает заняться STM32, изготовить конструктор клона
STLinkv2 . Единственное - китайцы вовсю уже им торгуют.

Зачем мне с китайцами тягаться ? Мне уже ставили в вину, что USB-UART стоит дороже 50 руб с доставкой. У нас в стране почта бесплатно увы не работает. Поэтому это предложение мне не подходит. Себе в убыток.

dosikus
18.01.2014, 10:47
[B]
Все ли так гладко при использовании предлагаемых вами трансиверов. Можем мы их врезать в линию связи вместо UART без изменения программы ?

Все зависит от реализуемого Вами протокола .
nRF24xxx работает с пакетами - 32 байта , аппаратный контроль целости пакетов . Скорость 2мбит.
HAL - SPI , до 8мбит .


1.1 Features
Features of the nRF24L01 include:
•Radio
X Worldwide 2.4GHz ISM band operation
X 126 RF channels
X Common RX and TX pins
X GFSK modulation
X 1 and 2Mbps air data rate
X 1MHz non-overlapping channel spacing at 1Mbps
X 2MHz non-overlapping channel spacing at 2Mbps
• Transmitter
X Programmable output power: 0, -6, -12 or -18dBm
X 11.3mA at 0dBm output power
• Receiver
X Integrated channel filters
X 12.3mA at 2Mbps
X -82dBm sensitivity at 2Mbps
X -85dBm sensitivity at 1Mbps
X Programmable LNA gain
• RF Synthesizer
X Fully integrated synthesizer
X No external loop filer, VCO varactor diode or resonator
X Accepts low cost ±60ppm 16MHz crystal
• Enhanced ShockBurst™
X 1 to 32 bytes dynamic payload length
X Automatic packet handling
X Auto packet transaction handling
X 6 data pipe MultiCeiver™ for 1:6 star networks
• Power Management
X Integrated voltage regulator
X 1.9 to 3.6V supply range
X Idle modes with fast start-up times for advanced power management
X 22uA Standby-I mode, 900nA power down mode
X Max 1.5ms start-up from power down mode
X Max 130us start-up from standby-I mode
• Host Interface
X 4-pin hardware SPI
X Max 8Mbps
X 3 separate 32 bytes TX and RX FIFOs
X 5V tolerant input



Стоят копейки http://www.aliexpress.com/item/free-shipping-10-pcs-lot-NRF24L01-wireless-module-power-enhanced-2-4-G-wireless-communication-receiver/1079264918.html

Подробней о реализации можно почитать здесь http://kazus.ru/forums/showthread.php?t=19992

---------- Post added at 10:47 ---------- Previous post was at 10:38 ----------


что USB-UART стоит дороже 50 руб с доставкой. Нормальный USB-UART(не на МК) стоит дороже .
FT232 дорогая зараза.



Поэтому это предложение мне не подходит. Себе в убыток.
Ну в принципе привел для того кто сам захочет изготовить...

zx-kit
18.01.2014, 10:58
Все зависит от реализуемого Вами протокола .
nRF24xxx работает с пакетами - 32 байта , аппаратный контроль целости пакетов . Скорость 2мбит.
HAL - SPI , до 8мбит .

Если у вас есть опыт их применения, на сколько дороже провода будет стоить комплект из приемника, передатчика, преобразователя питания от батарейки, размер печатной платы, антенн (если надо) и т.п.

Беспроводность - это в принципе не самый главный вопрос. Можно сделать как опцию на выбор: через провод (на столе) или без проводов (на расстояние). Не менее важное назначение KEYPAD-а - устранение необходимости переключать разъемы нескольких джойстиков от игры к игре и присутствие клавиатуры.

Хотя, можно сделать наоборот - клавиатура есть и на ней сделать возможность выбора любого типа джойстика или собственно кнопок.

Может быть лучше даже сделать контроллер USB клавиатуры, в который добавить возможность выбора типа джойстика. Тогда мы можем потом попытаться подключить вместо проводной USB-клавиатуры беспроводную. Может она заработает и без PC. У меня данных на этот счет нет.

Ну и как опцию через второй USB подключить GameGad от PC. Какая в этом случае аппаратура предпочтительнее. У меня на примете пока VNC2 с двумя USB-разъемами. Но тоже надо изучать.

dosikus
18.01.2014, 11:26
Если у вас есть опыт их применения, на сколько дороже провода будет стоить комплект из приемника, передатчика, преобразователя питания от батарейки, размер печатной платы, антенн (если надо) и т.п.

Модуль является трансивером и уже готов для использования . Конфигурируется на лету. Есть еще меньше размерами имеют приставку nano , но что то не могу пока найти.





Может быть лучше даже сделать контроллер USB клавиатуры, в который добавить возможность выбора типа джойстика. Тогда мы можем потом попытаться подключить вместо проводной USB-клавиатуры беспроводную. Может она заработает и без PC. У меня данных на этот счет нет.
[/QUOTE]


Как вариант беспроводные клавиатуры/мыши от Logitech имеют приемники Unify
http://www.logitech.com/en-us/promotions/6072
Вот только открыт ли протокол не знаю.

Простые USB(не wireless) клавы/джойстики достаточно просто реализуются на МК c USB HOST.

zx-kit
18.01.2014, 12:06
Модуль является трансивером и уже готов для использования . Конфигурируется на лету. Есть еще меньше размерами имеют приставку nano , но что то не могу пока найти.

То есть у этого модуля размеры около 2х3 см и цена около 300 руб за 10 шт с бесплатной доставкой ? Тогда каждый сможет купить себе за эту цену по 5 пар. А они не будут мешать друг другу в одной или соседних квартирах ?



Простые USB(не wireless) клавы/джойстики достаточно просто реализуются на МК c USB HOST.Что для этого нужно сделать и сколько стоят детали ?

По выбору МК в компьютерную часть и в KEYPAD. Такой подойдет
ARM 32BIT CORTEX M3 64PINS 16KB STM32F100R4T6BTR LQFP-64 24МГц

dosikus
18.01.2014, 12:32
То есть у этого модуля размеры около 2х3 см и цена около 300 руб за 10 шт с бесплатной доставкой ? Тогда каждый сможет купить себе за эту цену по 5 пар. А они не будут мешать друг другу в одной или соседних квартирах ?
У именно этих модулей, с антенной на pcb, дальность небольшая 10-15 метров , такая же как у wireless клав/мышей.
Для увеличения дальности есть антенны c коннектором SMA .
http://www.aliexpress.com/item/NRF24L01-Wireless-Transceiver-Module-SMA-Antenna-Microcontroll-for-Arduino/1421919796.html

Модулям присваиваются различные каналы а так же адреса, мешать друг-другу не будут .
Один модуль сконфигурированный приемником может работать с кучей приемников .




Что для этого нужно сделать и сколько стоят детали ?
Для разработки/изучения хватит STM32F4 Discovery 500-700р
См. http://www.chip-nn.ru/51.php
Причем там не самые низкие цены ...

zx-kit
18.01.2014, 12:50
Для разработки/изучения хватит STM32F4 Discovery 500-700р
То есть, купив эту плату, подпаяв к Спектруму и подключив через переходник USB-клаву, останется написать программу для МК ?
Почему тогда это еще никто не сделал ?

А какой STM32 и сколько стоит чтобы сделать плату минимального размера без лишних наворотов с нормальным USB разъемом и контактами для подключения к Спектруму ?

dosikus
18.01.2014, 13:19
То есть, купив эту плату, подпаяв к Спектруму и подключив через переходник USB-клаву, останется написать программу для МК ?
Угу .



Почему тогда это еще никто не сделал ?

Потому что спектрум интересен единицам ,
молодым подавай продвинутые консоли . Да мне ли Вам объяснять ???? :biggrin:

zx-kit
18.01.2014, 13:23
Угу .



Потому что спектрум интересен единицам ,
молодым подавай продвинутые консоли . Да мне ли Вам объяснять ???? :biggrin:

Ну вы как специалист сделали бы доброе дело для форума ?

dosikus
18.01.2014, 13:30
А какой STM32 и сколько стоит чтобы сделать плату минимального размера без лишних наворотов с нормальным USB разъемом и контактами для подключения к Спектруму ?

Можете сами выбрать http://www.st.com/web/en/catalog/mmc/FM141/SC1169
Отобрал список в доступных для самостоятельной пайки корпусах :

dosikus
18.01.2014, 13:47
Ну вы как специалист сделали бы доброе дело для форума ?

Ну не такой уж я и специалист...:biggrin:
С USB пока на Вы , осилил пока только девайсы конкретно HID на 103их.
Хотя со стороны USB уже есть готовое https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32Discovery/DispForm.aspx?ID=3248&RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLi sts%2FSTM32Discovery%2FHID%20USB%20HOST%20example% 20ported%20to%20STM32F4%20Discovery%20Mouse%20%2B% 20KeyBoard

И здесь есть ссылки на готовое хоть и сырое.
http://www.youtube.com/watch?v=2sR_Ko15N2s

И это только наспех найденное ...

ZEK
18.01.2014, 14:13
Посылать постоянно не нужно, на стороне применика помнить должно состояние, можно изредка повторять, что бы с залипания исключать, нужно просто 2 кода, 0x01-кнопка нажата, 0x81 конопка отпущена

CLR
18.01.2014, 14:14
Я кстати, таки не нашел, ST-link то расковыряли? Я просто не особый любитель виндовсов (скорее, наоборот) и опенсурсные решени мне много более по душе.

P.S. Я вовсе не против STM как могло некоторым показаться :)

dosikus
18.01.2014, 14:22
Я кстати, таки не нашел, ST-link то расковыряли? Я просто не особый любитель виндовсов (скорее, наоборот) и опенсурсные решени мне много более по душе.


Я же уже давал ссылку :
http://zx.pk.ru/showpost.php?p=663111&postcount=72
Все реверсировали , причем v2 .
Кстати STLink не совсем подходит для проприетароненавистников , поддержка практически никакая .
Лучше JLink , клон с доставкой ~500р...

dosikus
18.01.2014, 16:36
Для разработки/изучения хватит STM32F4 Discovery 500-700р


Кстати на сей Discovery уже есть STLink v2 ...

zx-kit
19.01.2014, 20:32
Текущая конструкция и блок-схема на современных микроконтроллерах:

http://s018.radikal.ru/i515/1401/1c/fcd5d22796bbt.jpg (http://s018.radikal.ru/i515/1401/1c/fcd5d22796bb.png) http://s57.radikal.ru/i157/1401/56/ec6059dae3c8t.jpg (http://s57.radikal.ru/i157/1401/56/ec6059dae3c8.png)

1. Будет ли нормально работать связь через UART без кварцев ?
2. Какой разъем для прошивки у ST-LINK ?

Планируется такой порядок передачи данных:
Кемпстон - 1 байт (ст. 3 бита = 0)
Клавиатура - 8 байтов (ст. 3 бита = 1)
Управляющие сигналы - 1 байт (ст. 3 бита = 1)
Контрольная сумма - 1 байт

Итого: 11 байтов в пакете.

Длительность передачи: 11 * 10 / 19200 ~ 5.7 мс

baxter
19.01.2014, 20:43
zst, концепт интересный, но может быть прислушаться к большинству и сделать вариант в виде геймпада.

zx-kit
19.01.2014, 20:45
zst, концепт интересный, но может быть прислушаться к большинству и сделать вариант в виде геймпада.

Да как я его сделаю ? У меня только механические кнопки и стандартные коробки. Это ведь не проект клавиатуры ELITE !
Я планирую делать не геймпад, а кейпад. Настольный вариант, без ручек.
Геймпады готовые есть в магазине. Можно купить по вкусу, разобрать, отрезать лишнее и подпаять проводками.

dosikus
19.01.2014, 21:19
[B]
1. Будет ли нормально работать связь через UART без кварцев ?
2. Какой разъем для прошивки у ST-LINK ?


1) Работает , и нормально . Но вот на такой расстояние как у Вас не пробовал, ХЗ . И дело то не в стабильности частоты ...
А в чем проблема с кварцем? 8 МГц вполне доступны ...
2)
Чисто для прошивки и дебага 4 пина :
1) VCC
2) SWDIO
3) SWCLK
4) GND
Если пины SWD задействованы в схеме, то добавляем RESET
1) VCC
2) SWDIO
3) SWCLK
4) GND
5) RESET
Если нужен вывод отладочной информации через SWO(аналог printf),
добавляем SWO
1) VCC
2) SWDIO
3) SWCLK
4) GND
5) RESET
6) SWO
Только для заливки через бут 3 пина :
в большинстве своем через UART
1) RX
2)TX
3)GND


Можно купить по вкусу, разобрать, отрезать лишнее и подпаять проводками.

Да не надо ничего резать !!!!
Заложите в keypad 3 пина , или софтовый SPI или аппаратный .
Все эти gamepad'ы нормально работают от 3v ...

Двустрочник нормально переваривает уровни 3v , но питать его надо все таки от 5v .
И в таком варианте желательно посадить RW на GND .
Кстати - а зачем 2х строчник юзать 8ми битной шиной ? 6 пинов всего на 4х битной :
RS
E
D4
D5
D6
D7
Экономим АЖ 4 пина - как раз на джойстик NES, SNES и иже с ними...

zx-kit
19.01.2014, 21:27
1) Работает , и нормально .
А в чем проблема с кварцем? 8 МГц вполне доступны ...

Ну лишняя деталь ...


2)
Чисто для прошивки и дебага 4 пина :
...
Только для заливки через бут 3 пина :
в большинстве своем через UART
1) RX
2)TX
3)GND

Там еще наверно нужна будет кнопочка, как в Speccy2010 ?


Да не надо ничего резать !!!!
Заложи в keypad 3 пина , или софтовый SPI или аппаратный .
Все эти gamepad'ы нормально работают от 3v ...
Это для Денди ? Для Сеги надо 5 (просто параллельно) или 7 (для использования всех кнопок). На как я понял, их не сравнить в удобстве с резиновыми корпусами геймпадов типа PSP3. А там придется резать, если там есть контакты.

А как геймпад от Денди или Сеги будет работать - параллельно (не аппаратно, а по результату) кнопкам кейпада ?
Для Сега-джойстика можно вывести разъем на корпус кейпада с микроконтроллером.



Двустрочник нормально переваривает уровни 3v , но питать его надо все таки от 5v .
И в таком варианте желательно посадить RW на GND .
Кстати - а зачем 2х строчник юзать 8ми битной шиной ? 6 пинов всего на 4х битной :
RS
E
D4
D5
D6
D7
Экономим АЖ 4 пина - как раз на джойстик NES, SNES и иже с ними...

В арме же 64 пина - зачем экономить ? Это можно было бы сделать, если 20 - ногий, но 20 не хватит. Хотя на 4 провода меньше паять.

Теоретически можно под несколько простых типов геймпада выделить свои ножки и обрабатывать все сразу, а подпаивать только тот геймпад, который нравится.

dosikus
19.01.2014, 21:41
Ну лишняя деталь ...

Там еще наверно нужна будет кнопочка, как в Speccy2010 ?

Не только кнопка и еще джампер , но эти пины только для этого и предназначены -
Boot0 и RESET
Boot0 выставляем в 1 - старт с бута .
Reset жамкаем на GND нанедолго




Это для Денди ? Для Сеги надо 5 (просто параллельно) или 7 (для использования всех кнопок). На как я понял, их не сравнить в удобстве с резиновыми корпусами геймпадов типа PSP3. А там придется резать, если там есть контакты.

А как геймпад от Денди или Сеги будет работать - параллельно (не аппаратно, а по результату) кнопкам кейпада ?


И NES и SNES и Сега , хотя о Сеги пока промолчу , внутри стоит сдвиговый регистр с параллельной загрузкой . У NES он 8 бит у SNES 16 .
Итого 3 пина
LATCH
CLK
DATout
ну и питание
У меня на джойстике от NES сейчас задействованы все 8 кнопок . 4 движение , 1 Fire , 2 комбо - влево+вверх и вправо+вверх .
Jump пока решаю куда
Остальные 6 это те же кнопки Fire и Jump но с автошутером, кстати весьма удобно




В арме же 64 пина - зачем экономить ? Это можно было бы сделать, если 20 - ногий, но 20 не хватит. Хотя на 4 провода меньше паять.

Теоретически можно под несколько простых типов геймпада выделить свои ножки и обрабатывать все сразу, а подпаивать только тот, который нравится.

Вот, вот . Выгоды от 8ми бит на дисплей ни какой, а пинов то все равно жалко...

ZEK
19.01.2014, 22:15
Вот так, по деньгам тоже выйдет, стоимость проводков примерно будет равна стоимости ИК применику и передатчику

ZEK
19.01.2014, 22:19
В общем нифига не видно, хотя написано что 800х600 толжно принять,
описую словами

первая коробоча, с двумя DB9 разъемами для сега джойстиков и 2 штуки PS2 для клавомышей, экраном и одной или больше кнопками чери, раз их чешится куда то вставить, коробочка передает ИК сигналы другой коробочке, которая имеет всебе ИК приемник и подключается к спектруму

первая коробочка от батарейки питается, вторая от спектрума

dosikus
19.01.2014, 22:24
ZEK, А что IrDA не хотишь ? Параметры лучше чем у просто IR - 115.2 кбит.
Опять же двунаправленный.
Правда дороже чем радиоканал . :)))))))

http://www.aliexpress.com/item/100-NEW-TFBS4711-TXRX-IRDA-115-2-KBIT-S-6-SMD-1-TFBS4711-TR1/1023228550.html


Мне видится джойстик , например от той же NES , с встроенным модулем трансивера и модулем на STM32F030F4 TSOP 20pin .
Питание от LiON типа нокиевского BL-5C . Усе должно влезть вместе с зарядкой/stepup типа такого
http://www.ebay.com/itm/PCB-Charger-module-for-single-18650D-Li-Ni-Cd-NiMH-Cell-/260822388474?pt=Battery_Chargers&hash=item3cba39cefa

psb
19.01.2014, 22:26
в протокол еще 3 байта для мышки вкорячить... и ресет чтобы можно было...

zx-kit
19.01.2014, 22:38
Я смотрю мы скоро так всю периферию перенесем к дивану. А это все потребляет энергию. Может сделаем глобальную "сеть" ?

Вернее, если у нас компьютер, телевизор и диван стационарные - логично проложить между телевизором и диваном по плинтусу или стене кабель из 4х витых пар, который используются для интернета. Тогда по одной паре мы сможем подать питание +5В и GND, по второй витой паре - сигнал RX и GND, по третьей - TX и GND, по четвертой - цифровой сигнал TAPE IN и GND.

Ну проложили для своего удобства кабель. Трудно что ли? Вмонтировали возле дивана сетевую розетку для витых пар. И готов канал связи. И подключили всю периферию через коробочку REMOTE KEYPAD с армом. Есть питание, есть помехоустойчивая двухсторонняя передача на большой скорости. Есть запас для развития. Соглашайтесь !

dosikus
19.01.2014, 22:42
zst, Дык чем больше, тем лучше. Ненужное само по дороге отсеется . :)))))
Почти все варианты идентичны окромя транспорта , заложи все .
Посмотрим на сколько каждый дороже, затратней в софтовой/железной реализации,
глючней ...

По пинам самый затратный мой :
2 пина CSN и CE +3 пина SPI + IRQ
итого 6 пин .
Причем, что хреново на тот же SPI не повесит джойстик .
Хотя есть мысль.... надо испытать - может и получится. :))))))))))))

ZEK
19.01.2014, 22:45
А что IrDA не хотишь ?
для меня это одно и тоже, так что всеравно

scl^mc
19.01.2014, 22:48
а что, если сам спек запихать в этот remote gamepad и прицепить к нему маленький экранчик?

dosikus
19.01.2014, 22:49
в протокол еще 3 байта для мышки вкорячить... и ресет чтобы можно было...

Дык можно в пакетах хэдер задействовать - типа ID девайса ...

zx-kit
19.01.2014, 22:50
а что, если сам спек запихать в этот remote gamepad и прицепить к нему маленький экранчик?

Не - это не то! То - это телевизор, не монитор, не смартфон, не ноутбук, не PSP и т.п. Как говорил Captain NEMO - телевизор и только телевизор! И все эффекты останутся как в оригинале.

dosikus
19.01.2014, 22:52
а что, если сам спек запихать в этот remote gamepad и прицепить к нему маленький экранчик?

Ваша хотелка, уже медленно но реализуется . См . эмулятор на STM32F4

http://forum.easyelectronics.ru/viewtopic.php?f=35&t=16592

---------- Post added at 22:52 ---------- Previous post was at 22:51 ----------


Не - это не то! То - это телевизор, не монитор, не смартфон, не ноутбук, не PSP и т.п. Как говорил Captain NEMO - телевизор и только телевизор! И все эффекты останутся как в оригинале.

Да ну на , да же если телик LCD ? :))))))))

ZEK
19.01.2014, 22:54
можно вообще одной коробочкой обойтись
что бы у неё было 3 USB дырки, хостовых

покупаешь клавомышь комплект беспроводной и 1 или 2 джоя беспроводных, если микруха usb хаба дороже 150р то проще внешний хаб и 1 usb дырка

и еще, не факт что на прерываниях STM32F0 потянет клавиатуру безвейтово у уже темболее без строба чтения, нечем будет дергать контролер что нужно выставить данных клавы, а реагировать на изменение адресных разрядов, вообще алес получится

zx-kit
19.01.2014, 22:55
Ваша хотелка, уже медленно но реализуется . См . эмулятор на STM32F4

http://forum.easyelectronics.ru/viewtopic.php?f=35&t=16592

---------- Post added at 22:52 ---------- Previous post was at 22:51 ----------




Эмулятор


Да ну на , да же если телик LCD ? :))))))))
Лучше CRT, но даже LCD телек показывает 50 Гц, а монитор уже нет.

dosikus
19.01.2014, 22:58
и еще, не факт что на прерываниях STM32F0 потянет клавиатуру безвейтово у уже темболее без строба чтения, нечем будет дергать контролер что нужно выставить данных клавы, а реагировать на изменение адресных разрядов, вообще алес получится

Все потянет . У STM32 не только прерывания есть,
есть еще event'ы ( события ) а сие работает железно без
вмешательства ядра ...

Да и почему без строба ? Всю работу, с тем что ты озвучил , будет осуществлять модуль что у спекки . А уж завести все туда проблем нет .
Модуль что в keypad лишь дешифрирует данные от клав/мышей/падов и отсылает через транспорт .
UART посадить на DMA будет само тупо заполнять массив аппаратно.
А из массива будем вытаскивать инфу - не отвлекаясь на прием ...

ZEK
19.01.2014, 22:59
О, TUSB2046 22грн - 90р, 4 USB порта

dosikus
19.01.2014, 23:00
Эмулятор

Лучше CRT, но даже LCD телек показывает 50 Гц, а монитор уже нет.

С вашей же ZX-VGA картой у мну все работает ... :biggrin:

ZEK
19.01.2014, 23:01
есть еще event'ы ( события )
а каким боком event поможет, по адресным разрядам надо по И объединить от 1 до 8 байт, зависит от активных адресных разрядов, либо читать из предрасчитаной таблички 256 байт

zx-kit
19.01.2014, 23:04
и еще, не факт что на прерываниях STM32F0 потянет клавиатуру безвейтово у уже темболее без строба чтения, нечем будет дергать контролер что нужно выставить данных клавы, а реагировать на изменение адресных разрядов, вообще алес получится
Строб на схеме нужно добавить, подать на арм. Если есть сомнения в скорости, можно сделать схем на 8 регистрах сдвига и 40 диодах. Тогда строб чтения с клавиатуры не нужен будет.

---------- Post added at 00:04 ---------- Previous post was at 00:01 ----------


С вашей же ZX-VGA картой у мну все работает ... :biggrin:
Ну раньше все мечтали подключить спек к VGA, так как на тех мониторах PC показывал лучшую картинку. чем на тех телевизорах, у которых не было SCART. Сейчас разницы между монитором и телевизором почти нет. У телевизоров есть разъем VGA 60 Гц и SCART 50 Гц. Так зачем лишние преобразование и сидение на стуле за столом с монитором. Лучше сидеть на диване и играть на телевизоре.

ZEK
19.01.2014, 23:16
телевизоров есть разъем VGA 60 Гц и SCART 50 Гц.
ну за телек не каждого и пустят, жены и все такое, выход есть конечно, мониторотелевизор

dosikus
19.01.2014, 23:18
а каким боком event поможет, по адресным разрядам надо по И объединить от 1 до 8 байт, зависит от активных адресных разрядов, либо читать из предрасчитаной таблички 256 байт

Event'ы помогут с захватом порта с сигналами адресов .
Вообщем весь сбор/выхлоп данных с/на шин клавы , UART делать аппаратно.
Останется только обрабатывать данные с массивов заполняя другие массивы .
На пальцах это трудно объяснить, но кое что уже вырисовывается....

ZEK
19.01.2014, 23:19
по прерываниям, я мож путаю, но STM32 в лучшем раскладе за 12 тактов в прерывание входит, плюс надо небольшие махинации провести и выйти из обработчика, но однозначно вместо 8 регистров и жмени диодов, лучше ставить какой нить epm3064 и места меньше и по деньгам уже наверное дешевле

dosikus
19.01.2014, 23:20
Если есть сомнения в скорости, можно сделать схем на 8 регистрах сдвига и 40 диодах. Тогда строб чтения с клавиатуры не нужен будет..

Да ну на, все там хватит ...

ZEK
19.01.2014, 23:22
шить epm можно контролером, гуглить на тему svf плеер, сырки на Си попадались

dosikus
19.01.2014, 23:22
по прерываниям, я мож путаю, но STM32 в лучшем раскладе за 12 тактов в прерывание входит, плюс надо небольшие махинации провести и выйти из обработчика, но однозначно вместо 8 регистров и жмени диодов, лучше ставить какой нить epm3064 и места меньше и по деньгам уже наверное дешевле

Гы... Это ж не атмега ... Хотя даже она справляется ...

ZEK
19.01.2014, 23:23
Хотя даже она справляется ...
у атмеги 4-5 тактов на вход в прерывание, 4 инструкции выставить данные из таблички, есил какую то индексную пару не трогать, если не путаю

dosikus
19.01.2014, 23:28
у атмеги 4-5 тактов на вход в прерывание, 4 инструкции выставить данные из таблички, есил какую то индексную пару не трогать, если не путаю

Сначала читать и ощутить разницу между CortexM0 и AVR вообще ,
сравнить NVIC и AVR'ский недоконтроллер прерываний .
Вот потом можно будет сравнивать. ОК ? :biggrin:

ZEK
19.01.2014, 23:32
Вот потом можно будет сравнивать. ОК ?
вот тут как раз avr фору дает, врем входа меньше, можно только за счет частоты выжать нужное время реакции
arm7 хорошая штука была, FIRQ

dosikus
19.01.2014, 23:35
вот тут как раз avr фору дает, врем входа меньше, можно только за счет частоты выжать нужное время реакции
arm7 хорошая штука была, FIRQ

Да брось , STM32F0 по любому AVR сливает. :biggrin:

ZEK
19.01.2014, 23:36
Да брось , AVR по любому даже STM32F0 сливает.
Я не спорю, по вот по такому параметру как время реакции на прерывания, STM32F0 сливает, F1 за счет частоты, уже вровень пойдут

dosikus
19.01.2014, 23:43
Гы .. не верно акценты расставил - исправил. :))))))
Ты, я так понял , пытаешься себя убедить, зацепившись за непонятное тебе, что AVR хоть в чем то превзошла F0 ? :))))))
Ошибаешься . Еще раз повторю NVIC это не AVR'cкий контроллер прерываний ...

zx-kit
20.01.2014, 10:36
но однозначно вместо 8 регистров и жмени диодов, лучше ставить какой нить epm3064 и места меньше и по деньгам уже наверное дешевле
Не совсем однозначно. Регистры и диоды оптом будут стоить около 40 руб (оптом: регистр 74HC595D по 3 руб., двойной диод BAT54A по 0.6 руб), их легче купить и не нужно прошивать через разъем IDC-10M. ПЛИС стоить будет около 120 руб + разъем для прошивки. С регистрами можно поставить мелконогий дешевый арм F030 только для UART и загрузки данных в регистры сдвига. С этими регистрами последовательная загрузка может быть с произвольной скоростью, а затем одним импульсом мгновенно записывается параллельно. Это упростит программу и работать будет даже, если Z80 на 7 МГц, так как адреса с Z80 на регистры выдаются заранее до сигналов чтения из порта клавиатуры. Дешевое и недежное решение

---------- Post added at 11:36 ---------- Previous post was at 11:31 ----------


Event'ы помогут с захватом порта с сигналами адресов .
Вообщем весь сбор/выхлоп данных с/на шин клавы , UART делать аппаратно.
Останется только обрабатывать данные с массивов заполняя другие массивы .
На пальцах это трудно объяснить, но кое что уже вырисовывается....

Если бы ДМА могло передавать быстро данные из одного из двух буферов по 256 байт наружу МК, было бы хорошо. Мы тогда подготовливали бы в одном из буферов свежие данные после прихода пакета, а из второго была бы передача через ДМА.

Вопрос по выбору микроконтроллера. Семейство M0 быстрое 48 МГц (F030, F051), но в бесплатной версии компилятора IAR у него ограничение по объему кода 16 Кб. Для других семейств - 32 Кб. Также уроки и книги есть только (или больше) для семейства М3. Но оно более медленное 24 МГц (F100). Подойдет ли нам F100 ?

dosikus
20.01.2014, 12:01
Если бы ДМА могло передавать быстро данные из одного из двух буферов по 256 байт наружу МК, было бы хорошо. Мы тогда подготовливали бы в одном из буферов свежие данные после прихода пакета, а из второго была бы передача через ДМА.

Может , про что я здесь и пою.


Вопрос по выбору микроконтроллера. Семейство M0 быстрое 48 МГц (F030, F051), но в бесплатной версии компилятора IAR у него ограничение по объему кода 16 Кб. Для других семейств - 32 Кб. Также уроки и книги есть только (или больше) для семейства М3. Но оно более медленное 24 МГц (F100). Подойдет ли нам F100 ?

100ка -103е старые .
32k хватит за глаза , на изучение , да и на сам проект.
А далее можете на гнутые перейти, если боитесь кряков.
Нужны уроки - http://kazus.ru/forums/forumdisplay.php?f=34
Создавайте ветку - всегда я и другие будут рады помочь, мешающих отошьем ...

zx-kit
20.01.2014, 18:04
100ка -103е старые .

Лучше 051 заложить, т.к. они современнее и импользовать STM32F0DISCOVERY для макетирования ?


32k хватит за глаза , на изучение , да и на сам проект.

А 16 хватит ?


А далее можете на гнутые перейти, если боитесь кряков.
Нужны уроки - http://kazus.ru/forums/forumdisplay.php?f=34

А для STM32F0DISCOVERY есть ?


Создавайте ветку - всегда я и другие будут рады помочь, мешающих отошьем ...

ZEK
20.01.2014, 18:49
Может , про что я здесь и пою.
Мысль развернуто можно? мне кажется чего то недопонимаю
Интересно

dosikus
20.01.2014, 19:09
Мысль развернуто можно? мне кажется чего то недопонимаю
Интересно

Ну как вариант , причем уже описывал ранее.
Со стороны USART - DMA укладывает данные в память (как вариант массив) .
Со стороны адресов (сканбит) так же DMA по таймеру (или стробу)
захватывает порт и укладывает в память.
Анализируем принятое с UART сравниваем с сканбитом -если соответствует выводим в порт данных .
Здесь, насколько понимаю, быстрее всего будет происходить обновление сканбита . Нажатие кнопки самое медленное .:biggrin:

ZEK
20.01.2014, 19:15
dosikus, нифига не понял

1. Спектрум все время щелкает адресами в том числе и старшими (A15-A8)
2. В какой то момент он решил прочитать состояние кнопок, к примеру, есть ли нажатые кнопки на синклер джобстинках A8=0 A11=0 остальные Axx=1 и появляется строб чтения из порта 0xFE (что в этот момент будет делать ARM ?)
3. Надо выставить данные, подождать пока строб пропадет
4. Пришли новые данные о нажатых клавишах (что делает ARM ?)

dosikus
20.01.2014, 19:27
А для STM32F0DISCOVERY есть ?

У меня есть сия дискаверина и как раз сейчас ковыряю . :biggrin:

---------- Post added at 19:27 ---------- Previous post was at 19:19 ----------


dosikus, нифига не понял


Я так же . :biggrin:
Ибо писал, что не знаю работу спеки .
Если есть сигнал по которому и только по которому нужно выводить на данные клавиатуры , задействуем его .
А вообще я что то не понял - ты мне что проверку решил устроить ????? :biggrin:
Не засирай мне мозг.
Как же тогда механическая клавиатура работает ?:biggrin:
Сканбит на адресах выделит нажатые кнопки , а 555КП11 запишут когда надо .
И если спекки щелкает адресами , то на KL0-KLx так же будет что то в зависимости от нажатых клавиш -
но без /IN_K&K на шину не попадет.
Так же и на STM32, здесь можно дополнительно фильтровать именно сканбит на адресной шине .

Данные о клавишах будут поступать намного медленней чем обновляться цикл сканбита .
Вот кстати - если не ошибаюсь сканирование клавиатуры происходит в прерывании ? С какой частотой ?

zx-kit
20.01.2014, 19:34
Разве только старые монохром :
Дисплей Nokia 1112, 1110i
Там и подсветка есть и функционал подходит.
SPI интерфейс AVR тянет - делал уже .

Дисплей от Nokia 1202/1203/1280 можно подключить к АРМ для изображения клавиатуры 4 ряда по 10 символов ?

Когда IN K&K = 0 нужно на КП11 быстро передать байт из массива размером 256 байтов с индексом, равным старшему байту адреса Z80.

ZEK
20.01.2014, 19:47
задействуем его .
клавиатура спектрума это 8 строк по 5 кнопок, одновременно можно выбрать хоть все 8 строк, если есть желание побыстрому проверить нажатие кнопки на клавиатуре, что бы это дело корректно отработать, надо в зависимости от старших адресных разрядов, брать значение столбцов для кнопок и по AND их объединять, время реакции, буквально 2,5 такта на частота 3.5мгц проца, либо 2 такта и выставить wait, но это плохой вариант

на avr сделали так, из матрицы 40кнопок (8 рядов 5колонок) делают табличку на 256 байт, где уже все предрасчитанно и фактически обработчик прерывания выглядит так

rdval:
in r31, (portd)
ld r16, z
out (portb), r16
ret

---------- Post added at 18:45 ---------- Previous post was at 18:38 ----------


ты мне что проверку решил устроить ?????
хочу понять, причем тут dma и event, мож есть какой то хитросделанный фокус покус

---------- Post added at 18:47 ---------- Previous post was at 18:45 ----------


Вот кстати - если не ошибаюсь сканирование клавиатуры происходит в прерывании ? С какой частотой ?
как программе приспичит, так и будет сканировать, это в бейсике по умолчанию висит на прерываниях и там юзается сканбит, в софтах, юзают по несколько выбранных строк одновременно, и вообще не пойму, нафик сканбит, ARM не собирается клаву сканить, он собирается притворятся механической клавиатурой, то есть реагировать на 8 входных сигналов в произвольной комбинации, должен выдать 5 бит, которые бы выдала механическая клавиатура, должен сделать это быстро

zx-kit
20.01.2014, 19:48
У меня есть сия дискаверина (STM32F0DISCOVERY) и как раз сейчас ковыряю . :biggrin:
Вот бы ее к Фениксу подпаять вместо АТМЕГИ. И имитировать периодическое нажатие одной кнопки. По алгоритму работы поможем. Для начала - прочитать старший байт адреса при прерывании.



Вот кстати - если не ошибаюсь сканирование клавиатуры происходит в прерывании ? С какой частотой ?
Это только в ПЗУ и правильных программах, а в остальных - кто кодгда хочет, даже может быть постоянный опрос.

Можно от девборды подпаять пока три провода. Один - сигнал чтения из порта клавиатуры (выв. 12 /INT0), второй - один из 8 битов адреса A8-A15 (A12 Z80), третий один из 5 битов данных на клавиатуру (сразу не сообразишь, куда). Остальное дело программирования - будем нажимать кнопку 0.

ZEK, Поправьте по схеме, если ошибусь.

Нет ли более простого клона, где есть разъем под механическую клавиатуру ?

dosikus
20.01.2014, 20:06
хочу понять, причем тут dma и event, мож есть какой то хитросделанный фокус покус

А что такое event ты знаешь ? :biggrin:
Я спрашиваю потому, что не знаю с чего тебе придется начинать объяснять .:biggrin:
И не факт что сие и задействовать понадобится, я приводил event'ы как механизм мощнее прерываний , не мешающий ядру.

Так уважаемые, оба .
Механическая клава - тупо , на основании скан бита на адресах , выводит
данные на KL0-KLx .
С чего вы панику наводите ? С этим вариантом все получится.
Хотим большего, давайте попросим у caro исходники, чем гадать ...

ZEK
20.01.2014, 20:16
dosikus, не парься, посчитали уже на 48мгц, если на асме написать обработчик, все успеет, даже может в турбе

dosikus
20.01.2014, 20:17
dosikus, не парься, посчитали уже на 48мгц, если на асме написать обработчик, все успеет, даже может в турбе
Он и на С успеет .:biggrin:

zx-kit
20.01.2014, 20:21
Так уважаемые, оба .
Механическая клава - тупо , на основании скан бита на адресах , выводит
данные на KL0-KLx .
С чего вы панику наводите ? С этим вариантом все получится.
Хотим большего, давайте попросим у caro исходники, чем гадать ...
У него на ассемблере на частоте 20 МГц. Принцип итак понятен - быстрее программно нельзя сделать.
Сможет ли АРМ на С успеть сделать тоже самое на 48 МГц ?

dosikus
20.01.2014, 20:24
У него на ассемблере на чатоте 20 МГц. Принцип итак понятен - быстрее программно нельзя.

Давайте не будем гадать и все время сравнивать с AVR .
Пойдет так пойдет - нет, удовлетворим желание ZEK - воткнем 103ий .:biggrin:

dosikus
21.01.2014, 09:56
zst, В помощь .
The Definitive Guide to the
ARM Cortex-M0
Joseph Yiu
http://caxapa.ru/thumbs/424855/The_Definitive_Guide_to_the_ARM_Cortex-M.pdf

dosikus
21.01.2014, 19:44
Дисплей от Nokia 1202/1203/1280 можно подключить к АРМ для изображения клавиатуры 4 ряда по 10 символов ?

Легко ...

zx-kit
21.01.2014, 20:12
Легко ...

Это хорошо. Надо купить девборды и индикаторы для макетирования. Я так понял, что шлейф можно паять и он не расплавится. Шаг контактов у него какой ? Символы размером 8х8 точек можно будет разглядеть ? И общий размер какой ?

Программа прерывания будет примерно такой:

void ISR_IN_FE (void)
{
PORT_KEY_DATA = KEY_BUFFER [PORT_KEY_ADDR];
}

Как ARM данные по 8 и 5 битов обрабатывают ?
Какую среду разработки качать: IAR или KEIL ?

dosikus
21.01.2014, 20:33
Это хорошо. Надо купить девборды и индикаторы для макетирования. Я так понял, что шлейф можно паять и он не расплавится. Шаг контактов у него какой ? Символы размером 8х8 точек можно будет разглядеть ? И общий размер какой ?
Там коннектор , если не ошибаюсь 10 pin .



Программа прерывания будет примерно такой:

void ISR_IN_FE (void)
{
PORT_KEY_DATA = KEY_BUFFER (PORT_KEY_ADDR);
}

Прерываться от чего бум?
Есть вариант на EXTI - повесить на каждый вход от адресов спекки .
В прерывании будем иметь сканбит в полученном байте,
преобразуем вес разряда в порядковый номер бита - получаем индекс массива .

В итоге что то типа этого (внимание !!! Это только надумки!!)



void EXTI4_15_IRQHandler (void)
{

....
cut
....

index= Conv( PORT_KEY_ADDR);
PORT_KEY_DATA = KEY_BUFFER [index];

}

Массив KEY_BUFFER [], будет забивать DMA от USART, автоматом , почти ...




Как ARM данные по 8 и 5 битов обрабатывают ?
Какую среду разработки качать: IAR или KEIL ?

1) нормально , так же как и другие . :)))
2) Качайте Keil http://rutracker.org/forum/viewtopic.php?t=2305709
Ставите сам MDK и паки , в паках можно выбрать только STM .
В IAR обнаружил пакость, что не даст использовать STM по полной ...

zx-kit
21.01.2014, 20:42
Прерываться от чего бум?
Есть вариант на EXTI - повесить на каждый вход от адресов спекки .
В прерывании будем иметь сканбит в полученном байте,
преобразуем вес разряда в порядковый номер бита - получаем индекс массива .

В итоге что то типа этого (внимание !!! Это только надумки!!)


В прерывании надо читать сразу 8 бит адреса. Этот байт будет индексом в массиве.

Лучше вырубить все остальные дма и прерывания. Оставить только на клавиатуру. Наличие нового байта лучше ожидать в цикле. Если пришел байт - прочитать его и начать анализировать. Предлагаю для дополнительной синхронизации сделать проверку: если в принятом байте 3 старших бита 000 - значит начало пакета, счетчик байтов установить на 0 (если не ожидаем контрольного байта). У следующих байтов 3 старших бита 111. По номеру байта в пакете складывать их в соответствующие переменные (не массив), например, A8_KEY_LINE - A15_KEY_LINE. Тут скорость особая не нужна. Если в последнем байте контрольная совпала - вызываем подпрограмму декодирования - распаковки. Она из 8 байтов должна сделать 256 байтов на все варианты 8 битов адреса. Вот тут скорость нужна, чтобы быстро вычислить 256 байтов.

dosikus
21.01.2014, 20:47
В прерывании надо читать сразу 8 бит адреса. Это будет индекс в массиве.

Все биты и бум читать ,
в сей хэндлер попадаем если хоть один вход изменится ( параметры настраиваются)



Лучше вырубить все остальные дма и прерывания. Оставить только на клавиатуру.

Зачем ? Это не AVR ни что никому мешать не будет .
А поллинг только усугубит - отвыкайте от AVR ...

zx-kit
21.01.2014, 20:53
Все биты и бум читать ,
в сей хэндлер попадаем если хоть один вход изменится ( параметры настраиваются)

Зачем ? Это не AVR ни что никому мешать не будет .
А поллинг только усугубит - отвыкайте от AVR ...
Лучше прерывания по сигналу IN_FE (IN_K&K). В этот момент Z80 читает состояние клавиатуры. И байт адреса нужно обрабатывать целиком. Для максимальной скорости лучше эту единственную команду в подпрограмме прерывания написать на ассемблере. Возможно лучше использовать не массив, а адреса в ОЗУ.

Кроме обработки клавиатуры контроллеру ничего делать не нужно.

dosikus
21.01.2014, 21:00
. По номеру байта в пакете складывать их в соответствующие переменные (не массив), например, A8_KEY_LINE - A15_KEY_LINE. Тут скорость особая не нужна.

Тут дело не только в скорости .
Со стороны keypad'а ничего не упаковывать . Keypad полученные данные с клавиатуры , джойстика и т.д -
передает по UART пакетом , где например первые ( и не обязательно) 5 (или сколько там строк у клавы) уже вычисленные состояния нажатых клавиш. Последующие байты состояние мыши/джойстика.
Со стороны модуля в спекки - DMA укладывает принятый пакет от UART побайтно в массив KEY_BUFFER [] ...

---------- Post added at 21:00 ---------- Previous post was at 20:55 ----------


Лучше прерывания по сигналу IN_FE (IN_K&K). В этот момент Z80 читает состояние клавиатуры. И байт адреса нужно обрабатывать целиком.
Еще проще, но тогда не универсально - сей сигнал есть у всех спекки ?



Для максимальной скорости лучше эту единственную команду в подпрограмме прерывания написать на ассемблере.
Чувствуется , что Вас кто то направляет. Асм то накуа ?????????



Возможно лучше использовать не массив, а адреса в ОЗУ.


А вот это вообще не понимаю . Массив и так будет в RAM...

zx-kit
21.01.2014, 21:01
Тут дело не только в скорости .
Со стороны keypad'а ничего не упаковывать . Keypad полученные данные с клавиатуры , джойстика и т.д -
передает по UART пакетом , где например первые ( и не обязательно) 5 (или сколько там строк у клавы) уже вычисленные состояния нажатых клавиш. Последующие байты состояние мыши/джойстика.
Со стороны модуля в спекки - DMA укладывает принятый пакет от UART побайтно в массив KEY_BUFFER [] ...
Для получения кода клавиатуры надо передавать 8 байтов (40 бит состояния). По одному биту на кнопку. Это и есть без упаковки. 256 байтов расчитывать и передавать долго. У нас скорость примерно 19200. Рассчитывать будем, когда примем весь пакет без ошибок.


А вот это вообще не понимаю . Массив и так будет в RAM...

Кто его знает, как компилятор начнет рассчитывать адрес байта по индексу. Еще раз повторяю - это очень важно сделать максимально быстро. Или делать схему придется на регистрах. Иначе будет глюкодром.

Если байты UART-а складывать по ДМА, потом его обрабатывать - это усложнит обработку. Из 8 байтов состояния клавиатуры мы должны для каждого нового пакета рассчитывать 256 вариантов данных клавиатуры.

dosikus
21.01.2014, 21:14
Нет, на клавиатуру надо передавать 8 байтов (40 бит состояния). По одному биту на кнопку. Это и есть без упаковки. 256 байтов расчитывать и передавать долго. У нас скорость примерно 19200.

Я Вас не понимаю , то Вы экономите а здесь начинаете транжирить .
Я предлагаю передавать уже вычисленную строку состояние механической ZX клавы , а не порядковый номер кнопки. В keypad контроллер зачем жалеете? И в модуле спекки уже вычислять ничего не будем - будем тупо раскидывать принятые данные по портам ...




Кто его знает, как компилятор начнет рассчитывать адрес байта по индексу. Еще раз повторяю - это очень важно сделать максимально быстро. Или делать схему придется на регистрах. Иначе будет глюкодром.

Мда , а как же у меня все это работает , вот я дурак то . :biggrin:
Уважаемый, прекратите свои AVR надумки, очень Вас прошу ...

ZEK
21.01.2014, 21:17
dosikus,
оно если без таблични должно быть так



byte addr; // тут старший байт шины адреса
byte[8] rows; // тут значение нажатых кнопок для каждой строки

byte scan = 0x01;
byte res = 0xFF;
int cnt = 0;

while (cnt++<8)
{
if (addr & scan) == 0)
res &= rows[cnt];

scan <<=1;
}

dosikus
21.01.2014, 21:22
dosikus,
оно если без таблични должно быть так



byte addr; // тут старший байт шины адреса
byte[8] rows; // тут значение нажатых кнопок для каждой строки

byte scan = 0x01;
byte res = 0xFF;
int cnt = 0;

while (cnt++<8)
{
if (addr & scan) == 0)
res &= rows[cnt];

scan <<=1;
}


Угу , все варианты рассмотрим .

ZEK
21.01.2014, 21:27
и еще, посмотрел в даташит, посчитал, у ARM будет 18 тактов на то что бы выставить данные, из них 12 вход в прерывание, остается 6 тактов

Считаем, 1 так Z80 на 3,5 мгц это 285нс
1 такт ARM на 48МГц это 21нс

данные процу надо через полтора такта после того как он опустил iorq и rd
=285нс * 1,5 = 430нс, делаем запас на логику 50нс к примеру остается 380нс

380нс/ 21нс = 18 тактов - 12 тактов на вход в прерывание, остается 6 тактов, вот какой тут в гланды Си

zx-kit
21.01.2014, 21:27
Я Вас не понимаю , то Вы экономите а здесь начинаете транжирить .
Я предлагаю передавать уже вычисленную строку состояние механической ZX клавы , а не порядковый номер кнопки. В keypad контроллер зачем жалеете?

Извните, пока не получается объяснить принцип работы клавиатуры и как должна для этого работать компьютерная часть устройства. Попробую еще раз.
40 кнопок разбиты на группы по 5 штук. Каждой пятерке соответствует один бит адреса Z80 от A8 до A15. При чтении состояния 5 кнопок Z80 выставляет соответствующий бит адреса в 0, остальные в 1. На шину данный (биты D4-D0) при этом подается состояние этих 5 кнопок.

Поэтому на стороне кейпада мы готовим 8 байтов состояния клавиатуры по 5 значимых битов. 0 в соответствующем бите - значит кнопка нажата. 1 - не нажата. Эти 8 байтов с 40 значимыми битами мы и передаем на компьютерную часть. Но дело осложняется тем, что большинство программ устанавливает на адресах A8-A15 не по одному биту, а как вздумается в любой комбинации. Поэтому мы должны, для работы этих программ сделать все 256 вариантов. При этом если два бита адреса в 0, то в результат получается из двух байтов из 8, например, A8_KEY_LINE & A12_KEY_LINE.

AHTuXPuCT
21.01.2014, 21:27
у экрана от нокии 1280 не коннектор, а сразу на плату он припаивается.
да и стоит он примерно 50р

zx-kit
21.01.2014, 21:31
у экрана от нокии 1280 не коннектор, а сразу на плату он припаивается.
да и стоит он примерно 50р
Хвостик коротковат. Может потребоваться удлиннитель. А цена хорошая.

AHTuXPuCT
21.01.2014, 21:35
можно и от сименсов экранов найти. А60/С60 например.
по оптовой цене экран 1202/1280 даже меньше 40р

dosikus
21.01.2014, 21:38
Но дело осложняется тем, что большинство программ устанавливает на адресах A8-A15 не по одному биту, а как вздумается в любой комбинации. Поэтому мы должны, для работы этих программ сделать все 256 вариантов. При этом если два бита адреса в 0, то в результат получается из двух байтов из 8, например, A8_KEY_LINE & A12_KEY_LINE.

Ничем оно не усложняется совершенно и не надо городить 256 комбинаций.
Если могут быть активными несколько адресов -то
придется делать так :
выбирать данные из массива по этим нескольким адресам-индексам ,объединять их по OR и выводить полученное .

---------- Post added at 21:38 ---------- Previous post was at 21:36 ----------


можно и от сименсов экранов найти. А60/С60 например.
по оптовой цене экран 1202/1280 даже меньше 40р

Лучше тогда SPI TFT 1.8' с китайских площадок .

AHTuXPuCT
21.01.2014, 21:40
dosikus, вот такие по 80р у нас - http://gsmserver.com/shop/spares/lcd/lcd_for_chinese_nokia_6300_s0200td9a_fpc_a_b_g_31. php


только они походу с паралельным интерфейсом

zx-kit
21.01.2014, 21:43
dosikus, вот такие по 80р у нас - http://gsmserver.com/shop/spares/lcd/lcd_for_chinese_nokia_6300_s0200td9a_fpc_a_b_g_31. php

только они походу с паралельным интерфейсом
От нокии можно купить в Профи. А он есть в Челябинске. Самое главное, что не боится пайки.

dosikus
21.01.2014, 21:45
AHTuXPuCT, да параллельные .
Там что то типа ILI9320 , но куда такого монстра ?
Ему уже FSMC понадобиться , а это 100pin 103ий как минимум ...

zx-kit
21.01.2014, 21:55
Ничем оно не усложняется совершенно и не надо городить 256 комбинаций.
Если могут быть активными несколько адресов -то
придется делать так :
выбирать данные из массива по этим нескольким адресам-индексам ,объединять их по OR и выводить полученное .
К сожалению. на вычисления в реальном режиме не хватит времени. Поэтому и предлагается рассчитать заранее 256 вариантов сразу после приема пакета.

dosikus
21.01.2014, 22:00
К сожалению. на вычисления в реальном режиме не хватит времени. Поэтому и предлагается рассчитать заранее 256 вариантов сразу после приема пакета.

О каких вычислениях речь ????

zx-kit
21.01.2014, 22:50
О каких вычислениях речь ????
Вроде простые операции, но они займут несколько тактов:

Если могут быть активными несколько адресов -то
придется делать так :
выбирать данные из массива по этим нескольким адресам-индексам ,объединять их по OR и выводить полученное

dosikus
21.01.2014, 23:33
Вроде простые операции, но они займут несколько тактов:
Ну так выбрать из массива с 8ю элементами, наверное проще и быстрее чем из 256ти ? :biggrin:

ZEK
21.01.2014, 23:35
и быстрее чем из 256ти ?
выбрать из массива это 1 инструкция
сложить 8 байт с проверкой условий, хз сколько инструкций, не?

особенно когда есть всего 6 тактов

dosikus
21.01.2014, 23:45
ZEK, давайте все вживую завтра буду проверять , если время будет .
И так - решили все же заводить строб чтения клавы ?
1) сколько он длительностью минимально- максимально?
2) Я накидаю код - пока минимальный на проверку реакции :
На пин заводим положительный импульс , по фронту прерывание, в прерывании
манипуляции и выхлоп строба в порт .
Снимаю все лог.анализатором . Для ускорения процесса внешний сигнал буду генерировать отдельным пином на той же борде .
А там уже бум гадать ...

ZEK
22.01.2014, 00:01
1) сколько он длительностью минимально- максимально?
да пофик сколько длится, скорее всего где то 400нс
но с момента переднего фронта есть 380-400нс, в течении которых данные проц забирает с шины

dosikus
22.01.2014, 00:03
но с момента переднего фронта есть 380-400нс, в течении которых данные проц забирает с шины

Ок ...

ZEK
22.01.2014, 16:28
давайте все вживую завтра буду проверять
время получилось выкроить?

dosikus
22.01.2014, 16:38
время получилось выкроить?

Сегодня увы не получилось , отложил на завтра...

dosikus
23.01.2014, 09:28
время получилось выкроить?

Ну в общем да, с прерыванием полная лажа - меньше 600 nS даже в тесте, и даже на асме не получим .
Как ранее и хотел- надо рыть аппаратную реализацию, на DMA, событиях и т.д.
Короче пошел я дальше извращаться .
Кстати могу на 103 и F4 до кучи по тестить .:biggrin:


Да, что еще хотел узнать ,
можно еще узнать время, между установкой на адресах и фронтом /IN_K&K?
Мобыть здесь уместимся ?:biggrin:

---------- Post added at 09:28 ---------- Previous post was at 09:20 ----------


У него на ассемблере на частоте 20 МГц.

Вот смотрю я на схему Phoenix - вижу вход тактовой -14МГц .:biggrin:
Вот кто мне может на пальцах объяснить как в ZXMC сие работает .
Может извращениями занимаемси - загоняя все в такие жесткие рамки? :biggrin:

И еще :

Можно примеры чтения клавиатуры, на спекковском асме , если можно с раскладкой тактов.

zx-kit
23.01.2014, 10:35
Способы увеличения скорости:

1. Если не пробовали, сделать вывод заранее рассчитанного значения из массива:
На C:
PORT_KEY_DATA = BUFFER [PORT_KEY_ADDRESS]

На ассемблере:
IN R28, PORT_KEY_ADDRESS ; загрузка адреса клавиатуры в младший байт регистра Y
LD TMP, Y ; чтение байта из буфера/таблицы по адресу Y
OUT PORT_KEY_DATA, TMP ; запись байта в порт данных клавиатуры.

2. Сделать схему на самом дешевом арме, 8 регистрах и 20 двойных диодах - очень быстрая схема и контрольная сумма

3. Сделать схему без микроконтроллера и контрольной суммы на 8 регистрах и 20 двойных диодах. 3 входных сигнала вместо одного RX - - очень быстрая схема, но нет контрольной суммы пакета

4. Сделать схему без микроконтроллера на ПЛИС, включая протокол типа UART - очень быстрая схема и контрольная сумма, но неполноценный UART

5. Сделать на ATMЕГЕ c частотой 20 МГц, у которой есть два свободных порта, и RX на третьем. Писать на ассемблере. Трудно найти подходящий МК по доступной цене.

В контроллере клавиатуры Феникса скорее всего есть wait-ы, в KEYB&SINC нет wait-oв.

dosikus
23.01.2014, 11:05
zst, Да дело в том что в прерывание мы попадаем через 600nS после фронта.
В те условия что поставил ZEK похоже хрен впишемся.:biggrin:
Блин хоть внешнюю RAM двунаправленую ставь .:biggrin:
Посмотрел чтение портов в Z80 - крутизна .

ASDT
23.01.2014, 12:02
pic parallel slave port?

dosikus
23.01.2014, 12:13
2. Сделать схему на самом дешевом арме, 8 регистрах и 20 двойных диодах - очень быстрая схема и контрольная сумма


Как Вам такое :
SRAM самая дешевая . Выкинуть пуллапы с данных клавиатуры + мультиплекс на адреса .
Имеем аппаратную эмуляцию клавы практически без кромсания схемы спекки.
Теряем - 8 пинов + 5пинов + 1управление мультиплексом + 1 SRAM запись.
Не надо привязываться к сигналам спекки + обновление данных раз в 20mS за глаза и за уши...


pic parallel slave port?
Опять таки - определить латентность прерываний .
Тут дело не в скорости выхлопа - а время реакции ...

Blade
23.01.2014, 12:18
Atmega48 за 1.5$

dosikus
23.01.2014, 12:25
Atmega48 за 1.5$

Ну чем Atmega здесь поможет ? Если даже успеет выхлоп из буфера за 400nS , то остальное увы все лесом ...

ASDT
23.01.2014, 16:17
2 атмеги?

dosikus
23.01.2014, 16:29
2 атмеги?

Да хоть 10. :biggrin:
Здесь количество в качество не переходит.

ЗЫ ... Снова ничего не успел, но взял домой все .
Дома по тестю на STM32F103C8T6. Но цена уже выше - в чипнн 120р.

zx-kit
23.01.2014, 20:51
zst, Да дело в том что в прерывание мы попадаем через 600nS после фронта.
В те условия что поставил ZEK похоже хрен впишемся.:biggrin:

По данным ZEK время перехода на функцию обработки прерываний должно быть 12/48=0.25 мкс. А у вас 0.6 мкс. Что-то не так. Или частота не 48 МГц. Или 12 тактов это для F100-103, а у F051 количество тактов равно 0.6*48 = 28.8

Пробовали для измерения в функции обработки прерываний просто уровень сигнала менять без дополнительных команд ?

ZEK, можно на ПЛИС EPM3064 написать аналог схемы на регистрах + интерфейс UART?

Мы что-то долго разрабатываем компьютерную часть ZX Remote KEYPADа. А на какой конфигурации удаленной части мы остановились и что для реализации нужно ? Если подвести итоги обсуждения, то намечается коробочка с индикатором от телефона и двумя кнопками для выбора типа джойстика и команд.

К этой коробочке можно подключить:


Mini KeyPad из 6 механических кнопок
SEGA джойстик
NES/SNES джойстик
PS/2 клавиатуру
PS/2 мышку
USB клавиатуру
USB мышку
USB джойстик


Не много ли ? Что в этом списке лишнее ? Если у нас будет клавиатура и мы будем передавать ее данные через 2 байта, что с ними делать дальше в компьютерном блоке ? Нужно учитывать, что в оригинальном Спектруме у KEMPSTON джойстика и мышки одинаковые адреса и они не могли быть подключены одновременно.

ASDT
23.01.2014, 21:34
Если делать в стиле Спектрума, то на 1816ВЕ31 + восемь регистров + ...

zx-kit
23.01.2014, 21:55
Если делать в стиле Спектрума, то на 1816ВЕ31 + восемь регистров + ...

Кстати, прикинул размер на печатной плате 8 регистров + диоды. Получилось около 20 х 20 мм. Я считаю, что - нормально.

Для справки привожу габариты деталей (корпус + выводы) :

Диод = 2.5 * 3.0 мм
Регистр = 5.1 * 6.6 мм
ARM = 6.6 * 6.6 мм

dosikus
23.01.2014, 22:14
Дома по тестю на STM32F103C8T6.

Вообщем практически тоже самое - 500nS .

zx-kit
23.01.2014, 22:16
Вообщем практически тоже самое - 500nS .

Ничего, сделаем на логике. Какие мысли есть насчет второй части кейпада ?

dosikus
23.01.2014, 22:23
По данным ZEK время перехода на функцию обработки прерываний должно быть 12/48=0.25 мкс. А у вас 0.6 мкс. Что-то не так. Или частота не 48 МГц. Или 12 тактов это для F100-103, а у F051 количество тактов равно 0.6*48 = 28.8

Да все верно, для F0 не 12 тактов а 16 и плюс латентность прерываний, заложенная вендором,
и плюс то что у F0 0.9MIPS и плюс пара тактов на установку пина



Пробовали для измерения в функцие обработки прерываний просто уровень сигнала менять без дополнительных команд ?

Точно так же ,
собственно почему и не особо уповал на прерывания , надо аппаратный способ рыть или внешнее железо.

---------- Post added at 22:23 ---------- Previous post was at 22:21 ----------


Какие мысли есть насчет второй части кейпада ?

Ну в Вашем списке все кроме USB можно на STM32F051 реализовать.

zx-kit
23.01.2014, 22:32
надо аппаратный способ рыть или внешнее железо.
...
Ну в Вашем списке все кроме USB можно на STM32F051 реализовать.

А если 12-16 механических кнопок подключить к арму через регистры сдвига, то можно будет загружать их как NES/SNES.

Количество выводов:
Механические кнопки через регистры = 3
NES/SNES = 3
SEGA = 7
Индикатор от телефона = 3 ?
UART TX = 1
2 * PS/2 = 4

Итого: 3 + 3 + 7 + 3 +1 + 4 = 21

Нужен 64-ногий арм с учетом совместимости с +5 В.

ZEK
23.01.2014, 23:19
arm с usb хостом и хабом + cpld
как по мне, самое интересный вариант, особеноо если вместо экранчика вывод накладывать на видевыхлоп, видео армрм просто вывести будет, dma

dosikus
23.01.2014, 23:19
Механические кнопки через регистры = 3
NES/SNES = 3

Индикатор от телефона = 3 ?


Тут надо посмотреть будет . Если получиться использовать LATCH у сдвиговых регистров как CE (CS) то количество пинов можно сократить .

ASDT
23.01.2014, 23:38
Может dsPIC?

dosikus
24.01.2014, 00:08
Может dsPIC?

Тогда уж лучше F4, при таких то ценах .:biggrin:

zx-kit
24.01.2014, 06:19
Тогда уж лучше F4, при таких то ценах .:biggrin:

Как вы считаете, сможем мы подключить USB клавиатуру и мышку - 2 USB устройства на одном арме ? Тогда PS/2 нам не нужен будет.
Подберем тот арм, который подойдет. F4DISCOVERY заказал для экспериментов, но там один USB.

dosikus
24.01.2014, 08:02
Как вы считаете, сможем мы подключить USB клавиатуру и мышку - 2 USB устройства на одном арме ?

F4DISCOVERY заказал для экспериментов, но там один USB.
Так это легко решается хабом .
Легко правда на словах , как и писал выше с USB пока на Вы.:biggrin:
F4DISCOVERY у меня есть, счас по тестирую хотелку на прерываниях.

dosikus
24.01.2014, 12:05
Гы ... На F4 без оптимизации , тупой вывод из массива в соответствии с захваченными адресами - 330nS . 168МГц тактовая от HSE.

http://s43.radikal.ru/i101/1401/22/9f106e644965.png

http://s017.radikal.ru/i430/1401/7e/52fd22ec7cb7.png





void EXTI2_IRQHandler (void)
{
uint16_t input_buff;
uint8_t output_buff=0;


EXTI_STB_ON;

input_buff=(GPIOB->IDR)&0x00ff;
switch(input_buff)
{
case 0x01:output_buff |=key_buff[0];break;
case 0x02:output_buff |=key_buff[1];break;
case 0x04:output_buff |=key_buff[2];break;
case 0x08:output_buff |=key_buff[3];break;
case 0x10:output_buff |=key_buff[4];break;
case 0x20:output_buff |=key_buff[5];break;
case 0x40:output_buff |=key_buff[6];break;
case 0x80:output_buff |=key_buff[7];break;
default:break;
}

GPIOB->ODR=output_buff;

EXTI_STB_OFF;
EXTI->PR |=EXTI_PR_PR2;







EXTI2_IRQHandler PROC
;;;2
;;;3 void EXTI2_IRQHandler (void)
000000 2000 MOVS r0,#0
;;;4 {
;;;5 uint16_t input_buff;
;;;6 uint8_t output_buff=0;
;;;7
;;;8
;;;9 EXTI_STB_ON;
000002 2202 MOVS r2,#2
000004 4b48 LDR r3,|L1.296|
000006 619a STR r2,[r3,#0x18]
;;;10
;;;11 input_buff=(GPIOB->IDR)&0x00ff;
000008 4a48 LDR r2,|L1.300|
00000a 6812 LDR r2,[r2,#0]
00000c b2d1 UXTB r1,r2
;;;12 switch(input_buff)
00000e 2910 CMP r1,#0x10
000010 d020 BEQ |L1.84|
000012 dc08 BGT |L1.38|
000014 2901 CMP r1,#1
000016 d00d BEQ |L1.52|
000018 2902 CMP r1,#2
00001a d00f BEQ |L1.60|
00001c 2904 CMP r1,#4
00001e d011 BEQ |L1.68|
000020 2908 CMP r1,#8
000022 d127 BNE |L1.116|
000024 e012 B |L1.76|
|L1.38|
000026 2920 CMP r1,#0x20
000028 d018 BEQ |L1.92|
00002a 2940 CMP r1,#0x40
00002c d01a BEQ |L1.100|
00002e 2980 CMP r1,#0x80
000030 d120 BNE |L1.116|
000032 e01b B |L1.108|
|L1.52|
;;;13 {
;;;14 case 0x01:output_buff |=key_buff[0];break;
000034 4a3e LDR r2,|L1.304|
000036 7812 LDRB r2,[r2,#0] ; key_buff
000038 4310 ORRS r0,r0,r2
00003a e01c B |L1.118|
|L1.60|
;;;15 case 0x02:output_buff |=key_buff[1];break;
00003c 4a3c LDR r2,|L1.304|
00003e 7852 LDRB r2,[r2,#1] ; key_buff
000040 4310 ORRS r0,r0,r2
000042 e018 B |L1.118|
|L1.68|
;;;16 case 0x04:output_buff |=key_buff[2];break;
000044 4a3a LDR r2,|L1.304|
000046 7892 LDRB r2,[r2,#2] ; key_buff
000048 4310 ORRS r0,r0,r2
00004a e014 B |L1.118|
|L1.76|
;;;17 case 0x08:output_buff |=key_buff[3];break;
00004c 4a38 LDR r2,|L1.304|
00004e 78d2 LDRB r2,[r2,#3] ; key_buff
000050 4310 ORRS r0,r0,r2
000052 e010 B |L1.118|
|L1.84|
;;;18 case 0x10:output_buff |=key_buff[4];break;
000054 4a36 LDR r2,|L1.304|
000056 7912 LDRB r2,[r2,#4] ; key_buff
000058 4310 ORRS r0,r0,r2
00005a e00c B |L1.118|
|L1.92|
;;;19 case 0x20:output_buff |=key_buff[5];break;
00005c 4a34 LDR r2,|L1.304|
00005e 7952 LDRB r2,[r2,#5] ; key_buff
000060 4310 ORRS r0,r0,r2
000062 e008 B |L1.118|
|L1.100|
;;;20 case 0x40:output_buff |=key_buff[6];break;
000064 4a32 LDR r2,|L1.304|
000066 7992 LDRB r2,[r2,#6] ; key_buff
000068 4310 ORRS r0,r0,r2
00006a e004 B |L1.118|
|L1.108|
;;;21 case 0x80:output_buff |=key_buff[7];break;
00006c 4a30 LDR r2,|L1.304|
00006e 79d2 LDRB r2,[r2,#7] ; key_buff
000070 4310 ORRS r0,r0,r2
000072 e000 B |L1.118|
|L1.116|
;;;22 default:break;
000074 bf00 NOP
|L1.118|
000076 bf00 NOP ;14
;;;23 }
;;;24
;;;25 GPIOB->ODR=output_buff;
000078 4a2c LDR r2,|L1.300|
00007a 1d12 ADDS r2,r2,#4
00007c 6010 STR r0,[r2,#0]
;;;26
;;;27 EXTI_STB_OFF;
00007e f44f3200 MOV r2,#0x20000
000082 4b29 LDR r3,|L1.296|
000084 619a STR r2,[r3,#0x18]
;;;28 EXTI->PR |=EXTI_PR_PR2;
000086 4a2b LDR r2,|L1.308|
000088 6812 LDR r2,[r2,#0]
00008a f0420204 ORR r2,r2,#4
00008e 4b29 LDR r3,|L1.308|
000090 601a STR r2,[r3,#0]
;;;29
;;;30 }
000092 4770 BX lr
;;;31
ENDP

dosikus
24.01.2014, 20:19
zst, Если интересно - небольшой quick_start для F4
http://kazus.ru/forums/showthread.php?t=106278

zx-kit
24.01.2014, 20:30
Гы ... На F4 без оптимизации , тупой вывод из массива в соответствии с захваченными адресами - 330nS . 168МГц тактовая от HSE.


Отлично ! 150 ns от начала импульса прерывания до результата команды EXTI_STB_ON;

Теперь давайте займемся оптимизацией:

1. Импульс прерывания нужно сделать другой полярности. То есть при чтении из порта клавиатуры IN_FE (IN_K&K) сигнал равен 0, а не 1.

2. Немного сократим функцию прерывания:


...
EXTI_STB_ON;

GPIOB->ODR = key_buff2 [(GPIOB->IDR)&0x00ff];

EXTI_STB_OFF;
...


3. Массив key_buff2 заполним заранее, сразу после получения пакета по UART:


...
for (key_address = 0; key_address <= 255; key_address++) // цикл адреса с клавиатуры от 0 до 255 для заполнения массива данных с клавиатуры
{
key_data = 255; // начальный результат - все единицы - кнопки не нажаты
tmp_byte = key_address; // копируем для разбора по битам
for (b = 7; b >= 0; b--) // цикл по битам адреса с клавиатуры
{
tmp_byte &= 0x00ff; // обнуляем все биты, кроме 8 младших
if (tmp_byte < 128) // если старший бит в байте 0, то
{
key_data &= key_buff[b]; // добавляем к результату состояние соответствующего ряда клавиатуры из пакета
}
tmp_byte = tmp_byte << 1; // сдвигаем байт адреса влево
}
key_buff2[key_address] = key_data; // рассчитанный байт клавиатуры для данного адреса клавиатуры записываем в массив
}

dosikus
24.01.2014, 21:06
1. Импульс прерывания нужно сделать другой полярности. То есть при чтении из порта клавиатуры IN_FE (IN_K&K) сигнал равен 0, а не 1.



Дык в курсе , все это легко переделывается :


EXTI->IMR |= EXTI_IMR_MR2;
EXTI->RTSR |=EXTI_RTSR_TR2; <- меняем на EXTI->FTSR |=EXTI_FTSR_TR2;
NVIC_SetPriority(EXTI2_IRQn ,12);
NVIC_EnableIRQ(EXTI2_IRQn );



2. Немного сократим функцию прерывания:


...
EXTI_STB_ON;

GPIOB->ODR = key_buff2 [(GPIOB->IDR)&0x00ff];

EXTI_STB_OFF;
...


Вы все таки хотите буфер на 256 , А смысл, если теперь укладываемся ?
Я тут протащил эмуляцию - самый тяжелый вариант когда входной буфер адресов равен 0xFF.
Смотрите сами - 600nS . Думаю норм если, учесть что это быдлокод, да еще и отладку выкинуть.


http://s020.radikal.ru/i717/1401/c0/621fac793760.png


void EXTI2_IRQHandler (void)
{
uint8_t input_buff;
uint8_t output_buff=0;


EXTI_STB_ON;

input_buff=(uint8_t)(GPIOB->IDR)&0x00ff;
input_buff=0xFF;

if(input_buff & 0x01)output_buff |=key_buff[0];
if(input_buff & 0x02)output_buff |=key_buff[1];
if(input_buff & 0x04)output_buff |=key_buff[2];
if(input_buff & 0x08)output_buff |=key_buff[3];
if(input_buff & 0x10)output_buff |=key_buff[4];
if(input_buff & 0x20)output_buff |=key_buff[5];
if(input_buff & 0x40)output_buff |=key_buff[6];
if(input_buff & 0x80)output_buff |=key_buff[7];

GPIOB->ODR=output_buff;

EXTI_STB_OFF;
EXTI->PR |=EXTI_PR_PR2;

}



EXTI2_IRQHandler PROC
;;;2
;;;3 void EXTI2_IRQHandler (void)
000000 2000 MOVS r0,#0
;;;4 {
;;;5 uint8_t input_buff;
;;;6 uint8_t output_buff=0;
;;;7
;;;8
;;;9 EXTI_STB_ON;
000002 2202 MOVS r2,#2
000004 4b46 LDR r3,|L1.288|
000006 619a STR r2,[r3,#0x18]
;;;10
;;;11 input_buff=(uint8_t)(GPIOB->IDR)&0x00ff;
000008 4a46 LDR r2,|L1.292|
00000a 6812 LDR r2,[r2,#0]
00000c b2d1 UXTB r1,r2
;;;12 input_buff=0xFF;
00000e 21ff MOVS r1,#0xff
;;;13
;;;14 if(input_buff & 0x01)output_buff |=key_buff[0];
000010 f0110f01 TST r1,#1
000014 d002 BEQ |L1.28|
000016 4a44 LDR r2,|L1.296|
000018 7812 LDRB r2,[r2,#0] ; key_buff
00001a 4310 ORRS r0,r0,r2
|L1.28|
;;;15 if(input_buff & 0x02)output_buff |=key_buff[1];
00001c f0110f02 TST r1,#2
000020 d002 BEQ |L1.40|
000022 4a41 LDR r2,|L1.296|
000024 7852 LDRB r2,[r2,#1] ; key_buff
000026 4310 ORRS r0,r0,r2
|L1.40|
;;;16 if(input_buff & 0x04)output_buff |=key_buff[2];
000028 f0110f04 TST r1,#4
00002c d002 BEQ |L1.52|
00002e 4a3e LDR r2,|L1.296|
000030 7892 LDRB r2,[r2,#2] ; key_buff
000032 4310 ORRS r0,r0,r2
|L1.52|
;;;17 if(input_buff & 0x08)output_buff |=key_buff[3];
000034 f0110f08 TST r1,#8
000038 d002 BEQ |L1.64|
00003a 4a3b LDR r2,|L1.296|
00003c 78d2 LDRB r2,[r2,#3] ; key_buff
00003e 4310 ORRS r0,r0,r2
|L1.64|
;;;18 if(input_buff & 0x10)output_buff |=key_buff[4];
000040 f0110f10 TST r1,#0x10
000044 d002 BEQ |L1.76|
000046 4a38 LDR r2,|L1.296|
000048 7912 LDRB r2,[r2,#4] ; key_buff
00004a 4310 ORRS r0,r0,r2
|L1.76|
;;;19 if(input_buff & 0x20)output_buff |=key_buff[5];
00004c f0110f20 TST r1,#0x20
000050 d002 BEQ |L1.88|
000052 4a35 LDR r2,|L1.296|
000054 7952 LDRB r2,[r2,#5] ; key_buff
000056 4310 ORRS r0,r0,r2
|L1.88|
;;;20 if(input_buff & 0x40)output_buff |=key_buff[6];
000058 f0110f40 TST r1,#0x40
00005c d002 BEQ |L1.100|
00005e 4a32 LDR r2,|L1.296|
000060 7992 LDRB r2,[r2,#6] ; key_buff
000062 4310 ORRS r0,r0,r2
|L1.100|
;;;21 if(input_buff & 0x80)output_buff |=key_buff[7];
000064 f0110f80 TST r1,#0x80
000068 d002 BEQ |L1.112|
00006a 4a2f LDR r2,|L1.296|
00006c 79d2 LDRB r2,[r2,#7] ; key_buff
00006e 4310 ORRS r0,r0,r2
|L1.112|
;;;22
;;;23 GPIOB->ODR=output_buff;
000070 4a2c LDR r2,|L1.292|
000072 1d12 ADDS r2,r2,#4
000074 6010 STR r0,[r2,#0]
;;;24
;;;25 EXTI_STB_OFF;
000076 f44f3200 MOV r2,#0x20000
00007a 4b29 LDR r3,|L1.288|
00007c 619a STR r2,[r3,#0x18]
;;;26 EXTI->PR |=EXTI_PR_PR2;
00007e 4a2b LDR r2,|L1.300|
000080 6812 LDR r2,[r2,#0]
000082 f0420204 ORR r2,r2,#4
000086 4b29 LDR r3,|L1.300|
000088 601a STR r2,[r3,#0]
;;;27
;;;28 }
00008a 4770 BX lr
;;;29
ENDP






3. Массив key_buff2 заполним заранее, сразу после получения пакета по UART:


Хорошо , я тут накидаю и протащу .
Надо еще внешний стимулятор сделать, раскинуть порты и подумать как сие соптимизировать на счет пинов . Думается все в один порт ...

zx-kit
24.01.2014, 21:22
Вы все таки хотите буфер на 256 , А смысл, если теперь укладываемся ?
Я тут протащил эмуляцию - самый тяжелый вариант когда входной буфер адресов равен 0xFF.
Смотрите сами - 600nS . Думаю норм если, учесть что это быдлокод, да еще и отладку выкинуть.
...
if(input_buff & 0x01)output_buff |=key_buff[0];

Тут надо добавлять к результату по &


...
Хорошо , я тут накидаю и протащу .

Да, это бы позволило ставить MК по проще / дешевле. К тому же в некоторых компьютерах сигнал чтения с клавиатуры может формироваться долго, что для механической клавиатуры не важно, а у нашей схемы не будет запаса. Да и некоторые Z80 работают на частоте 7МГц.

Кстати USB работает только на частоте 48 МГц.

ZEK
24.01.2014, 21:49
Дык в курсе , все это легко переделывается :
ну и смысл в F4 юзатать если ATmega48 справляется, в F0 был смысл в цене, F4 по цене уже не конкурент

---------- Post added at 20:49 ---------- Previous post was at 20:47 ----------

Тянуть за уши ARM ради ARM, не вариант, гораздо более годный вариант F0+CPLD

dosikus
24.01.2014, 21:50
Кстати USB работает только на частоте 48 МГц.

Это Вы о чем? И к чему ? 4xx есть OTG Hs а это 480мбитс.


Повесил на вход кнопку :

http://s020.radikal.ru/i705/1401/2b/12b8541b1f0a.png

Как видите все стабильно, те же 600nS при проверке всего порта.

zx-kit
24.01.2014, 21:53
ну и смысл в F4 юзатать если ATmega48 справляется, в F0 был смысл в цене, F4 по цене уже не конкурент
...
гораздо более годный вариант F0+CPLD
А только на CPLD можно сделать ?

dosikus
24.01.2014, 21:53
ну и смысл в F4 юзатать если ATmega48 справляется, в F0 был смысл в цене, F4 по цене уже не конкурент[COLOR="Silver"]
Тянуть за уши ARM ради ARM, не вариант, гораздо более годный вариант F0+CPLD

Где она справляется , покажи будь добр .
Если это о ZXMC , то не находишь что совершенно разные вещи сравниваем ?
И если ты помнишь - изначально я F0 предлагал - чисто джойстики подключить , без клавы.
У меня уже тесты прошли и все пашет - два STM32F030 +2 x nRF24L01 + джойстик NES .
Начинаю ковырять сторону джойстика на предмет прожорливости ...

ZEK
24.01.2014, 21:57
void EXTI2_IRQHandler (void)
{
uint8_t input_buff;
uint8_t output_buff=0;


EXTI_STB_ON;

input_buff=(uint8_t)(GPIOB->IDR)&0x00ff;
input_buff=0xFF;

if(input_buff & 0x01)output_buff |=key_buff[0];
if(input_buff & 0x02)output_buff |=key_buff[1];
if(input_buff & 0x04)output_buff |=key_buff[2];
if(input_buff & 0x08)output_buff |=key_buff[3];
if(input_buff & 0x10)output_buff |=key_buff[4];
if(input_buff & 0x20)output_buff |=key_buff[5];
if(input_buff & 0x40)output_buff |=key_buff[6];
if(input_buff & 0x80)output_buff |=key_buff[7];

GPIOB->ODR=output_buff;

EXTI_STB_OFF;
EXTI->PR |=EXTI_PR_PR2;

}


заменяется на

static uint8_t[256] kb_tab; // предрасчитанная табличка

void EXTI2_IRQHandler (void)
{
EXTI_STB_ON;
GPIOB->ODR=kb_tab[(uint8_t)(GPIOB->IDR)&0x00ff];
EXTI_STB_OFF;
EXTI->PR |=EXTI_PR_PR2;
}

---------- Post added at 20:55 ---------- Previous post was at 20:54 ----------


Если это о ZXMC , то не находишь что совершенно разные вещи сравниваем ?
а в чем разница? все тоже потянет

---------- Post added at 20:57 ---------- Previous post was at 20:55 ----------

Можно чуть запаса производительности взять какую нить xmega32
гривен за 30

zx-kit
24.01.2014, 22:03
Это Вы о чем? И к чему ? 4xx есть OTG Hs а это 480мбитс.

В листке данных на STM32F407VG (http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00037051.pdf) в разделе USB (стр.36) написано:
"..The USB OTG full-speed controller requires a dedicated 48 MHz clockthat is generated by a PLL connected to the HSE oscillator..."

Что я ошибочно понял как: если вы работаете с USB, то частоту с 168 нужно снизить до 48 МГц. Поэтому особо крутой арм для работы и ненужен. Все равно частота 48 МГц будет.

PS. Все нормально. Я неправильно перевел, вот версия перевода от гугла: OTG USB контроллер на полной скорости требуется специальный часы 48 МГц что порождается PLL, соединенного с генератором.

dosikus
24.01.2014, 22:06
заменяется на

static uint8_t[256] kb_tab; // предрасчитанная табличка

void EXTI2_IRQHandler (void)
{
GPIOB->ODR=kb_tab[(uint8_t)(GPIOB->IDR)&0x00ff];
EXTI_STB_OFF;
EXTI->PR |=EXTI_PR_PR2;
}


Да не заменяется , вы видите только часть целого ... :biggrin:



а в чем разница? все тоже потянет[COLOR="Silver"]
Можно чуть запаса производительности взять какую нить xmega32
гривен за 30

Гы... Ну да ... загонять здесь STM32 в жесткие времянки, плакаться что AVR круче и сравнивать с ZXMC где AVR работает в тепличных условиях . Разницы никакой совершенно . :biggrin:

Ну да, ну да, давайте XэМЕГА , давайте еще SAM приткнем - ЭТО ЖЕ КРУТА ЭТО ЖЕ AVR , Долбанный STM32 ни хрена не справляется . :biggrin::biggrin::biggrin:

ZEK
24.01.2014, 22:11
Да не заменяется , вы видите только часть целого ...
какую же мы часть не видим, кроме того что у некторых фантазии нехватает разделить некритичные и критичные по времени процессы?

Ну да ... загонять здесь STM32 в жесткие времянки, плакаться что AVR круче и сравнивать с ZXMC где AVR работает в тепличных условиях
мне вообще пофик платформа, я исхожу из сдравого смысла, и уж точно не вижу сысла в 168Мгц проце для эмуляции клавиатуры и еще нескольких портов, ладно если бы оно дешевле было, так оно раз в 7 дороже

dosikus
24.01.2014, 22:15
PS. Наверно, я неправильно перевел: OTG USB контроллер на полной скорости требуется специальный часы 48 МГц что порождается PLL, соединенного с генератором.

Да, Вы не правильно и перевели и поняли .
Частота тактирования USB выставляется различными множителями конфигурилками PLL . См картинку :


http://s019.radikal.ru/i615/1401/43/ceae99359225.png

ZEK
24.01.2014, 22:15
stm32f0 рвет avr по цена/производительность, за исключением хренового контролера прерываний, все остальное проигрывает по цене, при том что avr хватает, вот в чем смысл

zx-kit
24.01.2014, 22:30
dosikus, вы почему-то измеряете скорость арма в невыгодных для него условиях. В атмеге используется именно чтение из таблицы. Давайте сравнивать в одинаковых условиях. Тогда может оказаться, что F0 будет быстрее, чем F4 в невыгодных условиях, когда много команд в функции прерываний.

Желательно все-таки иметь два МК от одного производителя. Как часть в удаленной части кейпада арм подходит. Ждем нового теста скорости.

dosikus
24.01.2014, 22:44
какую же мы часть не видим, кроме того что у некторых фантазии нехватает разделить некритичные и критичные по времени процессы?
Вот давай только не будем именно счас переходить на личности.
Проверяется один из многих вариантов , причем сразу скажу ваше раскидывание на массив из 256байт не самый лучший , на бессильном AVR может это и единственный выход.:biggrin:





мне вообще пофик платформа, я исхожу из сдравого смысла, и уж точно не вижу сысла в 168Мгц проце для эмуляции клавиатуры и еще нескольких портов, ладно если бы оно дешевле было, так оно раз в 7 дороже
Ну если пофиг то давай и сравнивать адекватно.
Снова же, проверяется один из многочисленных вариантов,
И STM32F4 дискавери - это всего лишь то что есть из F4 под рукой - есть и дешевле чипы в 400х? на 64 пина .
Никто же не озвучивает - это единственный и религиозно верный вариант.
Тестим , сравниваем ...:biggrin:

---------- Post added at 22:37 ---------- Previous post was at 22:32 ----------




за исключением хренового контролера прерываний,

Не смеши меня.:biggrin:



все остальное проигрывает по цене, при том что avr хватает, вот в чем смысл

Второй упертый.
Ну хорошо AVR быстрее среагирует на внешнее прерывание.
Дальше что ?
Это единственное что она в этих времянках сможет .
Только выплевывать буфер , ни принять ни обработать ресурсов не хватит . :biggrin: Но она рассово верная же .:biggrin:

---------- Post added at 22:44 ---------- Previous post was at 22:37 ----------


dosikus, вы почему-то измеряете скорость арма в невыгодных для него условиях. В атмеге используется именно чтение из таблицы.

Специально для выяснения пределов .
Обычное дело - сначала определяем влезет ли в заданные рамки, затем вылизываем.
Хреново будет тогда ,когда изначально заоптимизированный код работающий на пределе глюкнет.



Давайте сравнивать в одинаковых условиях. Тогда может оказаться, что F0 будет быстрее, чем F4 в невыгодных условиях, когда много команд в функцие прерываний.


Ну вроде уже определились - захватить адреса по стробу и вывести данные , на STM32F0 не выйдет.
Реализовать реинкарнацию ZXMC - да.
Реализовать только джойстики без клавы - да.

zx-kit
24.01.2014, 22:50
Ну вроде уже определились - захватить адреса по стробу и вывести данные , на STM32F0 не выйдет.

А на STM32F103 ?

ZEK
24.01.2014, 22:52
Ну если пофиг то давай и сравнивать адекватно.
только не в контексте что кто умеет, а в контексте решаемой задачи

Только выплевывать буфер , ни принять ни обработать ресурсов не хватит
хватит, он там процентов 95 времени сидит ждет у моря погоды (данные от клавы)

zx-kit
24.01.2014, 23:16
Будем ли мы поддерживать KEMPSTON MOUSE ?

По данным из ftp://ftp.worldofspectrum.org/pub/sinclair/technical-docs/KempstonMouse_Schematics.png
мышка имеет три адреса:

X-AXIS PORT xxxxx011 xx0xxxxx (8 бит данных)
Y-AXIS PORT xxxxx111 xx0xxxxx (8 бит данных)
BUTTONS PORT xxxxxx10 xx0xxxxx (2 бита данных)

Получается нужно еще одно прерывание с разными адресами. Но в Ленинграде и некоторых других компьютерах используется общий порт клавиатуры и кемпстон-джойстика через мультиплексор.

Тогда мы не сможем сделать схему на одном МК. Нужен МК+CPLD. Давайте остановимся на связке ARMF030 + EPM3064. Тогда мы сможем разместить в ПЛИС 8 регистров по 5 бит = 40 для клавиатуры, 8+8+2=18 триггеров для КЕМПСТОН мышки и джойстика. Итого: 40 + 18 = 58 триггеров. ZEK, это реализуемо ?

Три сигнала WAIT, NMI, RESET можно подавать с арм через диоды на Z80.
На кейпаде придется поставить тумблер: KEMPSTON JOYSTICK / KEMPSTON MOUSE.

Схема KEMPSTON JOYSTICK: ftp://ftp.worldofspectrum.org/pub/sinclair/technical-docs/KempstonJoystick+Interface_Schematics.gif

В компьютере можно подключить мышку и джойстик к порту джойстика, отрезав от земли 3 старших разряда мультиплексора в Ленинграде.

Или забить на мышку и оставить только джойстик.

dosikus
24.01.2014, 23:39
zst, Посмотрите личку плиз.

zx-kit
24.01.2014, 23:46
У меня уже тесты прошли и все пашет - два STM32F030 +2 x nRF24L01 + джойстик NES .
Начинаю ковырять сторону джойстика на предмет прожорливости ...
Индикатор от телефона туда влезет ?

dosikus
25.01.2014, 00:00
Индикатор от телефона туда влезет ?

Смогу проверить только в понедельник .
Надо попытаться повесить на один SPI и джойстик и дисплей.

zx-kit
25.01.2014, 00:05
Смогу проверить только в понедельник .
Надо попытаться повесить на один SPI и джойстик и дисплей.
А если взять STM32F051 ? А по размеру этот или подобный индикатор влезет в корус джойстика ? Так бы сделали джойстик + арм + индикатор + провод. И уже был бы девайс, который заменяет все типы джойстиков и клавиатуру. Минимальный вариант. Для ходилок-бродилок подойдет.

Хотя все-таки коробочка с индикатором и разъемом под джойстик предпочтительней - легче установить индикатор, без переделки джойстика.

Наверно надо пока отложить USB, мышки и остановиться на поддержке механического кейпада и сега - джойстика.

dosikus
25.01.2014, 00:13
А если взять STM32F051 ? А по размеру этот или подобный индикатор влезет в корус джойстика ? Так бы сделали джойстик + арм + индикатор + провод. И уже был бы девайс, который заменяет все типы джойстиков и клавиатуру. Минимальный вариант. Для ходилок-бродилок подойдет.

С STM32F051 можно и не экономить на пинах.
А вот дисплей в корпус... Если только снизу ставить .
Дисплеи что есть :
Парочка от 1101 , один от 1202 . - монохром
LS020 от сименс , 1.8 TFT с SPI . - цветные
HD44780
Это из более менее мелких .
Есть так же TIC33М и TIC55м но это 7 сегментные ,

ZEK
25.01.2014, 00:27
http://svn.clifford.at/libxsvf/trunk/
сырок одного из svf плеера, можно будет армом прошивать cpld, программатор для сборки вообще не понадобиться

---------- Post added at 23:27 ---------- Previous post was at 23:26 ----------

svf это тектовый формат, что выталкивать в jtag и с чем сравнивать выходные данные jtag

zx-kit
25.01.2014, 00:37
С STM32F051 можно и не экономить на пинах.
А вот дисплей в корпус... Если только снизу ставить .

Тогда лучше в коробочку с разъемом под джойстик

---------- Post added at 01:37 ---------- Previous post was at 01:35 ----------


http://svn.clifford.at/libxsvf/trunk/
сырок одного из svf плеера, можно будет армом прошивать cpld, программатор для сборки вообще не понадобиться

А по объему в EPM3064 наша схема влезет ? И какой размер svf файла будет ?

ZEK
25.01.2014, 02:41
И какой размер svf файла будет ?
его по последовательному порту передавать, по тому же что и прошивать arm, нет смысла его в прошивке arm держать

А по объему в EPM3064 наша схема влезет ?
40 кнопок точно влезут, а так попробывать надо, влезет туда мыша или нет

---------- Post added at 01:24 ---------- Previous post was at 01:10 ----------

С мышей 73 ячейки, так что не влазит

---------- Post added at 01:41 ---------- Previous post was at 01:24 ----------

сырок влоб написан, хз может что перекрутить оно плотнее усядется


module KBMS(
input wire [15:8] A,
output wire [5:0] KBD,

output wire [7:0] DQ,
input wire SELX,
input wire SELY,
input wire SELBT,

input wire [4:0] ARMA,
input wire [7:0] ARMD,
input wire ARMWR
);

//kb

reg [4:0] ROW [0:7];
wire [4:0] row [0:7];

generate
genvar i;
for(i=0; i<8; i=i+1)
begin :t
if (i==0)
assign row[i] = A[i+8] ? 5'h1F : ROW[i];
else
assign row[i] = A[i+8] ? row[i-1] : row[i-1] & ROW[i];

always @ (posedge ARMWR)
if (ARMA == i)
ROW[i] = ARMD;
end
endgenerate

assign KBD = row[7];

//ms
reg [7:0] x,y;
reg [1:0] bt;

always @ (posedge ARMWR)
begin
if (ARMA == 9) x = ARMD;
if (ARMA == 10) y = ARMD;
if (ARMA == 11) bt = ARMD;
end

assign DQ = SELX ? x : 8'hzz;
assign DQ = SELY ? y : 8'hzz;
assign DQ = SELBT ? bt : 8'hzz;

endmodule

zx-kit
25.01.2014, 11:59
его по последовательному порту передавать, по тому же что и прошивать arm, нет смысла его в прошивке arm держать

40 кнопок точно влезут, а так попробывать надо, влезет туда мыша или нет

---------- Post added at 01:24 ---------- Previous post was at 01:10 ----------

С мышей 73 ячейки, так что не влазит

Тогда остается ARM F030 + EPM3128

dosikus
25.01.2014, 12:37
Тогда остается ARM F030 + EPM3128

Лишь бы было не слишком дорого и удовлетворило все хотелки + возможность расширения ...

ZEK
25.01.2014, 13:54
Место дисплея, надо выводить картинку на экран спектрума, захватывать шину, выводить менюху, потом востанавливать память и отпускать проц, тут была уже такого рода разработка, вопрос с экраном отпадает и интерфейс самый удобный, можно с растояния не подходя к коробочкам регулировать что то

dosikus
25.01.2014, 14:46
ZEK, ты все таки хочешь замену ZXMC ?
Тогда и плисины не нужны будут .
Давайте тогда определимся :
- девайс с минимальной доработкой спектрума .
- замена ZXMC + навороты от ZEK .

ZEK
25.01.2014, 17:32
- девайс с минимальной доработкой спектрума .
- замена ZXMC + навороты от ZEK .
ну так оно по доработкам идентично, эмуль клавиатуры еще можно подключать к разъему, а вот мышу только к шине, для kemston джопстика как повезет, может быть разъем, а может и не быть,

так вот после подключения мыши и клавиатуры, остается еще 3-4 сигнала добавить и получится почти вся шина идет на девайс

dosikus
25.01.2014, 17:47
ZEK, А вот существуют ли исходники ZXMC ?
Или только то что на форуме ?
Дизасемблирование и въезд займет время ,
единственно плюсом пойдет то что исходники были на асме ...

ZEK
25.01.2014, 18:33
ZEK, А вот существуют ли исходники ZXMC ?
нет вроде, но были другие контролеры

zx-kit
25.01.2014, 20:17
Купил для экспериментов несколько индикаторов от телефонов Nokia 1202 и девплаты F0, F4, VL. По какой схеме лучше подключать ?
Габариты индикатора 36 х 32 мм и шлейф 8 х 6 мм. Толщина около 3 мм. Шаг дорожек на шлейфе 0.6 мм.

---------- Post added at 21:17 ---------- Previous post was at 21:11 ----------


Место дисплея, надо выводить картинку на экран спектрума, захватывать шину, выводить менюху, потом востанавливать память и отпускать проц, тут была уже такого рода разработка, вопрос с экраном отпадает и интерфейс самый удобный, можно с растояния не подходя к коробочкам регулировать что то

Это требует глобальной доработки компьютера. Проще подключить индикатор и подавать сигналы на стандартные порты клавиатуры и кемпстон джойстика. Индикатор нужен для оперативного нажатия любой кнопки в игре без клавиатуры и для перепрограммирования кнопок на кейпаде или сеге джойстике.

dosikus
25.01.2014, 20:30
Купил для экспериментов несколько индикаторов от телефонов Nokia 1202 и девплаты F0, F4, VL. По какой схеме лучше подключать ?

Вот подключение http://tuxotronic.org/wiki/component/lcd/ste2007
Да в сети полно схем .
Здесь инициализация SPI под F4 http://kazus.ru/forums/showthread.php?t=107360
Но примитив , но для старта пойдет .
Здесь можешь начать с F4 -http://kazus.ru/forums/showthread.php?t=106278

Питание оба на пины 3.3v дискавери
GND
/RESET
/CS
CLK
MOSI
Все напрямую к дискавери .
Далее выводы LED , насколько помнится на них надо больше 5v , но можно и на 5v дискавери через резистор

Далее все просто:
По ссылки есть инит .
Задержка после включения платы ~100mS , что бы все устаканилось.
Или дернуть RESET .
Затем выплевыем последовательность инициализации .
И можем рисовать на дисплее...


Вот еще информация о дисплее http://we.easyelectronics.ru/lcd_gfx/naznachenie-nog-v-lcd-nokia-1202.html

А здесь вообще все готовое на VL http://ffix.ru/2010-11-04-13-47-03/item/17-stm32vldiscovery-%20-nokia-1202/1203/1208.html
Правда похоже через USART :)

На STM32F0 SPI 9 бит, так что без этих извращений все работает .

zx-kit
25.01.2014, 22:08
Дисплей от телефонов Nokia 1202/1203//1280 был выбран вместо стандартного символьного индикатора WH1202 или WH1602.

Цоколевку и внешний вид можно посмотреть тут (http://digitalchip.ru/uploads/2012/04/lcd_nokia_1202.jpg)

Достоинства дисплея от Nokia 1202:

Небольшие габариты и вес. Размер корпуса дисплея 36 х 32 мм и шлейф 8 х 6 мм. Толщина около 3 мм. Шаг дорожек на шлейфе 0.6 мм.

Возможность купить в небольших количествах по доступной цене в магазинах «Профи».

Питание и сигналы с уровнем +3.3 В.

Дисплей является графическим 96 х 68 точек. Если использовать символы размером 8 х 8, как в Speccy, то на экран уместится 8 строк по 12 символов. То есть, мы сможем изобразить сразу все 40 кнопок клавиатуры Speccy (4 ряда по 10 кнопок). А сверху влезет пояснительная надпись.

Только 3 сигнальных провода. Что экономит выводы контроллера. Данные на дисплей передаются последовательно по 9 бит через UART или SPI.

Возможность пайки к шлейфу. По сравнению с некоторыми другими дисплеями для этого не требуется разъем. Можно припаять шлейф прямо к плате устройства или с помощью тонких проводов. Шлейф телефона короткий, но термостойкий и имеет на конце дорожки с шагом 0.6 мм. Провода с таким шагом припаять трудно, но нам поможет то, что дорожки разведены с двух сторон. Тонкие провода для макетирования (такие есть в Профи уже залуженные по 100 штук) припаивать, чередуя стороны. К первому контакту провод паяем на верхней стороне шлейфа, второй — на нижней, третий — опять на верхней и т.д.

dosikus
25.01.2014, 22:48
Только 3 сигнальных провода. Что экономит выводы контроллера. Данные на дисплей передаются последовательно по 9 бит через UART или SPI.



Как выше и писал у STM32F0 SPI имеет фрэйм от 4 до 16 бит, с 9 битами работает на ура .


по 9 бит через UART

Только учтите там пример с USART с выходом клока

dosikus
27.01.2014, 12:55
Как-то так :

http://s57.radikal.ru/i156/1401/8d/7b672f1ff98b.jpg

http://s019.radikal.ru/i606/1401/23/75a42d8c09ed.jpg

ASDT
27.01.2014, 18:18
Вот Cortex-M3:
"There is a maximum of a twelve cycle latency from asserting the interrupt to execution
of the first instruction of the ISR when the me mory being accessed has no wait states
being applied. The first instruction to be executed is fetched in parallel to the stack push."

dosikus
27.01.2014, 18:31
Вот Cortex-M3:
"There is a maximum of a twelve cycle latency from asserting the interrupt to execution
of the first instruction of the ISR when the me mory being accessed has no wait states
being applied. The first instruction to be executed is fetched in parallel to the stack push."


Это хорошо что Вы читать умеете , но :
STM32F0 - Cortex M0 - 16 тактов + латентность добавленная вендором...


Interrupt Latency
Under normal situations, the interrupt latency of the Cortex-M0 processor is 16 cycles. The
interrupt latency is defined as from the processor clock cycle the interrupt is asserted, to the
start of the execution of the interrupt handler.

И как выше и писал - на прерывания ни кто не уповал, в STM32 развитая периферия -ее и надо пользовать...

ASDT
27.01.2014, 19:14
Просто М0 - УГ

dosikus
27.01.2014, 19:19
Просто М0 - УГ

"Плохому танцору и яйца мешают" (с)...:biggrin:
При такой цене , в купе с плюшками периферии - STM32F0xx убийца восьмибиток ...

ZEK
27.01.2014, 19:28
убийца восьмибиток ...
как оказалось, недобийца, в очень жестком рилтайме пасует, а задач где нужен резкий как понос но не сильно шустрым по жизни мк, думаю хватает

ASDT
27.01.2014, 19:55
Вот есть старая, как помет мамонта, ATTYNY2313-20, и вроде подходит ...

dosikus
27.01.2014, 19:58
как оказалось, недобийца, в очень жестком рилтайме пасует, а задач где нужен резкий как понос но не сильно шустрым по жизни мк, думаю хватает

ZEK, не начинай хвальбу "православным" AVR заново .
AVR здесь так же обосрется ...

---------- Post added at 19:58 ---------- Previous post was at 19:56 ----------


Вот есть старая, как помет мамонта, ATTYNY2313-20, и вроде подходит ...

Пруф ...

ASDT
27.01.2014, 20:14
interrupt = 5t
in + 1t
ld + 2t
out + 1t
total 8~10t ( 400-500ns )

---------- Post added at 19:44 ---------- Previous post was at 19:41 ----------

Правда с ATtiny4313

dosikus
27.01.2014, 20:17
ASDT, Не на пальцах .
Эпюры ...

ASDT
27.01.2014, 20:34
Может ещё сплясать?

PB - адрес, PD1-6 - выход кнопок
PA2 - int., PD0 - RxD

dosikus
27.01.2014, 21:18
Может ещё сплясать?

PB - адрес, PD1-6 - выход кнопок
PA2 - int., PD0 - RxD

Джигу с х..Тини в зубах .:biggrin:
Джойстик куда в .. воткнете ?

ASDT
27.01.2014, 21:29
Можно ещё одну ...
Можно мегу взять, но решение рабочее.

dosikus
27.01.2014, 21:34
Можно ещё одну ...
Можно мегу взять, но решение рабочее.

Тогда цена возрастет .
Здесь же изначально была ставка на стоимость и если уж решили подключать как ZXMC то должно и на F0 взлететь...

zx-kit
27.01.2014, 21:39
Предлагаю взять ARM STM32F030 в корпусе TSSOP-20 + ПЛИС EPM240T в корпусе TQFP-100.
Арм будет принимать пакеты и записывать данные в ПЛИС. А ПЛИС в зависимости от старшего байта будет выдавать данные на порты клавиатуры, кемпстон джойстика или мауса.

Предполагается подключение модуля согласования к компьютерам с портами механической клавиатуры и кемпстон джойстика. Потребуется отключить резисторы подтяжки, провода и другие элементы от входов этих портов. Обычно старшие адреса с Z80 подаются на клавиатуру через диоды - их оставляем. На входе ПЛИС подтягиваем аноды этих диодов резисторами 10 К к +3.3V.

На входах портов клавиатуры и кемпстона (в Ленинграде это порты на микросхемах К555КП11) нужно выпаять подтягивающие к + 5В резисторы и все, что к ним подключено, например самодельные SINCLAIR- джойстики. С выхода ПЛИС подаем на эти порты 5 битов на порт данных клавиатуры и 8 битов на порт КЕМПСТОН. Будем использовать этот порт для джойстика и мышки. Цифровой сигнал TAPE-IN, который можно использовать при загрузке оригинальных игр, подать на соответствующий порт клавиатуры.

Таким образом, у нас получается согласование с ПЛИС без дополнительных резисторов, диодов или буферов.

ПЛИС обеспечит максимальное быстродействие и позволит подключить модуль согласования даже к компьютерам с ТURBO, например, KAY, SCORPION. Один микроконтроллер, даже арм, не сможет обеспечить такой скорости и функционала. Выбранные МК и ПЛИС достаточно доступны и экономичны.

ASDT
27.01.2014, 21:44
ничего там не возрастает.
джойстик и на клавиатуре есть.
F0 - УГ.

---------- Post added at 21:14 ---------- Previous post was at 21:12 ----------

ARM? ПЛИС? Извращение для Спектрума ...

dosikus
27.01.2014, 21:55
ничего там не возрастает.
джойстик и на клавиатуре есть.
F0 - УГ.

Хотите о этом поговорить? Милости прошу на казус .
Ради тебя даже ветку постараюсь продержать несколько дней.
Хотя и дня хватит чтобы ты поменял свое мнение ...:biggrin:



ARM? ПЛИС? Извращение для Спектрума ...

Угу а AVR прямо таки созданы для спекки . Юморист блин.
Повторюсь - не хватает острых ощущений и хочется блеснуть знаниями
создай ветку на казусе...

---------- Post added at 21:55 ---------- Previous post was at 21:53 ----------



Таким образом, у нас получается ...


И плюсом будет максимально универсальный модуль .
Где не надо будет выкраивать и изыскивать ресурсы и свободно заняться творчеством.

ZEK
27.01.2014, 23:25
EPM240T в корпусе TQFP-100
для maxii надо будет преобразователи уровней ставить, не толеранта к 5в

dosikus
27.01.2014, 23:29
для maxii надо будет преобразователи уровней ставить, не толеранта к 5в
Один корпус с OD или 5штук мосфетов .
Дорожает ...
Но зато резисторы останутся.:biggrin:

ZEK
27.01.2014, 23:35
Хотите о этом поговорить? Милости прошу на казус .
сходни на пиководский форум, докажи что arm рулит, тоже долго не продержишся

---------- Post added at 22:33 ---------- Previous post was at 22:31 ----------


Где не надо будет выкраивать и изыскивать ресурсы и свободно заняться творчеством.
это вам на ПЦ, спектрум это мазахизм с выискиванием ресурсов, которых нет

---------- Post added at 22:35 ---------- Previous post was at 22:33 ----------

оно все красиво выглядело бы на одном корпусе stm32f0, но не судьба, если ставить cpld то в пару с ней надо ставить самое дешевое что есть, тиньку какую нить, она 146% вытянет и дисплей и пару PS/2 поротов и джойстики с последовательным интерфейсом, еще и бикать сможет