Важная информация

User Tag List

Результаты опроса: Востребован ли контроллер?

Голосовавшие
49. Вы ещё не участвовали в этом опросе
  • Да

    43 87.76%
  • Нет

    2 4.08%
  • Не знаю

    4 8.16%
Страница 1 из 10 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 100

Тема: Контроллер USB клавиатуры

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Контроллер USB клавиатуры

    Собственно, сегодня на макетке проверил - читает все клавиши. Работает с проводными и беспроводными клавиатурами. Есть так же и поддержка мышей.
    Проверялось на плате STM32F4DISCOVERY, но подойдёт практически любой контроллер с USB-HOST.
    Выход возможен различный, зависит от фантазии - матрица для прямого подключения, PS/2, SPI и т.д.
    На данный момент планирую сделать в одном корпусе сразу два варианта - USB->PS/2+MATRIX. Таблица истинности для матрицы (в виде положение_в_матрице=скан_код) будет вбита в прошивку контроллера, а различные таблицы можно будет переключать DIP-переключателем (или джамперами на его месте).

    Из плюсов - поддержка одновременного нажатия множества кнопок.

    За основу взял готовый пример, сейчас буду корректировать его для одновременной работы и с клавиатурой и с мышью.
    Последний раз редактировалось andreil; 17.03.2018 в 14:25.
    "Байт-48"

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Activist Аватар для CLR
    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    261
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    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

  4. #3
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По программе - уже реализовал одновременную работы клавиатуры с мышью. Разумеется, не проводных, поскольку сразу 2 встроенных USB-HOST накладно держать - проверял на Wireless Keyboard+Mouse, через 1 "свисток".
    Прошивка занимает смешные 14Кб флеша и 4Кб памяти.
    Сегодня ещё реализую шаблон работы с матричной клавиатурой размером до 12х12 - таблица с описанием одного варианта "раскладки" займёт 288 байт
    "Байт-48"

  5. #4
    Activist Аватар для CLR
    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    261
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хех так может дойти до того что туда весь ZX-Spectrum заедет на пмж
    Мои игрушки: 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

  6. #5
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CLR Посмотреть сообщение
    Хех так может дойти до того что туда весь ZX-Spectrum заедет на пмж
    Нет, это проектируется именно как адаптер для клавиатуры с мышью. Максимум - ещё как IO для всяких там UART, SPI, I2C (это будет реализовываться значительно позже, по какому-либо стандарту).
    "Байт-48"

  7. #6
    Activist Аватар для CLR
    Регистрация
    03.02.2005
    Адрес
    Челябинск
    Сообщений
    326
    Спасибо Благодарностей отдано 
    261
    Спасибо Благодарностей получено 
    52
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У стм-ов ресурсов то дофига, можно придумать, чем ещё занять - к примеру, сделать лоадер тапов с сд Карты через tape in или эмуляцию трдоса, кстати эмулятор трдоса где-то тут на форуме именно под стм вроде был. Или даже адаптер ргб2вга Правда, все это крайне трудоемко, но подозреваю, что теоретически возможно.
    Мои игрушки: 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

  8. #7
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CLR Посмотреть сообщение
    У стм-ов ресурсов то дофига, можно придумать, чем ещё занять - к примеру, сделать лоадер тапов с сд Карты через tape in или эмуляцию трдоса, кстати эмулятор трдоса где-то тут на форуме именно под стм вроде был. Или даже адаптер ргб2вга Правда, все это крайне трудоемко, но подозреваю, что теоретически возможно.
    RGB-VGA сразу отпадает - на другое ресурсов не хватит уже. Да и даже это под вопросом.
    А по поводу загрузки - это всё возможно, ресурсы позволят. Ведь вполне можно впихнуть какой-либо STM32F429 и рулить с него всем - имеется готовый функционал для работы с SD-картами (уже работал раньше с ними).

    PS: Сейчас уже пишу обновление прошивки с USB-флешки То есть закинул бинарник, подключил, запустил. По завершении прошивки зажигается светодиод и ждёт перезагрузки. Из требований - FAT32 на флешке. И теоретически возможно-таки сделать сразу 2 порта - 1 для клавиатуры и 1 для флешки, вместо SD-карты.
    "Байт-48"

  9. #8
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andreil Посмотреть сообщение
    RGB-VGA сразу отпадает - на другое ресурсов не хватит уже. Да и даже это под вопросом.
    Что же ты там такое замутил, что на перекодирование массива в пару сотен байт не хвататает ресурсов 32-битного микропроцессора в почти две сотни мегагерц с количеством памяти больше чем не то что в спеке, а даже и в орионе? В этом 500-рублевом чипе (кстати, дороже чем PiZero за 5$ на котором целый EmulationStation пашет) можно сделать целую собственную VGA-видеокарту, цветную сделано же аналогичное в 5-рублевом STM32F030F4 - все же в ней 3 SPI-регистра (в этом и фишка - выводить SPI-регистром по 8 точек экономя ресурс ЦПУ), а не 1 как по ссылке (поэтому по ссылке монохром). Так там по ссылке еще и полный терминал VT100/52 (на графику не хватает ОЗУ, там все же 4кб, а не 192 кб как у STM32F407).
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  10. #9
    Master Аватар для andreil
    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Что же ты там такое замутил, что на перекодирование массива в пару сотен байт не хвататает ресурсов 32-битного микропроцессора в почти две сотни мегагерц с количеством памяти больше чем не то что в спеке, а даже и в орионе? В этом 500-рублевом чипе (кстати, дороже чем PiZero за 5$ на котором целый EmulationStation пашет) можно сделать целую собственную VGA-видеокарту, цветную сделано же аналогичное в 5-рублевом STM32F030F4 - все же в ней 3 SPI-регистра (в этом и фишка - выводить SPI-регистром по 8 точек экономя ресурс ЦПУ), а не 1 как по ссылке (поэтому по ссылке монохром). Так там по ссылке еще и полный терминал VT100/52 (на графику не хватает ОЗУ, там все же 4кб, а не 192 кб как у STM32F407).
    Пока что отрисовка идёт в попиксельном режиме - завтра буду гуглить протокол контроллера дисплея, может есть копирование всей памяти сразу.

    - - - Добавлено - - -

    Тут проблема в том, что надо следить за USB-устройством, а так же вовремя реагировать на внешние раздражители - в нашем случае это вовремя успеть выдать данные по запрошенному адресу в матрице. А для этого надо:
    1) опросить клавиатуру;
    2) преобразовать HID-сканикоды в матрицу;
    3) выдать запрошенную строку из матрицы.
    Разумеется, все эти события происходят в разных процессах, которые периодически переключаются планировщиком.

    - - - Добавлено - - -

    По производительности - хочу сперва сделать полноценный вариант, а потом протестировать на скорость. Там и будут видны узкие места.
    "Байт-48"

  11. #10
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот это вот:
    Цитата Сообщение от andreil Посмотреть сообщение
    1) опросить клавиатуру;
    2) преобразовать HID-сканикоды в матрицу;
    Весьма не много ресурсов съест, и делать это надо всего-то 5-10 раз в секунду, постоянно актуализируя массив эмуляции матрицы (например во время кадрового бланка когда есть время простоя)

    Цитата Сообщение от andreil Посмотреть сообщение
    3) выдать запрошенную строку из матрицы.
    А вот это ровно 3 команды на ассемблере: считать сканкод (в контроллере на Атмеге измение сканкода на порте вводе генерит прерывание), из готовой таблицы (той самой что постоянно актуализируется на шагах 1-2) используя скан код как индекс прочитать ответ, выдать этот ответ на порт.
    Все остальное время обрабатывать дисплей.

    Контроллер по моей ссылке тоже обрабатывает клавиатуру (там же не только видеокарта, но полный терминал), при этом на частоте в 25МГц ему хватает времени еще и на VGA с полной эмуляцией VT100/52. Исходники на git есть по ссылке в статье.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Страница 1 из 10 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Конвертер USB -> PS/2 для клавиатуры
    от Ewgeny7 в разделе Устройства ввода
    Ответов: 118
    Последнее: 02.01.2022, 23:39
  2. Ответов: 27
    Последнее: 14.08.2018, 04:48
  3. БезWaitовый контроллер клавиатуры
    от caro в разделе Устройства ввода
    Ответов: 68
    Последнее: 01.07.2015, 05:42
  4. USB контроллер матрицы клавиатуры.
    от fan в разделе Устройства ввода
    Ответов: 2
    Последнее: 25.07.2007, 00:43

Ваши права

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