Обсуждаем контроллеры компании Atmel.
Сб окт 26, 2019 21:10:22
Есть некое устройство с клавиатурой. Нажатая клавиша определяется определенной цифровой последовательностью. Нужно подключть МК к двум клавишам и определять какая клавиша была нажата. Как это реализовать ?
Вот так выглядят последовательности импульсов (клавиша А и клавиша В)
- Вложения
-
- AB.png
- (17.04 KiB) Скачиваний: 557
Вс окт 27, 2019 10:30:39
Посчитать принятые импульсы и сравнить с ранее записанными («кодами» клавиш)…
Вс окт 27, 2019 11:51:49
аппаратно Input Capture ? Или программно ?
Определять начало и конец активной фазы передачи по длительности фронта спада между передачами ?
Вс окт 27, 2019 12:37:18
Так это кому как нравится… реализация имеет множество решений… главное чтобы выполняло то что необходимо…
Вс окт 27, 2019 18:22:44
сигнатурный анализаторв помощь!
Вс окт 27, 2019 19:23:05
собственно я и спрашиваю у более опытных коллег какой способ наипростейший.
А не будет ли проще не анализировать код клавиатуры, а сравнивать две линии (входную и выходную)? Если совпадает, то кнопка нажата.
P.S. Длительность некоторых импульсов в коде около 4мкс. Если делать выборку хотябы 4 точки на импульс, то основная программа не будет успевать выполняться на 8МГц.
Вс окт 27, 2019 21:22:31
Что вы называете "входная и выходная линия"?
Зачем делать выборки какие-то? Запускаете таймер в режиме захвата и им считаете длительности импульсов.
Если "програмно" - то прерывание по изменению уровня сигнала и таймер в обычном режиме. Но смысла это не имеет.
Если будете делать "выборки", то конечно на это время основной программе некогда будет работать. Это имеет смысл только если ничего не делается, пока кнопка не нажата.
Если кнопок всего 2, или другие нажиматься не будут - можно просто проверять различие в импульсах кнопок А или Б и по нему определять какая нажата была.
Пн окт 28, 2019 07:52:01
Что вы называете "входная и выходная линия"?
Кнопка зажимает два контакта: один выход - по нему передается код клавиши, другой вход (общий для некоторого кол-ва кнопок)- принимает код.
Если кнопок всего 2, или другие нажиматься не будут - можно просто проверять различие в импульсах кнопок А или Б и по нему определять какая нажата была.
Кнопок больше.
Я так понял что в моем случае вариант с режимом захвата оптимален ?
По поводу выбора частоты кварца.
Как уже было сказано длительность некоторых импульсов 4мкс. В реальном времени нужно обработать захваченные данные. В программе будет еще ШИМ и определение длительности нажатия кнопок (минимум 2 прерывания). Мне кажется что частоту нужно выбирать не менее 16МГц. А с учетом того, что код программы не будет оптимален (мало опыта), то и 20МГц не достаточно будет.
Пн окт 28, 2019 09:03:04
а выходной провод только один? нету рядом клок'а?
Пн окт 28, 2019 09:51:54
Ivanoff-iv писал(а):а выходной провод только один? нету рядом клок'а?
контактов много, но клока нет
Пн окт 28, 2019 10:06:38
тода, да, проще всего сесть на шины... 2 входа (если кнопки на различных входах) на прерывания, а выходы на порт и в прерывании этот порт сохранять...
Добавлено after 2 minutes 38 seconds:
можно, как тут писали - захватом... т.е. просто замерять время между провалами... по получившейся "картине" восстанавливать код исходного сигнала и определять нажатую кнопку...
Пн окт 28, 2019 10:19:52
Внесу ясность.
Вот такая схема включения кнопок.
Задача: Определить нажатие А и В. После определения , в зависимости от длительности нажатия, выполнять некоторые действия. Длительность импульсов в коде клавиш от 4мкс.
Как лучше поступить, что бы хватило ресурса AVR ?
- Вложения
-
- 1.png
- (4 KiB) Скачиваний: 432
Пн окт 28, 2019 10:46:08
а какое напряжение на выводе 5 если все кнопки отпущены?
Добавлено after 9 minutes 39 seconds:так всё становится проще... код ведь не обязательно пропускать через кнопку...
допустим напряжение на 5 при отпущенных кнопках низкое... тогда один из возможных вариантов:
Спойлер
- Вложения
-
- 2019-10-28_14-01-28.png
- (9.28 KiB) Скачиваний: 284
Пн окт 28, 2019 10:53:27
а какое напряжение на выводе 5 если все кнопки отпущены?
импульсы:
Код нажатой кнопки передается в положительном импульсе - модулированый.
- Вложения
-
- 2.png
- (1.21 KiB) Скачиваний: 443
Последний раз редактировалось
prw07 Пн окт 28, 2019 11:00:56, всего редактировалось 1 раз.
Пн окт 28, 2019 10:59:30
значит - на момент передачи высокое... ну, разверни диоды...
Добавлено after 1 minute 17 seconds:
хотя, и сами сумматоры можно сделать подругому... например на транзисторах
Пн окт 28, 2019 11:03:15
не совсем понял куда что подключать. Можете пояснить что есть to-mk-a , to-mk-b ?
Пн окт 28, 2019 11:11:48
тогда скорее всего схема станет такой (канал второй кнопки такойже как и первой, я его не нарисовал....)
Спойлер
Out_To_MK - выход состояния кнопки (уже без кода)
Добавлено after 2 minutes 44 seconds:R1 возможно поменьше придется поставить... килоом 10-30...
- Вложения
-
- 2019-10-28_14-23-52.png
- (9.81 KiB) Скачиваний: 275
Пн окт 28, 2019 11:22:39
Понял. Буду пока "курить".
Спасибо!!!
P.S. Не очень-то хочется дорожки на кнопки резать.
Добавлено after 3 minutes 14 seconds:
наверное не пойдет. Кнопок много, надо все дорожки порезать и впихнуть диоды.....
Пн окт 28, 2019 11:59:59
нет, диоды там скорее всего внутри уже есть...(до кнопок)
Добавлено after 8 minutes 3 seconds:
ещё вариант - просуммировать сигналы с нескольких кнопок (взяв до кнопок) и - вуаля! вот он клок...
Добавлено after 1 minute 31 second:
тут бы, желательно осциллограмку заценить, она точнее чем рисунок...
Пн окт 28, 2019 12:00:11
нет диодов. с клавиатуры сразу на контроллер все идет
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.