31.08.2017, 19:59
|
#61
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,727
Сказал спасибо: 130
Сказали Спасибо 1,111 раз(а) в 530 сообщении(ях)
|
Re: Оцените алгоритм опроса матричной клавы
На относительно медленных PIC это прокатывает. Возможно частично прокатывает на "младших" STM32. Но "старшие" чипы уже слишком производительные для этого. Опрос происходит слишком быстро. Линии кнопок не успевают зарядится. А в этот момент идет опрос.
Сейчас такая задача практически не встречается. Это из времен слабеньких чипов с малым количеством ног.
Как я поступал:
1) Нужно было опросить 16 кнопок. Поставил 2 штуки 74HC165 каскадом на SPI шину. Схемотехника передрана из 4x4 Key click . Отладка ... все заработало сразу.
2) Нужно было опросить 10 кнопок. На STM32F405. Тупо развел по принципу "одна нога - одна кнопка". Благо на STM32 ноги экономить не приходиться. Этого добра всегда в избытке. Ну или взять более многоногий чип. Тем более по цене почти одинаково.
|
|
|
|
31.08.2017, 20:26
|
#62
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Оцените алгоритм опроса матричной клавы
Сообщение от DanilinSA
|
Нужно было опросить 10 кнопок. На STM32F405. Тупо развел по принципу "одна нога - одна кнопка". Благо на STM32 ноги экономить не приходиться. Этого добра всегда в избытке.
|
Мда, неприлично просто))) но количество ног все-таки иногда решает)
|
|
|
|
31.08.2017, 20:39
|
#63
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,258
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Оцените алгоритм опроса матричной клавы
supercelt
Указанное таки промышленное решение.
В серии плюс один корпус ничего не решает.
А вот отказоустойчивость здесь вопрос сильно спорный.
Ваш алгоритм совсем не проходил тестирование и проблемы в будущем весьма предсказуемы - наводки, изменение ёмкости,…
И на тему алгоритма - их можно поискать в сети, и более проверенных, и более универсальных,… не стоит изобретать миллионный велосипед для таких простых вещей и решений. Даже тут в теме варианты были.
А у меня этот вариант теперь будет везде, где нужно работать без заморочек с системой команд и программированием. Таки стандартный интерфейс несколько универсальнее .
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
31.08.2017, 20:57
|
#64
|
Прописка
Регистрация: 02.03.2010
Сообщений: 139
Сказал спасибо: 12
Сказали Спасибо 49 раз(а) в 26 сообщении(ях)
|
Re: Оцените алгоритм опроса матричной клавы
Сообщение от supercelt
|
А можно сканить и устанавливать ряды прямо в прерывании? или лучше давать флаг и делать действо по нему уже в майне?
|
Пожалуй, даже нужно считывать порт строк а затем устанавливать новый столбец именно в прерывании.
Прерывание происходит в гарантированные вами установленные моменты времени, регулярно, обязательно. Что бы вы не делали в остальное время, считали что-то огромное или спали, или в цикле ожидания висели, кнопки будут опрошены.
Я , кажется, понял, почему вы хотите все сразу делать - что бы считывать несколько кнопок, их сочетания. Я это делаю совсем просто - считаю время удержания каждой кнопки (сколько тактов при опросе она оказалась нажатой). В основной программе у меня проверяется не только факт нажатия но и спокойно могу это время удержания использовать, скажем, для сдвига курсора, там и обнуляю счетчик . Если нажаты две (вроде как комбинация) , оба счетчика увеличиваются. Если нажаты все - все счетчики увеличиваются. Этого вполне достаточно, чтобы реагировать в программе адекватно. Часть обработки комбинаций можно и прерывание засунуть, если не очень сложный и длинный алгоритм.
Последний раз редактировалось 6ap6oc; 31.08.2017 в 21:05.
|
|
|
|
31.08.2017, 21:02
|
#65
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Оцените алгоритм опроса матричной клавы
Хорошо, спасибо. А тогда ещё такой вопрос. Сколько минимум надо сделать задержку между установкой строки и началом скана столбцов? Я помню что вы говорили в одном вызове ф-ии ставить строку, а сканить уже во втором вызове. Так а сколько по времени надо минимум?
|
|
|
|
31.08.2017, 21:35
|
#66
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,727
Сказал спасибо: 130
Сказали Спасибо 1,111 раз(а) в 530 сообщении(ях)
|
Re: Оцените алгоритм опроса матричной клавы
Сообщение от supercelt
|
Так а сколько по времени надо минимум?
|
Типичная кнопка (сферическая в ваккуме) при замыкании обычно дает дребезг в течении около 8-10 мс. А потому типичная задержка в диапазоне от 50 до 200 мс.
|
|
|
|
31.08.2017, 21:50
|
#67
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Оцените алгоритм опроса матричной клавы
Сообщение от DanilinSA
|
Типичная кнопка (сферическая в ваккуме) при замыкании обычно дает дребезг в течении около 8-10 мс. А потому типичная задержка в диапазоне от 50 до 200 мс.
|
Не, вы не поняли. Время между установкой на пинах ряда 1 и началом сканирования столбов. Если как вы пишите 200мс. То получается так:
Установили 1 на 1 пине ряда. Выдерживаем 200мс. Сканим. Устанавливаем 2 пин ряда, 200мс, сканим, ставим 3 пин, 200мс, сканим, ставим 4 пин, 200мс, сканим. Итого времени на скан всей клавиатуры 800мс, это почти секунда!
|
|
|
|
31.08.2017, 22:45
|
#68
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,727
Сказал спасибо: 130
Сказали Спасибо 1,111 раз(а) в 530 сообщении(ях)
|
Re: Оцените алгоритм опроса матричной клавы
Уговорили. Берите 20 мс. Или 10-15. 200 - это в Вашем случае явный перебор.
|
|
|
|
31.08.2017, 23:26
|
#69
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Оцените алгоритм опроса матричной клавы
Сообщение от mike-y-k
|
supercelt, за время обсуждения успел затарится, немного разобраться с программированием, сделать макет 4x4 и 4x8 клавиатур (см пост). Работает, и как плюс - можно воткнуть куда угодно. Теперь можно не париться с этим вопросом и просто делать эти клавиатуры хоть на потоке вёдрами .
|
Где вы достали эту микруху, если ее даже на складе у этого магазина нет?
Плату под нее сами разводили?
|
|
|
|
01.09.2017, 09:16
|
#70
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,047
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Оцените алгоритм опроса матричной клавы
Сообщение от supercelt
|
Где вы достали эту микруху, если ее даже на складе у этого магазина нет?
Плату под нее сами разводили?
|
Ещё есть китайское чудо - TM1650 - стоит 3 копейки. Где то на этом форуме есть ссылка на английский пдф для неё. Как она работает с клавиатурой не проверял (пользовал только как драйвер индикатора)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:44.
|
|