Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Нужна толковая учебка по кнопкам с AVR

Ср дек 19, 2018 07:23:52

Мяу-мяу! т.е . ЗДРАСТЕ!
Может кто знает, где есть учебный курс по более расширенной работе кнопками с мега8. В сети совсем мало именно по этой теме, и для решения моей задачи не очень-то помогает.
с уважением.

Re: Нужна толковая учебка по кнопкам с AVR

Ср дек 19, 2018 07:32:14

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

Re: Нужна толковая учебка по кнопкам с AVR

Ср дек 19, 2018 22:23:57

Например, здесь и в ютубе на народстрим и майчип описывается самое простое: вкл-выкл светодиод и борьба с дребезгом. Поэтому я и обратился за помощью. А моя задача :
1. два канала управления ,в каждом кнопки "+" и "-" , в одном 4 выхода , в другом 3,
2. подали питание, включился выход 1 в обоих каналах,
3. управление по каналам независимое,
4. давим "+" , 1-ый выход потух, включился 2-ой, и каждое нажатие переключает на 1 пункт, на последнем счёт останавливается,
5. давим "-" , счёт идёт в обратную сторону также одно нажатие - одно переключение , доходит до первого выхода и стопорится , т. е. по кольцу не ходит.
Понятно, что задачка простая, но собирать на реверс-счётчиках и логике на сегодняшний день как-то сами понимаете.

Re: Нужна толковая учебка по кнопкам с AVR

Ср дек 19, 2018 23:20:59

Если рассматривать одно нажатие. То алгоритм такой. Нажимается кнопка, подвалятся дребезг, отключается (записывает лог. 0 в порт) 1 выход, небольшая задержка 1-5 миллисекунд, далее все это дело переходит в программный блок второго нажатия, включается (записывает лог. 1 в порт) 2 выход и проверяется отжата ли кнопка. Ну а далее все также со стальными выходами. :tea:

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 00:01:23

Возможно моё предложение это идиотизм и меня закидают какахами, но если вам жаль тратить таймеры и использовать поллинг, то вам может помочь эта схема
Изображение

Не могу сказать, что окончательно уверен в её работоспособности, но что-то мне подсказывает, что неработать тут нечему.
Ловим прерывания INT0 или INT1 и сразу проверяем содержимое регистра PIND. Если нажата одна кнопка - делаем ..., если другая...

Добавлено after 1 minute 22 seconds:
Естественно кондёры надо не забыть.
Вложения
123.png
(15.91 KiB) Скачиваний: 708

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 00:04:49

Добавлено after 1 minute 49 seconds:
Возможно моё предложение это идиотизм и меня закидают какахами, но если вам жаль тратить таймеры и использовать поллинг, то вам может помочь эта схема
Изображение

Не могу сказать, что окончательно уверен в её работоспособности, но что-то мне подсказывает, что неработать тут нечему.
Ловим прерывания INT0 или INT1 и сразу проверяем содержимое регистра PIND. Если нажата одна кнопка - делаем ..., если другая...

Добавлено after 1 minute 22 seconds:
Естественно кондёры надо не забыть.
За схемку спасибо, ещё бы кодик ...

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 00:24:31

Так у вас 7 выходов в сумме и они все одинаковые по алгоритму работы. А сам алгоритм, я уже описал выше. Вот берите и пишите по нему код.
И прерывания тут нафиг не нужно. Оно только усложнит задачу. Так как прерывания и дребезг контактов, это тот еще геморрой.

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 05:56:10

:facepalm: диоды то нафига? если так нужны прерывания, - PCINT в помощь, ловишь прерывание с любой ноги его порта а там проверяешь...
по уму - просто регулярно опрашивай кнопки и считай сколько раз оказалось "нажато" подряд...

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 07:08:55

У mega8 PCINT нет.

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 08:16:23

вообще говоря, совершенно не понятно, с чего сыр-бор.
самое тупое, но надежное, как лом, решение - поллинг порта, - чем не устраивает?
1. считали состояние порта с кнопками
2. замаскировали лишние биты, чтобы остались только биты с кнопками
3. запомнили этот байт
4. подождали 10-20 мс
5. снова проделали п.1-2 и сравнили результат с запомненным байтом
6. если они равны - в байте будет число, однозначно соответствующее комбинации нажатых кнопок, если не равны - игнорируем это вообще, обнуляя результат
7. вышеперечисленное оформляем в виде отдельной функции, возвращающей код состояния кнопок, и вызываем с нужной периодичностью из главного цикла
8. в главном цикле вызываем функцию, и по её результату делаем то или иное действие, если 0 - не делаем ничего.

куда уж проще-то?

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 09:53:43

... для решения моей задачи не очень-то помогает.
ARV писал(а):...куда уж проще-то?
Как это куда?! :shock: Еще проще - получить все готовенькое на халяву, вообще не напрягаясь :))) :)))
Sergbern писал(а):За схемку спасибо, ещё бы кодик ...

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 11:12:18

Если по прерываниям - достаточно одной линии возврата и порта контрольного поля конпок.
:roll:

Re: Нужна толковая учебка по кнопкам с AVR

Чт дек 20, 2018 15:36:37

Если по прерываниям - достаточно одной линии возврата и порта контрольного поля конпок.
:roll:

Прочёл 3 раза. ЛИНИЯ возврата? Порт КОНТРОЛЬНОГО ПОЛЯ? Куда я попал?

Re: Нужна толковая учебка по кнопкам с AVR [РЕШЕНО]

Сб дек 22, 2018 03:10:59

Ушёл на учёбу, вернусь не скоро ...
Ответить