Например TDA7294

Форум РадиоКот • Просмотр темы - Кнопки и кнопочный интерфейс
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 19, 2024 03:53:24

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 65 ]  1, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 06:53:08 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
Скажу сразу, многие начинающие осваивать МК (что греха таить, и сам таким был, а местами и до сих пор есть) не умеют правильно работать с кнопками и довольно часто в поделках (причем не только любительских) наблюдается специфическая реакция на нажатие кнопки (то кнопка сразу сработает, то с задержкой, а то, бывает, и вообще не сработает :)) в зависимости от того, в какой момент нажата). Также новички часто забывают про дребезг.
Вот я и решил собрать "коллекцию" приемов взаимодействия (и подключения кнопок), описать преимущества и недостатки того или иного метода...
В общем здесь будем добиваться четких нажатий, быстрой реакции и взаимопонимания с МК. :beer:

Добавлено after 26 minutes 57 seconds:
для начала подключение кнопки и настройка порта:
устройство небольшое, кнопка рядом, помехи невелики, кнопка подсоединяется с Y выход порта X на "минусовую" шину:
Код:
DDRX&=~(1<<Y); //DDRX.Y=0; устанавливаем ногу на вход.
PORTX|=(1<<Y);  //PORTX.Y=1; включаем подтягивающий резистор (внутри МК).
...
//теперь PINX&(1<<Y)   //PINX.Y отражает состояние входа (и кнопки) 0-нажата, не 0 - не нажата
//(тут важно - "не 0" это не обязательно 1, конструкция PINX&(1<<Y) при отпущенной кнопке принимает значение 2^Y)
кстати тут и у меня вопрос: в чем принципиальные отличия при обращении к биту в регистре порта DDRX&=~(1<<Y); или DDRX.Y=0;?

самый простой пример антидребезга:
Код:
if ((PINX&(1<<Y))==0)
{
delay_us(100); //задержка перед повторной проверкой кнопки
if ((PINX&(1<<Y))==0) {действия при нажатой кнопке};
};
вся эта конструкция должна постоянно повторяться (выполняется в цикле или запускается в прерывании по таймеру).

Добавлено after 9 minutes 12 seconds:
если требуется величить стабильность (ослабить помехи) можно добавить внешний резистор от "ноги" к плюсу питания МК (R около 10кОм).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 07:23:51 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
...в чем принципиальные отличия при обращении к биту в регистре порта DDRX&=~(1<<Y); или DDRX.Y=0;?...

Попробуйте писать в AtmelStudio и в CodeVision. Посмотрите результаты компиляции в обеих программах.
Цитата:
самый простой пример антидребезга:

Вот так вот, с места в карьер. Неплохо бы для начала обозначить суть проблемы - что такое дребезг. Далее - методы его подавления.
Цитата:
я ... решил ...описать преимущества и недостатки того или иного метода...

Где оные для "самого простого примера"?
Цитата:
довольно часто в поделках (причем не только любительских)

Примеры в студию. Особенно того, что в скобках.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 08:28:40 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Примеры в студию. Особенно того, что в скобках.
вот как привести? сфоткать устройство и подписать - у него кнопки отрабатывают хреново? :)) счетчики вроде такие попадались, попадутся опять - сфоткаю. ПС. китайские поделки к какой группе относить?
pyzhman писал(а):
Попробуйте писать в AtmelStudio и в CodeVision. Посмотрите результаты компиляции в обеих программах.
студии под рукой нет, КВАВР отрабатывает обе, результат одинаковый: CBI 0x12,1 , но, если написать типа PORTA&=~(1<<0|1<<1); (изменяем несколько бит) то тут обработка будет через регистр (чтение всего порта, правка регистра, запись в порт).
pyzhman писал(а):
Вот так вот, с места в карьер...что такое дребезг?
дельное замечание...надо хоть ссылочкой подкрепить
pyzhman писал(а):
Где оные для "самого простого примера"?
самый большой недостаток - применение программной задержки Delay_us(); - "благодаря" ей приостанавливается выполнение вычислений, ещё из недостатков - слежение за кнопкой происходит программно, и если контроллер занят чем-то другим (возможно отрабатывает чью-то задержку :)) ) нажатие кнопки может быть пропущено...
pyzhman спасибо за правки, а как считаете, вообще тема нужная или я это зря затеял?

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 08:37:04 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ivanoff-iv писал(а):
как считаете, вообще тема нужная или я это зря затеял?
зря

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 10:21:07 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5592
Откуда: Minsk
Рейтинг сообщения: 0
Как уже пришли к консенсусу в другом топике - тупо delay - зло абсолютное и должно быть игнорируемо. А антидребезг легко делается в таймерном прерывании: получили >=3 совпадений подряд (при 10мс-ном прерывании) - состояние зафиксировано, не совпадает с текущим - отрабатываем изменение состояния.
Насчет go to мнения разделились :)

_________________
Изображение


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 10:21:29 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Даже с учетом того, что подход с задержками неправильный, задержки в 100 микросекунд будет недостаточно. При дребезге кнопок нужны задержки порядка единиц миллисекунд.
Попутно, кто-то может подсказать алгоритм обработки коротких/длинных нажатий кнопок. Можно кодом на АСМ/Си, можно псевдокодом, можно вообще словами описАть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 10:41:16 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 5
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Jack_A писал(а):
Насчет go to мнения разделились
ну и на счет delay() они тоже моими стараниями не так однозначны.
не вижу абсолютно ничего плохого в delay(), в том числе и при подавлении дребезга. как и в случае с goto просто есть разумные ограничения на эффективность применения, только и всего. никакого абсолютного зла, не наводите напраслину на задержку :)))

да, кстати, о каком топике вы говорили? что-то пропустил я холиварчик ...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 10:46:42 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
...тема нужная или я это зря затеял?

У вас нет системного подхода, сумбур. Составьте план, обязательно отрецензируйте и только потом, если не пропадёт запал, выкладывайте в сеть.
Пока_без_кота писал(а):
...подход с задержками неправильный...

Я бы не был так категоричен. В ногодрыгалках (бегущие огонёчки, гирлянды, таймерочки, моторчики) вполне себе работает делэй_мс(10) в майне.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 11:28:18 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
кто-то может подсказать алгоритм обработки коротких/длинных нажатий кнопок.
И это планирую, есть обкатанный алгоритм: понадобятся 1) регулярный запуск подпрограммы опроса кнопок и переменная - накопитель.
//отступление: считаем запаркованный счетчик == 0, сброшенный ==1.
в подпрограмме проверили кнопку: нажата
{счетчик не запаркован? //>0
{прирастили счетчик, сверили его с уставкой длинного нажатия: дошла
{паркуем счетчик; действие длинного нажатия;};};}
иначе (не нажата){
проверяем счетчик: ((больше минимума) и (незапаркован)) {действие короткого нажатия;};
/*запаркованный счетчик итак меньше минимума => это условие можно не проверять.*/
сброс счетчика;};
----------

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Последний раз редактировалось Ivanoff-iv Чт янв 11, 2018 06:09:53, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 16:15:01 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5592
Откуда: Minsk
Рейтинг сообщения: 0
ARV писал(а):
да, кстати, о каком топике вы говорили? что-то пропустил я холиварчик ...

Дык это наша с вами дискуссия и была, viewtopic.php?f=57&t=150874&p=3261138#p3261138
А мне показалось, что консексус :)

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 22:13:48 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Сб янв 14, 2012 22:53:50
Сообщений: 225
Рейтинг сообщения: 0
_delay_ms() в обработке кнопок, если речь не идет о примитивном радиобрелке с одной функцией, это, наверно, самый четкий признак профнепригодности. В адекватном же коде опрос вызывается по переполнению таймера каждые ~200 ms из основного цикла. Если отслеживаем длинные нажатия, то первый раз поднимаем флажок, тогда второе срабатывание будет означать долгое нажатие, если же пин вернулся в начальное состояние, то нажатие было короткое.
Это, собственно, одна из простейших реализаций т.н. State Machine.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 23:30:44 
Мудрый кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 93
Зарегистрирован: Ср сен 07, 2011 21:40:30
Сообщений: 1797
Рейтинг сообщения: 6
Самый четкий признак профнепригодности- категоричный бред.
Для начала смотрим на дребезг
http://radio-hobby.org/modules/news/art ... toryid=797
Потом вспоминаем про возможные помехи.
Затем вспоминаем про постепенное окисление дешевых тактовых кнопок.
Пытаемся все эти вещи учесть в обработчике.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Ср янв 10, 2018 23:58:42 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
вообще тема нужная или я это зря затеял?

Вообще, такая тема уже существует. Причём она прикрепленная. viewtopic.php?f=61&t=79801


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Чт янв 11, 2018 05:43:05 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если отслеживаем длинные нажатия, то первый раз поднимаем флажок, тогда второе срабатывание будет означать долгое нажатие, если же пин вернулся в начальное состояние, то нажатие было короткое.
Это, собственно, одна из простейших реализаций т.н. State Machine.
Вот против этого я и хотел выступить - 1) ты сделал 2 коротких нажатия, а получил одно длинное, т.к. второе нажатие совпало с вторым опросом, 2) даже если надо одно короткое, но выверенное по времени, то это будет сложно сделать т.к. система будет ожидать 2го замера, чтобы убедиться, что нажатие было коротким, и вообще система будет казаться тормознутой (по той же причине).

Добавлено after 24 minutes 39 seconds:
Вообще, такая тема уже существует.
Вот я лоханулся, там эта тема, наверно, действительно уместней...
П.С.: я просматриваю 5 тем на форуме, на большее интернета не хватает (открывает > 40сек страницу...) вот и проглядел. Пошел туда почитаю, может там, всё что я хотел обсудить уже есть...

Добавлено after 1 hour 30 minutes 25 seconds:
Для pyzhmana:
Спойлер
Цитата:
довольно часто в поделках (причем не только любительских)
Примеры в студию. Особенно того, что в скобках.
Вот: не я один это вижу
Щелчёк - это ~ 0.2...0.3 сек.
А ждать 0.5 сек нажатой кнопку, для одного клика - мазохизм.
Встречался я с пром-приборами, ПО для которых писались такими горе-программистами. Одно только лазанье по меню вызывает раздражение, переходящее в нервоз. Не говоря уж о том, когда увеличиваешь/уменьшаешь цифровые значения параметров :facepalm:

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Чт янв 11, 2018 05:59:17 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
...
Для pyzhmana...

Не оправдывайтесь, ни к чему. Все пацаны и так в курсе.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Чт янв 11, 2018 06:55:27 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Jack_A писал(а):
Дык это наша с вами дискуссия и была,
ну так консенсус же был достигнут на фразе
Jack_A писал(а):
Даже в этом ответе - сомневаюсь
, а тут снова категоричность в заявлении
Jack_A писал(а):
тупо delay - зло абсолютное и должно быть игнорируемо
;)
Flasher писал(а):
Самый четкий признак профнепригодности- категоричный бред.
люто плюсую!
philosoraptor писал(а):
В адекватном же коде опрос вызывается по переполнению таймера каждые ~200 ms из основного цикла.
:facepalm:

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Чт янв 11, 2018 07:27:30 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 3
...каждые ~200 ms...

Изображение

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Чт янв 11, 2018 11:00:01 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5592
Откуда: Minsk
Рейтинг сообщения: 0
В общем, сколько людей - столько и мнений. В спорах не рождается истина, в спорах ее могут только придушить :(
Старая добрая RC решает проблему, а если нужны фронты, есть место и не жмет потребление - триггер Шмиткина нам в помочь. И тогда об delay спор утихнет, и проблема автоповтор=длинное нажатие решится безболезненно, бо по прерыванию по фронту-срезу. Мы с Мурзиком такого мнения.Изображение


Вложения:
RC.JPG [2.53 KiB]
Скачиваний: 1227

_________________
Изображение
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Чт янв 11, 2018 11:17:37 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Jack_A писал(а):
Старая добрая RC решает проблему
ну вы даёте! :shock: это же mauvais ton! а если кнопок 10 - это ж сколько обвеса дополнительного?! решение всех проблем программно (ну или аппартно встроенными в МК средствами) - вот наш выбор!

и кроме нас с Бусей и Кексом, так считают многие другие :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Кнопки и кнопочный интерфейс
СообщениеДобавлено: Чт янв 11, 2018 11:58:53 
Вымогатель припоя

Карма: 6
Рейтинг сообщений: 7
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 522
Рейтинг сообщения: 0
не вижу ничего плохого в применении _delay где бы то ни было и уж тем более для подавления дребезга :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 65 ]  1, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y