User Tag List

Страница 6 из 9 ПерваяПервая ... 23456789 ПоследняяПоследняя
Показано с 51 по 60 из 88

Тема: Как переделать практически любую клавиатуру в PS/2

  1. #51

    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    292
    Спасибо Благодарностей получено 
    53
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Наверное можно, при определенном программистском скилле.
    Мои игрушки: PowerbookG4 / MacMiniG4 / MacMini i5 / Amiga1260 / Commodore64 / Atari65XE / MSX1 SVI-728 / MSX2 КУВТ2 / MiST / MiSTer / Profi+ / KarabasPro / Speccy2010 / Aspect128 / ZX-UNO VGA 2M / PS3 / PS4Pro+PSVR / PSP / PS Vita / GBC / LDK Game / RG350M / iPhone / iPad / Raspberry Pi (0/3B+/4B/5)
    MorphOS / AmigaOS / MacOS / Linux

  2. #52

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    А нельзя пойти от обратного, проанализировать AVR'кой сначала контроллер (при наличии) на строки и столбцы, а потом уже соответствие кодов клавишам?
    Такой вариант подразумевает, что у нас есть клавиатура, ноут или еще что-то живое и действующее.
    А профит данного подхода был в том, чтобы заюзать любую клавиатуру, полученную отдельно от "туловища". То есть найти дешево подходящую по форм-фактору запчасть в китае или на разборе и встроить. Поэтому в более полном смысле надо анализировать именно матрицу.

  3. #53

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,480
    Спасибо Благодарностей отдано 
    310
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    217 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    Такой вариант подразумевает
    Да я понимаю, что он подразумевает, но зачастую оно есть.

    Цитата Сообщение от CLR Посмотреть сообщение
    Наверное можно, при определенном программистском скилле.
    Исходники тестера микросхем на ATMega который дергает различными комбинациями ног тут не помогут?

    Цитата Сообщение от valerium Посмотреть сообщение
    Поэтому в более полном смысле надо анализировать именно матрицу.
    Этот вариант, всяко, базовый. Тут нет вопроса.
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  4. #54

    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    292
    Спасибо Благодарностей получено 
    53
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тут люди уже озадачивались подобной проблемой: https://www.instructables.com/How-to...rd-Controller/
    Мои игрушки: PowerbookG4 / MacMiniG4 / MacMini i5 / Amiga1260 / Commodore64 / Atari65XE / MSX1 SVI-728 / MSX2 КУВТ2 / MiST / MiSTer / Profi+ / KarabasPro / Speccy2010 / Aspect128 / ZX-UNO VGA 2M / PS3 / PS4Pro+PSVR / PSP / PS Vita / GBC / LDK Game / RG350M / iPhone / iPad / Raspberry Pi (0/3B+/4B/5)
    MorphOS / AmigaOS / MacOS / Linux

    Этот пользователь поблагодарил CLR за это полезное сообщение:

    valerium(13.12.2020)

  5. #55

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CLR Посмотреть сообщение
    Тут люди уже озадачивались подобной проблемой: https://www.instructables.com/How-to...rd-Controller/
    Хороший вариант. Прямо как есть оно не годится - там usb-клавиатура на выходе, но идея практически наша. То есть подключить клавиатуру, по списку сопоставить нажатия сочетаниям строки-столбца, разобрать результат и пропатчить рабочую прошивку. Там еще есть какой-то код на python (Marcel's python program) в который я еще не вникал, который это все анализирует и выделяет наборы входных и выходных пинов (столбцов и строк).
    Ставить teensy даже 2.0 в это дороговато, хотя и соизмеримо с ардуинками. Мне кажется для нашей задачи достаточно avr-ки попроще, атмега 16/32 самое то. Принцип опроса линий для чтения клавиш в скетче весьма прост и понятен. И у нас он будет алгоритмически таким же.
    И там есть инфа по целой серии клавиатур - это справочно, но будет полезно.

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

    CLR, а как все это работает на трехступенчатой схеме (ps2avr - контроллер ps2 - спек) - там задержки адекватные ?
    Последний раз редактировалось valerium; 13.12.2020 в 20:47.

  6. #56

    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    292
    Спасибо Благодарностей получено 
    53
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    CLR, а как все это работает на трехступенчатой схеме (ps2avr - контроллер ps2 - спек) - там задержки адекватные ?
    На Speccy2010 вообще без проблем - как родная.

    P.S. Вызвонил окончательно матрицу Oklick840s - всё-таки довольно мудовое это занятие, без разбора. Хотя частичный прозвон через включённый контроллер и разъём fpc-26p на своей макетке несколько облегчили задачу. Ну и RC, подписанные на плате контроллера

    Алгоритм поиска нажатой клавиши при неизвестных входах R и C достаточно очевидный - назначаем первый контакт R, затем все остальные перебираем как предположительные C до пересечения; назначаем R второй контакт и по кругу. В итоге получившийся массив RC надо как-то распарсить по каждому минимальному количеству соответствий C при данном R. Кажется, тут даже неважно, будут ли итоговые значения соответствовать физическим линиям топологии; важнее логическая структура.

    Вот так выглядит итоговый кеймап (разрешение форум конечно "оптимизировал"):


    Глядя на эту таблицу, мне кажется, что некоторые столбцы можно смело соединить, там где значения не пересекаются по строкам, чтобы уменьшить количество соединений. Но будет ли это представлять проблему при нажатии некоторых комбинаций - пока неясно.
    Последний раз редактировалось CLR; 15.12.2020 в 11:19.
    Мои игрушки: PowerbookG4 / MacMiniG4 / MacMini i5 / Amiga1260 / Commodore64 / Atari65XE / MSX1 SVI-728 / MSX2 КУВТ2 / MiST / MiSTer / Profi+ / KarabasPro / Speccy2010 / Aspect128 / ZX-UNO VGA 2M / PS3 / PS4Pro+PSVR / PSP / PS Vita / GBC / LDK Game / RG350M / iPhone / iPad / Raspberry Pi (0/3B+/4B/5)
    MorphOS / AmigaOS / MacOS / Linux

  7. #57

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CLR Посмотреть сообщение
    Алгоритм поиска нажатой клавиши при неизвестных входах R и C достаточно очевидный - назначаем первый контакт R, затем все остальные перебираем как предположительные C до пересечения; назначаем R второй контакт и по кругу. В итоге получившийся массив RC надо как-то распарсить по каждому минимальному количеству соответствий C при данном R. Кажется, тут даже неважно, будут ли итоговые значения соответствовать физическим линиям топологии; важнее логическая структура.
    Вчитался тут в то, что написано на instructables - там логика выделения строк/столбцов интересная.
    Есть modifier keys - это оба alt, ctrl, shift, а также Fn, GUI - их всего 8 шт. У большинства изготовителей они расставлены так, чтобы работать в паре с любой другой клавишей без неоднозначных конфликтов, а также не мешать друг другу, поэтому правилом всех разводок клавиатуры является то, что они все восемь стоят на разных столбцах. Соответственно по их сканированию можно выделить 8 неповторяющихся линий, которые будут являться СТОЛБЦАМИ (cols) - к примеру если LAlt cканится как пересечение 20х21, а RAlt 21х18, то их неповторяющиеся линии (20 и 18 в данном случае) будут приняты как столбцы. Все остальные линии назначаются СТРОКАМИ (rows). В их видео это неплохо разъяснено.
    В итоге мы получаем 8 столбцов, относительно которых должны в большинстве случаев сосканироваться все строки. Вполне могут остаться строки, которые нам и не будут нужны. И это означает, что подавляющая часть клавиатур имеет структуру 8xN. Именно этот анализ выполняет "python-программа Марселя", для которой является обязательным отдельное сканирование клавиш-модификаторов.

    А теперь о практике. Появилось время - поиграл с клавиатурным контролером на atmega8 с avray.ru (PS/2->SPECCY, версия 5.5, ремейк схемы от caro). Он у меня вполне достойно заработал с живой клавиатурой на 25 мгц (на 16 вообще была тишина). Но с самодельной клавиатурой на atmega32 (KEYMATRIX->PS2), которая является скелетом для произвольной матрицы, он работать вообще не захотел, я пока не пойму, почему.
    На контроллере caro добавил подтяжку CLK и DAT (5,1к) к единичке, без этого не работала и живая клавиатура, при том, что она вроде включена в атмеге8.
    Но "самодельная клавиатура" почти молчит, лишь изредка давая какой-то невнятный мусор на произвольные замыкания линий. Как понять, выполнила ли она хотя бы команду сброса ?

  8. #58

    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    292
    Спасибо Благодарностей получено 
    53
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    Как понять, выполнила ли она хотя бы команду сброса ?
    Там на схеме есть линии подключения светодиодов индикации caps lock, num lock, scroll lock - может по их состоянию будет понятно?
    Ну, либо попробовать посмотреть, что там на UART атмеги.
    Мои игрушки: PowerbookG4 / MacMiniG4 / MacMini i5 / Amiga1260 / Commodore64 / Atari65XE / MSX1 SVI-728 / MSX2 КУВТ2 / MiST / MiSTer / Profi+ / KarabasPro / Speccy2010 / Aspect128 / ZX-UNO VGA 2M / PS3 / PS4Pro+PSVR / PSP / PS Vita / GBC / LDK Game / RG350M / iPhone / iPad / Raspberry Pi (0/3B+/4B/5)
    MorphOS / AmigaOS / MacOS / Linux

  9. #59

    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    796
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    260
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    145 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CLR Посмотреть сообщение
    Там на схеме есть линии подключения светодиодов индикации caps lock, num lock, scroll lock - может по их состоянию будет понятно?
    Ну, либо попробовать посмотреть, что там на UART атмеги.
    Припаял к PS2AVR индикацию CAPSLOCK. При включении в PC он загорается на полсекунды, как и положено при сбросе. При любом выдергивании и втыкании на ходу сразу повторно происходит сброс и клавиатура работает.
    Однако я не добился переключения *LOCK-ов на ней, это должно работать или нет ? У меня включена 0-я раскладка из исходника, при переключении *LOCK-клавиш ни индикаторы не меняются, ни регистр букв при нажатии CAPSLOCK не меняется.
    Статус на индикаторы передается корректно (если настоящей клавиатурой задать какое-то состояние *LOCK-ов, то при горячей замене ее на наш PS2AVR после сброса этот запомненный статус тут же отображается на индикаторах).

    Спеку не особо надо корректную работу *LOCK-ов, но здесь вообще нулевой прогресс.
    Сейчас у меня используется такая связка:
    Спек (ленин1) + контроллер caro на atmega8 + PS2AVR (как будущая клавиатура)

    При включении спека сброс PS2AVR не происходит. Даже если я сбрасываю атмегу в контроллере caro (при этом должен сразу выполняться сброс клавиатуры аж до 16 попыток, но он не происходит). Так что связка этих двух AVRок не работает. Понимаю, что протокол PS/2 где-то реализован с большими ограничениями, отсюда наш тупик.

    Удавалось ли протестить PS2AVR с какими-то еще спековскими контроллерами клавиатуры ?

    Ради интереса воткнул сейчас PS2AVR в AVR-ZX 2.0 (он же Aspect128), где контроллер клавиатуры сделан на ATTiny2313 и прошивка оного мне неизвестна. Работает только одно нажатие клавиши, дальше оно навсегда зацикливается. Если нажать F12, это SDDOS, мы в него попадаем, но выйти обратно уже не можем. С настоящей клавиатурой такого не происходит.
    Последний раз редактировалось valerium; 27.12.2020 в 00:59. Причина: some new info added

  10. #60

    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    292
    Спасибо Благодарностей получено 
    53
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я на днях собрал тестовый стенд для беспаечной проверки и настройки контроллера ps2avr, буду проверять свою раскладку и идеи по оптимизации.
    Заодно и проверю, как оно будет работать на AVR-ZX и на KarabasPro.



    Мои игрушки: PowerbookG4 / MacMiniG4 / MacMini i5 / Amiga1260 / Commodore64 / Atari65XE / MSX1 SVI-728 / MSX2 КУВТ2 / MiST / MiSTer / Profi+ / KarabasPro / Speccy2010 / Aspect128 / ZX-UNO VGA 2M / PS3 / PS4Pro+PSVR / PSP / PS Vita / GBC / LDK Game / RG350M / iPhone / iPad / Raspberry Pi (0/3B+/4B/5)
    MorphOS / AmigaOS / MacOS / Linux

    Этот пользователь поблагодарил CLR за это полезное сообщение:

    andykarpov(07.01.2021)

Страница 6 из 9 ПерваяПервая ... 23456789 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Переделать клавиатуру AT >> XT
    от artice в разделе Устройства ввода
    Ответов: 28
    Последнее: 02.07.2024, 17:15
  2. Ответов: 7
    Последнее: 02.06.2018, 20:56
  3. Как можно восстановить клавиатуру?
    от IMPguitar в разделе Устройства ввода
    Ответов: 1
    Последнее: 31.01.2017, 19:17
  4. как переделать CAS в WAV
    от marsNRG в разделе Atari
    Ответов: 9
    Последнее: 09.01.2016, 18:45

Ваши права

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