Опрос кнопок микроконтроллером

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

OKF писал(а):А если взять китайскую мегу, то при том же qfp32, будем иметь 30(!) GPIO и 1% intrc на 32мгц. И, которая дешевле меги8!
Поддерживаю..

Там и математика аппаратная 32-х битная..
Вот только когда начал разбираться, то оказалость, что QFP32L это урезанная версия QFP48L. Урезана не только по количеству выводов, а также по функционалу. В частности урезан функционал АЦП.
А в корпусе QFP48L на али в продаже почему-то не встречается :dont_know:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Далась вам эта 32-битная математика! Какая-то странная манера действовать под лозунгом "шоб було". Уверен, что в ваших проектах и в 16-битной математике реальной нужды нет. Как, собственно, и в мегагерцах и тому подобном "функционале АЦП".

Добавлено after 3 minutes 16 seconds:
Здесь на форуме, пожалуй, только КРАМ и делает нечто нуждающееся в математике сложнее таблицы умножения...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

ARV писал(а):Уверен, что в ваших проектах и в 16-битной математике реальной нужды нет.
:shock: Я что? Так плохо выгляжу?

Например под BME280 пришлось писать и MUL_u64x24_80 и прочие вычисления..

По поводу "уверенности". можно ознакомиться с эффектом Даннинга-Крюгера :)
Друг Кота
Аватара пользователя
Сообщения: 6324
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4668544#p4668544"]я на "спектруме" очень много программировал на ассемблере.[/uquote]
У меня касание к Z80 произошло только на одной халтурке - надо было модернизировать один импортный прибор. Степень моего тогдашнего авантюризма: до этого я ни строчки не написал для Z80, не было компилятора, и у меня в распоряжении был только листинг, не совпадающий с конкретной прошивкой и с комментами на ... венгерском языке. :)
Млолдой был, 50 лет, наглый. :)
К удивлению всех - оно заработало!
Изображение
Реклама
Эиком - электронные компоненты и радиодетали
OKF
Это не хвост, это антенна
Сообщения: 1421
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

А у меня было мелкосерийное ус-во на z80 (чуть более 100 шт.). Началось в 1990-м, думал что отработает до 2000-ного максимум, реально доработало до 2010-го.)
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 551
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

AlexS4 писал(а):11x8 - элементарнейше сводится к 4x8 или к 4x6 1м корпусом 2ичного дешифратора (например симметричного коммутатора, мультиплексора - демультиплексора 16x1, вроде 74vlc150 )
ровно 1 корпус и ничего более, ни одного резистора, это совсем несложно
И смысл? места занимает больше, плата сложнее... На тиню13 все равно не натянуть...
В единичных радиолюбительских применениях, когда в ящике лежит сотня тринадцатых тиней и ни одной многоножки с 20+ GPIO - еще можно думать в сторону расширителей портов...
Но в остальных случаях проще взять другой МК.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6673
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Сообщение AlexS4 »

Just_Fluffy, OKF, ну это ж надуманный гипотетический пример, а иногда для какойто конкретной задачи полупериметр матрицы может быть больше доступного (свободного) числа gpio портов 1 mcu, сколько бы ног у него не было, я с таким несколько раз практически сталкивался, переходить на чипы большего размера не всегда так же просто как с tiny13 на tiny2313 например, по разным соображениям, и имхо применить простой расширитель в виде стандартной логики (демультиплексор или сдвиговый регистр или счетчик) - разумнее чем ляпать доп mcu чисто чтоб организовать развертку на матрице.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 166
Зарегистрирован: Сб янв 29, 2011 21:43:38
Откуда: Чернь, Тульская обл

Сообщение chern55 »

из библиотеки Гайвера Александра замутил для себя на c++
Вложения
button_AVR.rar
(2.18 КБ) 131 скачивание
Последний раз редактировалось chern55 Вс фев 16, 2025 13:21:40, всего редактировалось 1 раз.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 166
Зарегистрирован: Сб янв 29, 2011 21:43:38
Откуда: Чернь, Тульская обл

Сообщение chern55 »

А вот на си тоже из Гайвера. Убрал накликивания и некоторые другие функции. В архиве файл протеуса для оценки работы. Перебрал 2 десятка библиотек для кнопок, лучше не нашел. Самому написать ума не хватает, поздно уже усиленно учить язык. У кого есть более удобная библиотека для кнопок, поделитель, пож.
Вложения
button_test.rar
(88.53 КБ) 122 скачивания
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

chern55 писал(а):Перебрал 2 десятка библиотек для кнопок,
:facepalm:
chern55 писал(а): У кого есть более удобная библиотека для кнопок, поделитель, пож.
Спойлер

Код: Выделить всё

	in R16, PIND
	sbrs R16, (бит кнопки)			; пропустить если бит в регистре установлен
	rjmp на_выполнение		
Пользуюсь и не выпендриваюсь :))) и оно работает))
Но ведь набегут критики и расскажут про дребезг))
Вымогатель припоя
Аватара пользователя
Сообщения: 551
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

shonty, chern55, опять же, все зависит от алгоритма и требований. Как по мне, гайверовский вариант - расточителен по выделяемому ОЗУ на кнопку...
Опять же, универсальные варианты всегда будут в чем то переусложнены. Поэтому варианты без дребезга тоже имеют право на существование.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Just_Fluffy, задержку на дребезг вставляю если нужно дифференцировать длинное нажатие от короткого..
Тут да, иначе длинное может сработать как короткое.
В иных случаях сразу на выполнение))
Вымогатель припоя
Сообщения: 570
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

[uquote="shonty",url="/forum/viewtopic.php?p=4683177#p4683177"]иначе длинное может сработать как короткое.[/uquote]
У меня если для кнопки разрешено длинное и короткое нажатие, то короткое автоматически срабатывает при отпускании.
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Adrift писал(а):то короткое автоматически срабатывает при отпускании.
да, но после фильтрации на дребезг))
иначе:
shonty писал(а):длинное может сработать как короткое
если обрабатывать когда не закончилась фаза дребезга.
Вымогатель припоя
Аватара пользователя
Сообщения: 551
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Еще раз, зависит от требуемого алгоритма поведения кнопки.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Друг Кота
Аватара пользователя
Сообщения: 6324
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

[uquote="shonty",url="/forum/viewtopic.php?p=4683163#p4683163"]Но ведь набегут критики и расскажут про дребезг))[/uquote]
Так уже неоднократно было сказано: это зависит от конкретной ситуации.
Гоняем, к примеру курсор по менюшке. На сколько позиций перескочит он от одного нажатия кнопки у ненавистника антидребезга - зависит только от меры хреновости примнённых им кнопок.
Изображение
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Осознайте, наконец, что опрос кнопок по таймеру на 100% давит дребезг, и начните, наконец, радоваться жизни! Не повторяйте эту мантру "антидребезг", она уводит вас от реальности в мир грез и страданий...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Jack_A писал(а):На сколько позиций перескочит он от одного нажатия кнопки у ненавистника антидребезга
ни на сколько))
у меня задержка перед заходом в опрос :)

Добавлено after 10 minutes 38 seconds:
Не всегда, но иногда так цикл оформляю:
Спойлер

Код: Выделить всё

LOOP:

; тут опрос кнопок..

rjmp LOOP

еxit_LOOP: ; сюда возвращаюсь из подпрограмм
;тут задержка
rjmp LOOP
Друг Кота
Аватара пользователя
Сообщения: 6673
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Сообщение AlexS4 »

[uquote="ARV",url="/forum/viewtopic.php?p=4683272#p4683272"]Осознайте, наконец, что опрос кнопок по таймеру на 100% давит дребезг, и начните, наконец, радоваться жизни! Не повторяйте эту мантру "антидребезг", она уводит вас от реальности в мир грез и страданий...[/uquote]
ну это довольно смелое утверждение,
если дребезг длился все время между точками опроса то алгоритм может считать непредсказуемую последовательность из 4х вариантов при 2х последовательных опросах.

если же тупо увеличивать время опроса то могут быть пропущены короткие нажатия. или двойное нажатие будет интерпритировано как одиночное и наоборот, или возникнет существенная задержка реакции. (100mS например это уже заметно и часто неприятно)

я всегда принимаю решение по фиксации изменения дребезжащего сигнала когда 2-3 семпла с таймера дали одинаковое значение после последнего изменения.
это тривиально делается сразу для группы сигналов простейшим кодом из битовых операций. букавльно 3-6 инструкций в таймерном прерывании.
OKF
Это не хвост, это антенна
Сообщения: 1421
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="AlexS4",url="/forum/viewtopic.php?p=4683351#p4683351"]...по фиксации изменения дребезжащего сигнала когда 2-3 семпла с таймера дали одинаковое значение после последнего изменения.[/uquote]
Только не семпла (период опроса может быть разный), а в течение 20..50 мс длительности, обычно.
Ответить

Вернуться в «Периферия»