Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.03.2020
Сообщений: 24

дребезг кнопки

30.04.2020, 15:18. Показов 795. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как сделать в протеусе дребезг кнопки?
Миниатюры
дребезг кнопки  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2020, 15:18
Ответы с готовыми решениями:

Предполагаемый дребезг кнопки, pic12f1501
RA0-вход RA2-выход Обработка срабатывания при нажатии в функции interrupt isr. Проблема в том, что при подаче питания без...

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

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

5
4047 / 2658 / 583
Регистрация: 11.09.2009
Сообщений: 9,496
30.04.2020, 15:40
Раз кнопки подключены к контроллеру, то логично обрабатывать дребезг кнопок программно.
0
0 / 0 / 0
Регистрация: 26.03.2020
Сообщений: 24
30.04.2020, 15:43  [ТС]
i8085, программно обработал, но есть проблема. преподаватель проверяет на реальном стенде, жмакает там на кнопку, и возникает жуткий дребезг. я увеличил задержку для проверки дребезга, но теперь выполнение команды проходит слишком долго. вычитал в методе что для этого мк интервал дребезга колеблется в районе от 10мс до 300мс. изначально стояло 10мс. как определить какую задержку лучше поставить? или я что то не то говорю и запутался?
0
4047 / 2658 / 583
Регистрация: 11.09.2009
Сообщений: 9,496
30.04.2020, 16:02
Цитата Сообщение от Ridlefk Посмотреть сообщение
какую задержку лучше поставить?
Счёт каких-то задержек при отработке нажатия кнопок - это "детский сад". Нажатия кнопок лучше обрабатывать в отдельном потоке (по прерываниям от таймера), обрабатывая как нажатия, так и отпускания. Тогда обработка "достоверности" нажатия может занимать и 50 - 100 мс (для человека, нажимающего кнопку, это практически мгновенно), а время выполнения обработки этих прерываний практически не будет занимать "процессорное" время, т.е. не будет влиять на выполнение основного кода программы.
В прерывании устанавливается переменная, какие кнопки нажаты. В основном потоке эта переменная периодически в нужных местах кода проверяется.
0
0 / 0 / 0
Регистрация: 26.03.2020
Сообщений: 24
30.04.2020, 16:08  [ТС]
i8085, подскажите пожалуйста, как сделать обрабатывание в отдельном потоке по прерываниям от таймера на нажатия и отпускания? код пишется на простом С.

Добавлено через 1 минуту
i8085,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//открываем бесконечный цикл и проверяем кнопку
    while(1){
        //отслеживаем состояния пина порта В      
        but_count = PINB;
        /*если предыдущее состояние: все кнопки отжаты и 
        нажата кнопка на порте В разряд 0 */
        if((but_state == 0) && (but_count == 1))
        {   //открываем цикл для проверки дребезга
            //если счетчик дребезга меньше или равен 3 и нажата кнопка
            while((button_stop <= 3) && (but_count == 1))
            {   //увеличиваем счетчик и ждем задержку
                button_stop++;  
                _delay_ms(30);              
            }
            //если после проверки счетчик больше или равен 3
            //т.е. это был не дребезг
            if(button_stop >= 3)
            {   //инвертируем переменную выбора режима
                count_str ++;   
                //делаем очистку дисплея
                lcd_clear();
                _delay_ms(15);
0
4047 / 2658 / 583
Регистрация: 11.09.2009
Сообщений: 9,496
30.04.2020, 16:28
Да, по алгоритму... Период опроса порта (период таймера) - 10-20 мс. Отловили на входе порта "кнопка замкнута" - устанавливаете в переменной "кнопка нажата". Переходите в "ожидание отпускания". Если в течение скажем 100 мс (время выбирается в зависимости от степени паршивости кнопок) все отсчёты подряд с порта равны "кнопка разомкнута" - ставите "кнопка отпущена", переходите в режим ожидания нажатия. Если с порта во время ожидания отпускания приходит "нажата" (тот самый "дребезг", с которым боремся), отсчёт времени сбрасывается, нечинается с начала.
Таким образом нажатием кнопки считается первое же замыкание, о отпусканием - нахождение кнопки в разомкнутом состоянии не менее заданного времени.

Как на "С" обрабатывать прерывания от таймера - это уж сами...

Добавлено
Кстати, в таком алгоритме легко сделать "автоповтор нажатия" при длительном удержании кнопки нажатой, с заданной начальной задержкой и периодом, как у компьютерных клавиатур. Для этого в режиме "ожидание отпускания" считается время нажатия.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2020, 16:28
Помогаю со студенческими работами здесь

Дребезг кнопки
Добрый день, использую чип EPM3032ALC44, пишу на Verilog. Сильно не пинайте это мой третий проект (маленький). Написал проект, при...

Дребезг кнопки (а может и нет) ATmega8a
Хоть плачь, не могу понять, то ли в программе неправильно что-то делаю, то ли дребезг виноват, помогите, пожалуйста! Люди добрые! В...

Дребезг контактов
Приветствую всех! Есть вопрос на stm32l152 сделал моргалки по кнопке, работает, но присутствует эффект &quot;дребезга контактов&quot;....

Дребезг, прерывание
Немного не селен в прерываниях. подскажите как установить таймер для проверки нажатия кнопки и избавиться от дребезга в поссле режима 1...

Дребезг контактов
Доброго времени суток всем! Подскажите пожалуйста, какие есть возможные аналоговые варианты подавления дребезга контактов? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru