-
- Подключил простейшую тестилку на RS232. Ни единого символа не потерял. И наткнулся на один момент. Придал одной клавише функцию шифта. И посыпались символы что сначала нажимаем шифт, что позже нужной кнопки. mazur(146 знак., 06.11.2010 17:57)
- Кстати есть у Terminal такая функция: что-то посылаем по уарту, и очищается окно приема символов? - mazur(06.11.2010 17:59)
- Включи ANSI Mode и посылай любые ANSI-коды - раскраска, позиционирование курсора, атрибуты, очистка и т.д. - MBedder(06.11.2010 18:04)
- Кстати есть у Terminal такая функция: что-то посылаем по уарту, и очищается окно приема символов? - mazur(06.11.2010 17:59)
- Чтобы не задавать лишних вопросов, и не сорить здесь, можете дать ссылки на то, о чем вы говорите. Для примера, вот статья Татарчевского. Написано просто, доступно, наглядно. Вопросов по этой статье у меня практически не было. mazur(06.11.2010 08:30)
- Когда пытаются придать руке дающего некоторую форму, легко получить фигу ;) - Vladimir Ljaschko(06.11.2010 10:18)
- Эээ? - mazur(06.11.2010 10:40)
- Когда пытаются придать руке дающего некоторую форму, легко получить фигу ;) - Vladimir Ljaschko(06.11.2010 10:18)
- Решил этот вопрос, правда не совсем так, как хотел. mazur(3112 знак., 05.11.2010 01:50)
- Вот видишь, препроцессор уже освоил. Осталась малость, Си освоить. Можешь считать его набором готовых макросов, сложность освоения примерно такая же. - Михаил Е.(05.11.2010 12:50)
- Научились-таки ветки с чужими постами сносить? Ню-ню. Только пока словами не поясните, в вашем асме разбираться смысла не вижу. - rezident(05.11.2010 01:56)
- Я достаточно много времени потратил на эту тему. Не только на сахаре задавал вопросы. Например на ирк-канале #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)
- Какой прогресс, поздравляю! 1) Хорошим тоном считается писать названия определений заглавными буквами 2) Поскольку все подмены осуществляются ПЕРЕД компиляцией/ассемблированием, не стоит усложнять логику, голова нужна для решения более ценных Vladimir Ljaschko(236 знак., 04.11.2010 17:52)
- То есть количество байтов в переменных должен задавать я сам? - mazur(04.11.2010 18:01)
- Так лучше всего делать - просто и наглядно. Часто универсальность - зло. Впрочем, у коллег может быть другая точка зрения. - Vladimir Ljaschko(04.11.2010 20:28)
- Извините за детский вопрос. Просто подробного примера найти не могу. mazur(575 знак., 04.11.2010 20:40)
- В следующий раз называй ассемблер ассемблером, а компилятор по имени - не путай людей - MBedder(04.11.2010 21:33)
- извиняюсь - mazur(04.11.2010 21:34)
- Нет уж - цепляй вериги и марш замаливать грехи :) - Гудвин(04.11.2010 21:44)
- :) Ага, и все тело мелом обсыпать... Нет уж спасибо... - mazur(04.11.2010 21:46)
- Нет уж - цепляй вериги и марш замаливать грехи :) - Гудвин(04.11.2010 21:44)
- извиняюсь - mazur(04.11.2010 21:34)
- Дык ты правильно записал, но в elif-ах запутался Vladimir Ljaschko(249 знак., 04.11.2010 21:08)
- Хотел уточнить. Почему вы написали SCAN_BYTES 1, а не SCAN_BYTES_1 ? mazur(41 знак., 04.11.2010 22:16)
- В точку, в elif-ах заблудился :) Спасибо! - mazur(04.11.2010 21:11)
- В следующий раз называй ассемблер ассемблером, а компилятор по имени - не путай людей - MBedder(04.11.2010 21:33)
- Извините за детский вопрос. Просто подробного примера найти не могу. mazur(575 знак., 04.11.2010 20:40)
- Так лучше всего делать - просто и наглядно. Часто универсальность - зло. Впрочем, у коллег может быть другая точка зрения. - Vladimir Ljaschko(04.11.2010 20:28)
- То есть количество байтов в переменных должен задавать я сам? - mazur(04.11.2010 18:01)
- Подключил простейшую тестилку на RS232. Ни единого символа не потерял. И наткнулся на один момент. Придал одной клавише функцию шифта. И посыпались символы что сначала нажимаем шифт, что позже нужной кнопки. mazur(146 знак., 06.11.2010 17:57)