-
- Я достаточно много времени потратил на эту тему. Не только на сахаре задавал вопросы. Например на ирк-канале #ru_embedded. Так там один рассказывал мне что на КАЖДУЮ кнопу вешать таймер. А если их 100?! это по минимуму 200 байт SRAM. На хрена mazur(739 знак., 05.11.2010 02:15 - 02:19)
- Если требуется правильный ввод большого количества клавиш без отпускания - как в PC, то, строго говоря, нужны счетчики на каждую клавишу. - Vladimir Ljaschko(05.11.2010 12:32)
- Я так понимаю, это намек на обработку большого количества входов? :) - mazur(05.11.2010 13:44)
- Это намёк, чтобы ты лицом уткнулся в клавиатуру в текстовом редакторе и увидел, сколько клавиш введется. - Vladimir Ljaschko(05.11.2010 18:08)
- Ткнулся. По моему не счетчик нужен а буфер. - mazur(05.11.2010 18:26)
- Буфер - это понятно, а как отрабатывать дребезг всех нажатых клавиш одним счетчиком? - Vladimir Ljaschko(05.11.2010 18:42)
- Зачем обрабатывать дребезг для кнопок по отдельности? Лучше обрабатывать для состояния всей матрицы. Лeoнид Ивaнoвич(120 знак., 06.11.2010 10:59)
- А зачем вообще обрабатывать дребезг? Не проще ли BK(42 знак., 06.11.2010 13:08, )
- Конечно, если вводится по одному символу и одновременные нажатия не обрабатываются. А если обрабатываются, то можно потерять нажатую и быстро отпущенную клавишу. Или? - Vladimir Ljaschko(06.11.2010 11:38)
- Такие варианты и нужно терять, они ошибочные. Комбинация считается нажатой, если в течение интервала антидребезга состояние матрицы оставалось неизменным. - Лeoнид Ивaнoвич(06.11.2010 13:58)
- Мы тут выше рассматривали клавиатуру PC. Машинистка печатает со скоростью до 1000 символов в минуту. Т.е. реализация драйвера зависит от условий задачи и не имеет общего универсального простого решения. Vladimir Ljaschko(116 знак., 06.11.2010 14:58 - 15:01)
- 1000 символов в минуту это 16 с копейкми в секунду. Примерно 60 мс. Испытанная временем и результатами задержка 20 мс. Вполне впаковываемся. Вон и Леонид Иванович со мной согласен, что можно и нужно сравнивать всю матрицу. А потом обрабатывать. - mazur(06.11.2010 17:50)
- Дерзайте! - Vladimir Ljaschko(06.11.2010 20:02)
- на самом деле мировой зарегистрированный рекорд 928 символов в минуту. а в среднем хорошая машинистка - что-то около 400-450. - Snaky(06.11.2010 17:57)
- 1000 символов в минуту это 16 с копейкми в секунду. Примерно 60 мс. Испытанная временем и результатами задержка 20 мс. Вполне впаковываемся. Вон и Леонид Иванович со мной согласен, что можно и нужно сравнивать всю матрицу. А потом обрабатывать. - mazur(06.11.2010 17:50)
- А если кнопки не в матрице, а индивидуально ко входам подключены? Или их состояние вообще по связи передается? Да еще и от разных, хотя и взаимосвязанных, источников. - rezident(06.11.2010 14:08)
- Мы тут выше рассматривали клавиатуру PC. Машинистка печатает со скоростью до 1000 символов в минуту. Т.е. реализация драйвера зависит от условий задачи и не имеет общего универсального простого решения. Vladimir Ljaschko(116 знак., 06.11.2010 14:58 - 15:01)
- Такие варианты и нужно терять, они ошибочные. Комбинация считается нажатой, если в течение интервала антидребезга состояние матрицы оставалось неизменным. - Лeoнид Ивaнoвич(06.11.2010 13:58)
- Зачем обрабатывать дребезг для кнопок по отдельности? Лучше обрабатывать для состояния всей матрицы. Лeoнид Ивaнoвич(120 знак., 06.11.2010 10:59)
- Буфер - это понятно, а как отрабатывать дребезг всех нажатых клавиш одним счетчиком? - Vladimir Ljaschko(05.11.2010 18:42)
- Ткнулся. По моему не счетчик нужен а буфер. - mazur(05.11.2010 18:26)
- Это намёк, чтобы ты лицом уткнулся в клавиатуру в текстовом редакторе и увидел, сколько клавиш введется. - Vladimir Ljaschko(05.11.2010 18:08)
- Я так понимаю, это намек на обработку большого количества входов? :) - mazur(05.11.2010 13:44)
- Я на каждую кнопку вешаю таймер, вернее на каждый вход, не только кнопки. Таймер естественно не аппаратный, программный. Защита от дребезга. - Михаил Е.(05.11.2010 12:29)
- Все равно не вижу смысла вешать программный таймер на каждую кнопу. Ну поясните кто-нибудь. Дребезг отбросим. - mazur(05.11.2010 13:46)
- А что останется от клавиатуры если "дребезг отбросим"? Читай порт и все. Скрипач(334 знак., 05.11.2010 18:34)
- Убиться головой ап стену. Никто не может объяснить, почему некоторые говорят, что таймер вешать на каждую кнопу. Неужели мы мыслим абсолютно по разному. Ладно я не мог вас первое время понять. Это объяснимо. Я не говорю что я стал шибко грамотным, mazur(591 знак., 05.11.2010 18:52)
- Ну да :) Скрипач(232 знак., 05.11.2010 19:14 - 06.11.2010 11:07)
- Во-первых, нужно XORить два состояния, а не просто сравнивать. Но для этого состояние каждой кнопки должно определяться индивидуальным битом. Во-вторых, как уже заметил Скрипач дребезг может длиться бОльшее время, чем период сравнения и дребезг rezident(234 знак., 06.11.2010 00:34)
- Если тебе не трудно, как и что ксорить? Битовое поле? mazur(291 знак., 06.11.2010 08:04)
- Отстаньте вы со своим ASMом :) XORить нужно два "соседних" состояния, текущее и предыдущее. В тех битах, где после XOR будут единицы - состояние неустойчивое. Биты с нулями после XOR соответствуют устойчивому состоянию, которое можно rezident(382 знак., 06.11.2010 13:56)
- Состояние предыдущее и текущее. - Михаил Е.(06.11.2010 13:38)
- Если тебе не трудно, как и что ксорить? Битовое поле? mazur(291 знак., 06.11.2010 08:04)
- Убиться головой ап стену. Никто не может объяснить, почему некоторые говорят, что таймер вешать на каждую кнопу. Неужели мы мыслим абсолютно по разному. Ладно я не мог вас первое время понять. Это объяснимо. Я не говорю что я стал шибко грамотным, mazur(591 знак., 05.11.2010 18:52)
- А что останется от клавиатуры если "дребезг отбросим"? Читай порт и все. Скрипач(334 знак., 05.11.2010 18:34)
- Все равно не вижу смысла вешать программный таймер на каждую кнопу. Ну поясните кто-нибудь. Дребезг отбросим. - mazur(05.11.2010 13:46)
- для кнопок жесткий риалтайм нафиг нужен. а вот насчёт мягкого риалтайма уже рассказывал, но видно не куриццо. оттого и такие страшные цифры по ОЗУ - Vit(05.11.2010 08:18)
- Похоже я все-таки что-то не понял. mazur(2874 знак., 05.11.2010 11:24)
- я тоже не могу понять, зачем много таймеров. Vit(80 знак., 05.11.2010 11:33)
- Похоже я все-таки что-то не понял. mazur(2874 знак., 05.11.2010 11:24)
- Давайте разберем оба варианта. Ваш скан код и мой. Берем матрицу 8x8. 64 кнопы, 64 бита в вашем случае, 2 байта в моем случае. mazur(1806 знак., 05.11.2010 02:53 - 02:58)
- Один нюанс. Вообще-то количество скан-кодов не обязательно равно количеству клавиш. Типовой пример - клавиша Winkey, которая генерирует сразу два скан-кода. Более того, скан-коды могут быть определяться сочетанием клавиш и <i>порядком их rezident(655 знак., 05.11.2010 03:41)
- По терминологии Татарчевского виртуальная клавиша, создается таблица скан-код - виртуальная клавиша, сочетание клавиш-отдельный скан-код - виртуальная клавиша. Реализовано. А вот для чего таймеры на каждую кнопу пока не могу понять. Для чего вам mazur(43 знак., 05.11.2010 07:52)
- Я же написал, что кнопки функционировали независимо друг от друга. То бишь их могли нажимать по нескольку штук вместе. Да хоть все зараз! Причем у всех кнопок были индивидуально включаемые функции "залипания" и автоповтора. - rezident(06.11.2010 00:29)
- до Татарчевского был дров клавы в ДОС - Vit(05.11.2010 11:34)
- По терминологии Татарчевского виртуальная клавиша, создается таблица скан-код - виртуальная клавиша, сочетание клавиш-отдельный скан-код - виртуальная клавиша. Реализовано. А вот для чего таймеры на каждую кнопу пока не могу понять. Для чего вам mazur(43 знак., 05.11.2010 07:52)
- Один нюанс. Вообще-то количество скан-кодов не обязательно равно количеству клавиш. Типовой пример - клавиша Winkey, которая генерирует сразу два скан-кода. Более того, скан-коды могут быть определяться сочетанием клавиш и <i>порядком их rezident(655 знак., 05.11.2010 03:41)
- Вообще-то обычно скан-код это не то, что у вас подразумевается. Скан-код однозначно идентифицирует каждую клавишу и ее состояние. Последовательность скан-кодов определяет порядок нажатия клавиш. И пофиг матрица на входе или не матрица. - rezident(05.11.2010 02:35)
- Если требуется правильный ввод большого количества клавиш без отпускания - как в PC, то, строго говоря, нужны счетчики на каждую клавишу. - Vladimir Ljaschko(05.11.2010 12:32)
- Эээ, извини. А можно твои посты приклеить? У нас 5 утра, запарился и забыл, что и чужие посты сносятся нах. - mazur(05.11.2010 01:58)
- Нельзя. "Фарш невозможно провернуть назад и мясо из него не восстановишь". Хотелось бы пояснений к вот этому => - rezident(05.11.2010 02:12, ссылка)
- Я достаточно много времени потратил на эту тему. Не только на сахаре задавал вопросы. Например на ирк-канале #ru_embedded. Так там один рассказывал мне что на КАЖДУЮ кнопу вешать таймер. А если их 100?! это по минимуму 200 байт SRAM. На хрена mazur(739 знак., 05.11.2010 02:15 - 02:19)