Перейти к содержанию
    

Опрос клавиатуры на С

У музыкантов нужно точно отслеживать длительность нажатия, с разрешением не хуже 10 мс.

Это специфика. Там еще и амплитуду-форму сигнала нажатия клавиши надо отслеживать. Задача намного сложенее, чем HMI для оператора.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Греть резисторы подтяжки таким током долго - не всегда разумно.

Например, в педали тормоза обычных рядовых машин стоит концевик-кнопка, а роль резисторов подтяжки которой играют лампы стоп-сигналов - "одним выстрелом двух зайцев"

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну раз музыканты это специфика, то вот еще один пример.

Есть у меня самодеятельный ЦАП с пультом управления. Пульт с многими кнопками, а питается для уменьшения габаритов от батареи типоразмера 2320. Так вот если мне каждые 100мс опрашивать кнопки, то батарейки придется часто менять. Можно даже придумать хитрый алгоритм, который будет увеличивать интервал между опросами, если длительное время отсутствует нажатие, но тогда я буду беситься от долгого времени отклика при первом нажатии.

Диоды же, повешенные на прерывание, позволяют МК спать все время, пока не произошло нажатия. Время работы от батареи значительно вырастает....

Эти примеры я для чего привожу, что каждой задаче - свое решение. И вопрос как лучше опрашивать клавиатуру на Си, требует уточнения, какую клавиатуру и в каких условиях.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И вопрос как лучше опрашивать клавиатуру на Си, требует уточнения, какую клавиатуру и в каких условиях.

Логично ))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну раз музыканты это специфика, . . . .

Мой коллега по работе пламенный сторонник "прерывательной" клавиатуры. Да, если нужен глубокий LPM и в то же время - быстрая реакции на

нажатие - прерывания вне конкуренции.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мой коллега по работе пламенный сторонник "прерывательной" клавиатуры. Да, если нужен глубокий LPM и в то же время - быстрая реакции на

нажатие - прерывания вне конкуренции.

Тема ушла куда то "налево" :( А хотелось просто увидеть код хорошего простого решения по клавиатуре...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема ушла куда то "налево" :( А хотелось просто увидеть код хорошего простого решения по клавиатуре...

Так что за клавиатура?

Код сканирования вот такой клавиатуры устроит ?

giphy.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема ушла куда то "налево" :( А хотелось просто увидеть код хорошего простого решения по клавиатуре...
Нет, тема идет полностью так, как Вы ее задали в первом посте.

Опрос клавиатуры на С -> Как написать компактный и "красивый" код?
Вот Вам и рекомендуют не сам код, а как его писать "красиво", те выбрать правильный алгоритм. Как его перенести на код - это уже дело техники.

т.е. Вы хотите увидить готовый код - драйвер клавиатуры ? Хотя это несколко противоречит цитате выше :)

(я свой драйвер матрицы 4x4 выложу, позднее).

Вот реализация на С от Ti Low power keyb

PDF SLAA773

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, в педали тормоза обычных рядовых машин стоит концевик-кнопка, а роль резисторов подтяжки которой играют лампы стоп-сигналов - "одним выстрелом двух зайцев"

А зачем в "рядовых" машинах подтяжка с кнопки педали тормоза?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот реализация на С от Ti

Тут надо сразу предупредить, что такая клавиатура надежно дает определить только одно нажатие.

Если речь идет о клавиатуре скажем PC где надо обрабатывать несколько нажатий одновременно, то такая клавиатура не годится.

Надо добавить диоды как минимум.

А алгоритм соответственно не адаптирован к условиям сильных помех.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем в "рядовых" машинах подтяжка с кнопки педали тормоза?

Под рядовыми я понимаю бюджетные ширпотребные авто не самых "бородатых" годов (скажем, до 10лет), где все же производится хотя бы какой-нить целостность стоп-ламп, тем более, если авто с коробкой-автомат.

Но это уже офф.

Тут надо сразу предупредить, что такая клавиатура надежно дает определить только одно нажатие.

Если речь идет о клавиатуре скажем PC где надо обрабатывать несколько нажатий одновременно, то такая клавиатура не годится.

Надо добавить диоды как минимум.

Вы верны своей "традиции" - очередной "пук в лужу" :biggrin:

Любая матричная клавиатура позволяет однозначно обрабатывать условия, когда даже ВСЕ кнопки нажаты и уж тем более в любом сочетании любого числа одновременно нажатых кнопок.

Никакие диоды тут не нужны. Достаточно лишь ряда резисторов подтяжки на столбцы или строки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы верны своей "традиции" - очередной "пук в лужу" :biggrin:

За это вам предупреждение. Второго не будет.

 

Любая матричная клавиатура позволяет однозначно обрабатывать условия, когда даже ВСЕ кнопки нажаты и уж тем более в любом сочетании любого числа одновременно нажатых кнопок.

Никакие диоды тут не нужны. Достаточно лишь ряда резисторов подтяжки на столбцы или строки.

А над этим предлагаю вам подумать еще раз.

На матрице без диодов при одновременном нажатии в определенной конфигурации возможны фантомные определения нажатий.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А над этим предлагаю вам подумать еще раз.

Согласен, поторопился с выводами. Без диодов в таком случае не обойтись.

Однако, в случае с клавиатурой, у которой сопротивление нажатых кнопок относительно большое (пленочные клавиатуры), это решаемо без диодов.

Но усложняется алгоритм опроса - нужен импульсный (ШИМ) или даже аналоговый способ измерений.

Судя по всему именно такой и применяется в клавиатурах ПК, для выявления подобных "коллизий".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извращение как раз в противоположном - ставить 5 Вт резистор подтяжки для подобных кнопок. А если кнопок много, то ...

К вашему сведению, я не придумал ничего нового - в данном случае также "традиционно" позаимствовал идею, ...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Что за блажь использовать низкоомную подтяжку для механических контактов.

Кто этот миф распускает, интересно?

Т.е. интересует первоисточник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...