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

User Tag List

Страница 17 из 31 ПерваяПервая ... 131415161718192021 ... ПоследняяПоследняя
Показано с 161 по 170 из 303

Тема: Орион-128: Контроллер PS/2-клавиатуры

  1. #161
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Собрал я контроллер клавиатуры на ATMega8. Давно собрал. Только обнаружилась одна проблема.

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

    Я уже это проверил без Ориона (без тормозящих прерываний) на маленькой демо программе.

    После приема каждого байта я прижимаю линию Clock. То есть подаю на неё ноль, обрабатываю данные и отпускаю Clock. Собственно так же сделано и у caro.

    Я пробовал зажимать Clock сразу после приема, во время приема, спустя 10-1000 мкс. Пофиг.

    И мне кажется, что клавиатура продолжает передавать данные, когда я зажимаю Clock. Но при этом, я ни разу не принял хвост пакета. Моя программа бы заметила ошибку приёма и перезагрузила МК. Клавиатура бы мигнула светодиодами.

    Либо в программе есть ошибка, которую я не заметил. В общем пока х.з. Я неспешно думаю над этой проблемой.

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

  2. #162
    Member Аватар для tihsasha
    Регистрация
    03.08.2012
    Адрес
    п. Сосново, Ленинградская обл.
    Сообщений
    48
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может кому пригодится разводка платы под SprintLayOut. Микроконтроллер
    стоит ATmega48V-10AU. Спасибо всем за хорошую разработку.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	screenshot.jpg 
Просмотров:	416 
Размер:	84.2 Кб 
ID:	39231   Нажмите на изображение для увеличения. 

Название:	DSCN1776.jpg 
Просмотров:	435 
Размер:	76.2 Кб 
ID:	39232   Нажмите на изображение для увеличения. 

Название:	DSCN1778.jpg 
Просмотров:	328 
Размер:	59.5 Кб 
ID:	39233   Нажмите на изображение для увеличения. 

Название:	DSCN1780.jpg 
Просмотров:	364 
Размер:	51.2 Кб 
ID:	39234  
    Вложения Вложения

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

    По умолчанию

    Цитата Сообщение от tihsasha Посмотреть сообщение
    Может кому пригодится разводка платы под SprintLayOut. Микроконтроллер
    стоит ATmega48V-10AU. Спасибо всем за хорошую разработку.
    А что за комп на втором фото?
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  4. #164
    Veteran Аватар для perestoronin
    Регистрация
    25.11.2011
    Адрес
    г. Красногорск
    Сообщений
    1,389
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Собрал я контроллер клавиатуры на ATMega8. Давно собрал. Только обнаружилась одна проблема.

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

    Я пробовал зажимать Clock сразу после приема, во время приема, спустя 10-1000 мкс. Пофиг.

    Либо в программе есть ошибка, которую я не заметил. В общем пока х.з. Я неспешно думаю над этой проблемой.

    Пока писал, у меня появилась идея не трогать Clock, если принимается посылка из трёх и более байт.
    Думаю эту проблему без замены клавиатуры на игровую не решить никак.
    Необходима для отработки залипших клавиш использовать клавиатуры с фичей N-Key Rollover (NKRO) http://stenoknight.com/wiki/N-key_ro..._.28NKRO.29.3F

    Попробуйте исследовать специальные игровые клавиатуры допускающие и корректно обрабатывающие зажатия (залипания) до 6 клавиш (те что подешевле), только все такие клавиатуры usb и на контроллер их надо будет цеплять через универсальный переходник PS/2 - USB (такими раньше первые USB мыши и USB клавиатуры комплектовались, но их и сейчас можно найти от 30 до 50р). Можно начать с такой клавиатуры http://www.microsoft.com/hardware/ru...-00012#details (Одновременное корректное нажатие до 26 клавиш — результат точно соответствует нажатым клавишам!)

    Также видел проекты по модернизации (глубокой с перерезанием дорожек, к пленочным это не применимо, только к механике) обычных (не игровых) клавиатур, чтобы они могли корректно обрабатывать зажатия нескольких произвольных клавиш. N-Key Rollover (NKRO) - фича у игровых клавиатур - позволяющая держать зажатыми несколько клавиш и при этом контроллер корректно обрабатывает зажатия и отпускания других клавиш корректно.

    Есть более дешевые клавиатуры, но и фича эта применима у них к ограниченному набору клавиш http://www.defender.ru/products/keyb...rhead-gk-1100/ (Распознает нажатие до 7 клавиш одновременно. Обычная клавиатура не в состоянии корректно обработать одновременное нажатие на несколько клавиш. Поэтому, если пользователь сразу нажмет на 3 и больше клавиш, то клавиатура будет заблокирована и сигнал от нажатых клавиш не поступит в компьютер. С Defender Warhead GK-1100 можно не бояться, что случайное нажатие испортит игру и не позволит выполнить нужные действия - геймер никогда не потеряет контроль над управлением. Функция доступна для клавиш: A, S, D, J, K, L, «Пробел».)

    И еще про возможные проблемы при подключении клавиатуры не через usb к контроллеру http://www.gamedev.ru/code/forum/?id=134105&page=2#m19 (... была протестирована клавиатура, которая по словам производителя единственная в мире умеет распознавать нажатия всех 104 клавиш одновременно.
    И да это действительно так. Правда только при подключении к PS/2 (переходник в комплекте), при подлючении к USB максимум 6 клавиш одновременно. Якобы из-за ограничений HID протокола. Встречайте: SteelSeries 6Gv2)

    Последняя проблема вроде бы решается применением самодельного переходника согласно такого проекта https://github.com/tmk/tmk_keyboard/...verter/ps2_usb

    А вот эта клавиатура (DasKeyboard Ultimate S) наверное свободна ото всех проблем http://habrahabr.ru/post/132977/
    Последний раз редактировалось perestoronin; 09.01.2013 в 22:08.

    Ретрокладовая продажи

    продажи
    [свернуть]

  5. #165
    Member Аватар для tihsasha
    Регистрация
    03.08.2012
    Адрес
    п. Сосново, Ленинградская обл.
    Сообщений
    48
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    А что за комп на втором фото?
    Как чувствовал этот вопрос. Это мой РК86. С VGA выходом (идея Rokl).

    http://narod.ru/disk/65303474001.a2e.../RK86.jpg.html

    http://narod.ru/disk/65303574001.a19...%20_2.jpg.html

    Думаю открыть по нему тему в соответствующем разделе или нет. Это не все фотки. Плоский кабель там не просто так стоит. Простите за оффтоп.
    Последний раз редактировалось tihsasha; 09.01.2013 в 21:56.

  6. #166
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  8. #167
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru
    Собрал я контроллер клавиатуры на ATMega8. Давно собрал. Только обнаружилась одна проблема.

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

  9. #168
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Моей. Если нажать две кнопки, а потом отпустить их с интервалом в 0.1 сек, то МК не получает код второй отжатой кнопки. Иногда.

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

    Я поменял обработчик прерывания, и этот МК теперь работает на Специалисте. Там матрица 6x13, причем входом может быть как горизонталь, так и вертикаль.
    Последний раз редактировалось vinxru; 10.01.2013 в 15:31.

  10. #169
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Я думаю это из за того, что после приема каждого байта я включаю режим "передачи к клавиатуре". Клавиатура при этом должна прервать передачу, и повторить её, когда её будет разрешено отправлять данные.
    Думаю это может не понравится контроллеру, встроенному в PC-клавиатуру.
    Судя по всему это сделано, что бы до прихода следующего кода от PS/2 успеть выполнить обработку предыдущего кода, я прав?
    Я читал твою информацию о контроллере для Специалиста.
    Мне кажется не следует экономить на цене МК, а лучше поставить что-нибудь более подходящее, наример ATMega164/324/644
    Работать на максимальной частоте 20 Мгц и иметь большой резерв по выводам.

  11. #170
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro Посмотреть сообщение
    Думаю это может не понравится контроллеру, встроенному в PC-клавиатуру.
    Я припаял CLOCK от клавиатуры на прерывание. А прерывание в свою очередь будет обрывать расчет и далее программа будет переходить к приему следующего байта.

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

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

    Цитата Сообщение от caro Посмотреть сообщение
    Работать на максимальной частоте 20 Мгц и иметь большой резерв по выводам.
    Есть вероятность, что придется переходить на ATMega16. Там и кварц можно подключить. И целиком три порта отдать для подключения компьютера, повесив неиспользуемые линии на землю. Тогда можно сэкономить на командах ANDI, которые отсекают не относящееся к сканированию.

    А к свободным линиям еще и SD карту подключить (и грузить через собственное расширение BIOS файлы)

Страница 17 из 31 ПерваяПервая ... 131415161718192021 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 34
    Последнее: 24.11.2022, 16:05
  2. Ответов: 146
    Последнее: 31.05.2020, 19:00
  3. БезWaitовый контроллер клавиатуры
    от caro в разделе Устройства ввода
    Ответов: 68
    Последнее: 01.07.2015, 05:42
  4. Куплю контроллер клавиатуры
    от AAA в разделе Барахолка (архив)
    Ответов: 121
    Последнее: 01.02.2008, 18:33
  5. Контроллер клавиатуры для Скорпиона
    от Nikolaj Amosov (500:812/02.26) в разделе Scorpion
    Ответов: 1
    Последнее: 15.11.2005, 23:05

Ваши права

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