|
TYZYFIR
|
|||||||||||
[VHDL] Антидребезг24.07.2017, 15:01. Показов 7698. Ответов 14
Метки нет (Все метки)
Возникла проблема.Есть устройство,на выходе которого 4 светодиода (tid).Они поочерёдно загораются и тухнут с частотой 1Гц . К устройству подключена кнопка (btn). Когда она нажата, сигнал должен идти на светодиоды (как показано на диаграмме). Так вот, при нажатии возникает дребезг, диоды горят хаотично, при чём даже могут гореть, когда кнопка отпущена. Код вроде простой.но никак не могу правильно этот антидребезг добавить. Заранее благодарен.
ВЕРХНИЙ ФАЙЛ
|
|||||||||||
| 24.07.2017, 15:01 | |
|
Ответы с готовыми решениями:
14
[VHDL] Устройство мигания светодиодов [VHDL] Генератор псевдослучайных чисел [VHDL] ПЛИС длинный сдвиговый регистр с параллельной загрузкой |
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
|
|
| 24.07.2017, 16:25 | |
|
Хватит париться и изобретать лисапед.
Настройте любой таймер (в том числе, программный неблокирующий) и выполняйте опрос кнопки по истечению интервала таймера (программный таймер должен выставить флаг истечения интервала). Среднее время опроса кнопки - 15-40 мс. Среднее время дребезга кнопки - от 5 мс для новых хороших кнопок, до 50 мс для хреновых с нечетким щелчком. Среднее время удержания кнопки в нажатии - 25 - 70 мс, среднее время повторного нажатия кнопки - 150 - 300 мс. В процедуре опроса кнопки, если зафиксировано состояние нажатия кнопки, предварительно смотрите предыдущее состояние (по флагу), и если не было флага, выставляете флаг нажатой кнопки, и выполняете действие (либо выставляете флаг запроса на выполение действия). Проверка флага предыдущего состояния перед выполнением действия необходини для блокировки повторного выполнения действия. Когда в следующий раз зафиксируется отпускание кнопки, флаг сбрасывается. В большинстве случаев такой подход дает хороший результат без лишних заморочек. Есть немного другой алгоритм, для сильношумящих кнопок или при импульсных помехах. При опросе, получив нажатое состояние кнопки, инкрементируете счетчик, начиная от нуля, а получив в следующий раз состояние отпущеной кнопки, декрементируете счетчик от предыдущего значения, но не допуская перехода значения ниже нуля. Как только значение счетчика превысило какое-то определенное вами значение, выставляете флаг фиксации нажатой кнопки и выполняете действие, как в предыдущем случае. В принципе, нечто подобное вы и написали, только перемудрили.
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 25.07.2017, 07:50 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
|
|
| 25.07.2017, 10:08 | |
|
Нет, гораздо проще! Керамический конденсатор на 100nF на контакты кнопки. А то где ж вы столько RS-триггеров наберете, да и тактовых кнопок с перекидными контактами как-то не встречал. Между прочим, кондер настолько хорошо устраняет дребезг и импульсные короткие помехи, что процедура программного подавления упрощается до предела. Установка кондера - хорошая практика!
http://savepic.ru/15008725.png
0
|
|
|
TYZYFIR
|
||
| 25.07.2017, 12:21 | ||
|
||
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 25.07.2017, 14:59 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 25.07.2017, 15:01 | ||
Вообще-то, VHDL - язык описания аппаратуры, а не язык программирования. Или нет?
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
|
|
| 25.07.2017, 17:46 | |
|
Если можно сделать программно, нахрена городить аппаратные плюшки? Этож паять потом надо, искать детальки, место на плате занимает... Как уже сказали, раз в 40мс опрашивать, углядел, что нажата - ждешь, когда отпустят и выполняешь действие (именно при отпускании! - так привычней юзеру) Если надо прям супер надежность, то можно после установления факта нажатия еще разок через 5-10мс заглянуть, если все еще нажата, ну значит это нажатие было, а не наводка. И резисторы подтяжки - внутренние. У меня такая схема и на авто работает, никогда не сбоит.
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 25.07.2017, 17:54 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
|
|
| 25.07.2017, 18:01 | |
|
Я, извините, как бэ, и написал, если можно, потому как в плисах не в зуб ногой, а сморозить чего-нибудь прямо здесь и прямо щас очень хотелось))) А что, даже програмного никакого таймера нет? Как их вообще тогда программировать во времени? На мой вопрос можно не отвечать)))
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 25.07.2017, 18:08 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
|
|
| 25.07.2017, 18:14 | |
|
Ну! Тогда первое, что нужно сделать практически в любой программе - таймер и простейший диспетчер на этом таймере!
0
|
|
|
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
|
||
| 25.07.2017, 18:47 | ||
Verilog: http://www.asic-world.com/exam... unter.html VHDL: http://www.asic-world.com/exam... Up_Counter
0
|
||
|
0 / 0 / 0
Регистрация: 29.05.2015
Сообщений: 108
|
|
| 25.07.2017, 20:07 | |
|
Наверно более правильно, и в целях экономии и вобще, делать клок-домены, для своих нужды, и от них тактироваться, а не городить таймер под каждую кнопку...с этого как бы начинают.
Опишите модуль кнопки (модуль, имею ввиду если надо там сложности - нажата/отжата/длительное/двойное/) Скомпонуйте модули по нужному количеству и проинициализируйте (нужно 3 кнопки на отжатие, 1 на нажатие, 2 на дабл, и 6 на двойное например) Определите отдельный клок-домен для модуля кнопок, и заведите его на все используемые модули. Для самого модуля кнопок, нужно использовать 2 триггера (и не только для этого, триггерная линейка вобще нужна для перехода из неизвестного клока/сигнала в ваш тактовый), тогда наименьшая частота захвата будет равна вашему одному такту, а между тактовыми сигналами, тригеры свое состояние изменять не будут - борьба с дребезгом.
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||||||
| 02.08.2017, 14:26 | ||||||
|
я делал так
0
|
||||||
| 02.08.2017, 14:26 | |
|
Помогаю со студенческими работами здесь
15
VHDL. Антидребезг Выдает ошибку Error: VLM_0040: VHDL unit cannot be compiled as the target library name is not a legal VHDL identifier ATMega8. Антидребезг Антидребезг в прерываниях ATmega8 Изучение VHDL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|