Цитата(iliusmaster @ Jun 23 2018, 20:17)
Обычно, чтобы ничего постояно не опрашивать,
А в чем проблема периодического опроса, что его по-вашему следует избегать? Вот честно, не понимаю )
Обычно, чтобы избежать ненужной мгновенной реакции на очень медленное событие - реакция человека на различные действия, в т.ч. и действия его самого - делают как раз периодический опрос с такой частотой,
с которой среднестатистический индивидуум никак не увидит разницы.
А раз нет разницы, то зачем за это платить диким колхозом из нагромождений "временных меток", "каскадов сравнений" и подобной средневековой дикости?
Цитата
все сигналы с кнопок через диоды собираются в одну точку и с этой точки в порт с прерыванием. По нажатию возникает прерывание - а уже в обработчике анлизируете матрицу.
Ага, а вместе с таким сигналом прилетают множественные прерывания от дребезга.
Чтобы его побороть, нужно делать задержки, ставить "аппаратные" фильтры, короче, открывать целые "институты" по решению копеешной проблемы.... очередная игра в "донкихота"
По статистике реакция человека 100мс на визуальное событие - очень крутая реакция, доступная лишь очень крутым тренированным спортсменам.
Цитата
Вот тут можно время отклика до микросекунд уменьшить
Почитайте название темы : "Опрос клавиатуры...", не управление ключами драйвера двигателя для соотв. формирования ШИМ, а опрос
клавиатуры!
Клавиатуру нажимает человек, а не робот. Именно из этой позиции и следует подходить к решению задачи с клавиатурой.
Роботы еще не скоро займут место человека, но, если и займут, то клавиатура им точно не понадобится
Как-то в свое время ради интереса я собирал статистику: имеем задачу, которая занимается обработкой матричной клавиатуры 16х16, период - 50мс (дребезг в таких условия не грозит).
Так вот нагрузка на CPU (мерял под RTOS) составляла сотые доли процента. Речь тогда была про "бытовые" кортексы STM32F103 на 72Мгц.
Сокращая период до 25 мс, нагрузка на CPU соотв. удвоилась - но в итоге те же доли процента ...
Поскольку события возникают лишь при
изменении состояния клавиатуры, то в расчете на 10 событий в секунду (таких индивидуумов еще найти нужно) нагрузка возрастала до 0.1%.
Вот и вся математика
Повторюсь - постоянный опрос клавиатуры 256 кнопок и 10 отпусканий/нажатий в секунду. Конкретный пример и конкретные цифры.
Код простейший, построенный по алгоритму, как я описал во втором посте этой темы.