+3 голосов
У меня сложная программа, которая впритык работает на моем микроконтроллере. Ресурсов не хватает, я вынужден бороться почти за каждый такт. У меня много кнопок и аппаратными средствами я хочу уменьшить нагрузку на камень. Посоветуйте пожалуйста какие-нибудь внешние средства для обработки кнопок.
(917 баллов) 5 60 103

2 Ответы

+5 голосов
 
Лучший ответ

Самый простой способ использовать RC-цепочку.

Когда кнопка не нажата, конденсатор заряжается через резисторы R1 и R2. при нажатии на кнопку конденсатор начинает разряжаться и напряжение упадет до нуля. Если есть дребезг, сигнал подпрыгивает вверх и вниз в течении нескольких миллисекунд, но конденсатор подзаряжается через резистор и на выходе поддерживается высокий уровень напряжения.Благодаря этому уровень сигнала меняется с высокого на низкий только один раз в течении интервала времени, определяемого значениями резистора и конденсатора. Резистор R2 предназначен для уменьшения тока разряда и заряда конденсатора для сохранения контактов кнопки.

Более подробно вопрос описан в книге от Джереми Блюма "Изучаем Arduino" - глава 12.3 Разработка и тестирование системы противодребезговой защиты для кнопки

(1.2 тыс. баллов) 3 23 49
выбран
Схема устранения дребезга дороже самой кнопки). К тому же такая схема сокращает срок службы кнопки из-за разряда конденсатора на кнопку.
+7 голосов

Для аппаратного подавления дребезга можно использовать RC-цепочки, но лучше всего применять триггер Шмитта или специализированные микросхемы MC14490

(221 баллов) 4 16
триггер Шмитта не способен устранить дребезг.
Согласен, полностью проблему не решит. Но форму сигнала улучшит что иногда может быть вполне достаточно, особенно совместно с применением RC-цепочек
Триггер Шмитта стоит на входе практически у всех МК. Разве что их у процессоров нет, но это не точно)
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. Un_ka

    98 балл(ов)

  2. parovoZZ

    82 балл(ов)

  3. Евгений Евтишенков

    42 балл(ов)

  4. sser

    20 балл(ов)

  5. Валентин

    5 балл(ов)

  6. vajar

    4 балл(ов)

Награды месяца
1-е место: Espruino Pixl.js
2-е место: Espruino Puck.js
3-е место: Espruino Pico

...