Дребезг кнопки.
|
|
dimitriy-bc |
Дата: Вс, 16.11.2014, 13:45 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Всем доброго времени суток. Как можно обойти дребезг кнопки без использования DelayMS. Явно должны быть красивые решения, но мне в голову что-то ничего не приходит. Может у кого-то есть готовые решения? Буду признателен за помощь.
|
|
|
|
anatol |
Дата: Вс, 16.11.2014, 16:59 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Это как подумать... Если фиксировать нажатие - то кнопка или нажата или... Если фиксировать повторные нажатия, то без ожидания (пусть и созданного при выполнении нужной подпрограммы) - не обойтись
|
|
|
|
dimitriy-bc |
Дата: Вс, 16.11.2014, 18:02 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
В счетчике нужно набирать число включения реле.
|
|
|
|
mikhail09p |
Дата: Вс, 16.11.2014, 19:20 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
ak1:
If ENTER = 1 Then ENTER_bit = 0 ' пока нажата кнопка ENTER, бит ENTER_bit = 0 Print At 1, 1, "AK1 USTANOVLEN ?" ' выводим... Print At 2, 1, "AK1=", Dec akk1, " +1-0 ENTER" ' выводим... DelayMS 50 ' можно без задержки If PLUS = 0 Then akk1 = 1 ' опрос ещё кнопки PLUS If MINUS = 0 Then akk1 = 0 ' опрос ещё кнопки MINUS If ENTER = 0 And ENTER_bit = 0 Then ENTER_bit = 1: GoTo ak2 ' и если кнопку ENTER ещё не 'отпустили то GoTo ak1; если отпустили, то ENTER = 0 And ENTER_bit = 0 и программа GoTo ak2 GoTo ak1 ' а ENTER_bit = 1 для того, чтобы задержатся в следующем пункте меню
как-то так
Сообщение отредактировал
mikhail09p - Вс, 16.11.2014, 19:29
|
|
|
|
ADMIN |
Дата: Пн, 17.11.2014, 02:48 | Сообщение # 5 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Для таких случаев лучше использовать прерывание по фронту импульса.
|
|
|
|
MiXaS |
Дата: Вт, 18.11.2014, 21:12 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Если не очень часто спрашиваете, можно поставить конденсатор неполярный параллельно контактам кнопки емкостью около 10н–100н.
|
|
|
|
terrarus |
Дата: Пт, 21.11.2014, 16:17 | Сообщение # 7 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Лично я давно уже использую для опроса кнопок или переключателей например на 2-12 положений аналоговые входы в режиме АЦП. АЦП следует использовать в 10-битном режиме. Кнопки подключают при их нажатии разные сопротивления к земле. например: 1. Вход RA0 подтягиваю к +5В резистором 1,1 кОм. 2. кнопки одним выводом подключаются к земле. 3. вторыми выводами через резисторы ко входу RA0. При использовании разных резисторов получаются разные коды в пределах естественно от 0 до 1023. Такой прием полностью устраняет дребезг контактов кнопок и позволяет оставшиеся цифровые входа использовать для выходных сигналов. Вот в одной из разработок на 18F452: 1. RA0 в режиме АЦП используется для оцифровки сигнала переменного резистора который является задатчиком для задания скорости асинхронного двигателя токарного суппорта станка (Координаты Х - продольного и Y-поперечного движения суппорта) 2. RA1 в режиме АЦП используется для оцифровки сигнала переменного резистора который является задатчиком для задания скорости вращения асинхронного двигателя Шпинделя. 3. RA2 в режиме АЦП используется для оцифровки сигналов от двух кнопок "Шпиндель Пуск" и "Шпиндель Стоп" 4. RA3 в режиме АЦП используется для оцифровки сигналов от джойстика "X:ВЛЕВО", X:ВПРАВО", Y:ВПЕРЕД. Y:НАЗАД. 5. RA4 - кнопка джойстика "БЫСТРО" 6. RA5 - в режиме АЦП используется для оцифровки сигналов от двух кнопок "УСТАНОВКА Х в 0" и "УСТАНОВКА Y в 0". Эти копки предназначены для работы измерительной системы станка на координатах X и Y. 7. RE0 - в режиме АЦП используется для оцифровки сигналов от четырех концевиков - "ЛевКонцевик", "ПравКонцевик", "ПереднКонцевик", "ЗаднКонцевик". Остальные выводы работают как цифровые входы или выходы.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Пт, 21.11.2014, 16:18
|
|
|
|
dimitriy-bc |
Дата: Сб, 22.11.2014, 00:08 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Всем доброго времени суток и спасибо за участие в моем вопросе. Мне нужно доработать счетчик разработанный лет десять назад еще на асме для 84а. Поэтому вариант с АЦП отпадает. Использование интегрирующих цепочек тоже не годится т.к. пины работают как с кнопками так и с семи сегментным индикатором. Пока буду использовать DelayMS, но если появится время и не пропадет желание то попробую что-то сообразить и выложу свои фантазии.
|
|
|
|
mikhail09p |
Дата: Сб, 22.11.2014, 00:39 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Асм - это хорошо! По своей работе связан с ним крепко, но знаю плохо, как это ни парадоксально... Учусь. Но, когда было необходимо, перевёл код Асемблера на Протон измерителя ЕСR и ёмкости. В частности. Жизнь заставит... Так что, если нужно, то счётчик Ваш пишется как душе угодно - главное - желание и необходимость. ADMIN, наваять статью измерителя ЕСR и ёмкости на Протоне?
|
|
|
|
dimitriy-bc |
Дата: Сб, 22.11.2014, 00:52 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
Цитата mikhail09p ( ) Но, когда было необходимо, перевёл код Асемблера на Протон Так в Протоне и фантазирую. Про асм вспоминаю как страшный сон
Сообщение отредактировал
dimitriy-bc - Сб, 22.11.2014, 00:53
|
|
|
|
terrarus |
Дата: Сб, 22.11.2014, 10:17 | Сообщение # 11 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Pic16F84A можно достаточно быстро заменить на Pic16F83A или Pic16F86A. Естественно придется написать новую программу на ассемблере или Протоне. Если же оставить Pic16F84A то нужно освободить у него выводы RB4-RB7 и использовать прерывания по изменению сигналов на этих входах. Любая доработка неизбежно приведет к тому, что придется писать свою программу либо на асм либо на другом языке более высокого уровня, например Протоне или Баскоме.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
|
|
|
|
xvovanx |
Дата: Сб, 22.11.2014, 13:20 | Сообщение # 12 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
328
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Цитата terrarus ( ) я давно уже использую для опроса кнопок или переключателей... аналоговые входы в режиме АЦП А я если честно отказался от этого. Со временем контакты кнопок окисляются (особенно на улице или в неотапливаемом помещении) и возникают ошибочные срабатывания другой кнопки (не той что нажал) из-за паразитного сопротивления окисла . В частности пришлось переписать прогу в автоматике управления распашных ворот . Если не хватает ног, то использую диоды (перевожу с двоичный код)
Сообщение отредактировал
xvovanx - Сб, 22.11.2014, 13:22
|
|
|
|
demanik |
Дата: Чт, 27.11.2014, 11:25 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
448
Замечания:
±
На сайте с 11.12.2007
Статус:
Offline
|
Часть темы о ESR метре перенесена. http://www.picbasic.ru/forum/5-1633-1
Попробуй всё и вся... может быть пол...
|
|
|
|