Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как устранить дребезг на вход INT0

Непрочитано 06.10.2011, 15:41  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

Опять про тоже самое и в который раз.. людям что ли искать лень )))) всё давно придумано и написано.. и на форумах выложено ))

Всегда делаю опрос кнопок, как впрочем и другие обслужавающие функции в прерывании таймера... Уже лет 12 успешно применяется этот алгоритм. Сначала на АСМ теперь на СИ.

Код:
//------------------------
if (exspreskey==1){return;}	//клавиши не обработаны
if (statkey==0){			//
	goto	loadnackey;}
else
	if (statkey!=prevkey){	//считаное состояние‹›предыдущему?
		prevkey=statkey;//считаное состояние=предыдущему
loadnackey:	cunkey=timnacpreskey;//счётчик совпадений=начальному срабатыванию
		return;}		//выход
	else
		if (--cunkey==0){//счётчика совпадений-1,счётчика совпадений=0?
			exspreskey=1;//флаг срабатывания клавиш
			cunkey=timpreskey;}//счётчика совпадений=повторному срабатыванию
	return;}			//выход
Реклама:
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 06.10.2011 в 15:43.
picavr вне форума  
Непрочитано 10.10.2011, 00:43  
Zoosman
Вид на жительство
 
Регистрация: 03.06.2006
Адрес: Израиль
Сообщений: 388
Сказал спасибо: 2,062
Сказали Спасибо 337 раз(а) в 156 сообщении(ях)
Zoosman на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

Сообщение от Easyrider83 Посмотреть сообщение
Zoosman, где и что вы собрались зацикливать?
Может я чего-то недопонимаю но для меня эта конструкция "тупо"
ждёт пока я отпущу кнопку и предотвращает "дребезг"
Zoosman вне форума  
Непрочитано 10.10.2011, 09:27  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

Сообщение от Zoosman Посмотреть сообщение
Может я чего-то недопонимаю но для меня эта конструкция "тупо"
ждёт пока я отпущу кнопку и предотвращает "дребезг"
Я поэтому и спросил. Как она предотвращает дребезг - не понятно. Зато четко видно, что будет за петрушка, когда такая конструкция будет работать по прерыванию.
Easyrider83 вне форума  
Непрочитано 10.10.2011, 10:11  
koms45
Прописка
 
Регистрация: 31.12.2008
Сообщений: 104
Сказал спасибо: 5
Сказали Спасибо 48 раз(а) в 23 сообщении(ях)
koms45 на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

Я эту проблему так решил. Надо было по инт0 (кнопке) два бита поменять. При повторном нажатии вернуть обратно как было. Дребезг ДОСТАЛ. Начал с кондеров на кнопке. Помогло как-то не очень. Потом в обработке прерывания сделал следующее:
Жду 30 миллисек, потом проверяю состояние пина (инт0) на предмет не отпущена ли кнопка. Если оказалось что отпущена (дребезг) сваливаю из инта ничего не делая. В противном случае делаю свои дела и ретурнюсь. Кондер на кнопке 1-2 мф оставил на всякий случай. Кругом локаторы сёрут.
Проц ат89S8252. Кнопка древняя (КМ-3 кажись)

Последний раз редактировалось koms45; 10.10.2011 в 10:27.
koms45 вне форума  
Непрочитано 20.12.2016, 13:01  
alecksis
Прохожий
 
Регистрация: 07.04.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
alecksis на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

А я понижаю напряжение подтяжки до 3.3.в и вместе использую rc фильтр для устранения дребезга. все вместе работает один раз одно нажатие.
alecksis вне форума  
Непрочитано 20.12.2016, 13:24  
CAIG
Частый гость
 
Регистрация: 20.05.2015
Сообщений: 45
Сказал спасибо: 41
Сказали Спасибо 26 раз(а) в 14 сообщении(ях)
CAIG на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

интересно, а как ТС планирует бороться со статикой? Я пробовал делать разные варианты опроса кнопок. И с прерыванием, и по таймеру. Больше всего мне понравился вариант с таймером. Алгоритм следующий- прерывание таймера срабатывает каждые 10 мс. Если пин, на котором висит кнопка, изменил своё состояние, запускаю счётчик. Если счётчик досчитал до какого-то значения (например в моём случае до 5), то устанавливаю флаг смены состояния кнопки и запоминаю это состояние, чтобы в теле программы отработать факт нажатия/отпускания.
По поводу статики я спросил не просто так, т.к. в определённых условиях возникают импульсы, которые приводят к ложным срабатываниям пиновых прерываний.
CAIG вне форума  
Сказали "Спасибо" CAIG
nml (29.01.2018)
Непрочитано 20.12.2016, 23:07  
alecksis
Прохожий
 
Регистрация: 07.04.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
alecksis на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

ну, а если использовать режим idle для МК. то как опрашивать кнопки?
alecksis вне форума  
Непрочитано 21.12.2016, 03:32  
CAIG
Частый гость
 
Регистрация: 20.05.2015
Сообщений: 45
Сказал спасибо: 41
Сказали Спасибо 26 раз(а) в 14 сообщении(ях)
CAIG на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

в этом случае INT использовать для пробуждения МК, а обратно в идл вгонять после отработки алгоритма антидребезга
CAIG вне форума  
Непрочитано 22.12.2016, 13:57  
alecksis
Прохожий
 
Регистрация: 07.04.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
alecksis на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

но тогда при нажатии будет несколько раз срабатывать int. вот моя схема.
Миниатюры:
Нажмите на изображение для увеличения
Название: 2016-12-22 12.59.07.jpg
Просмотров: 0
Размер:	1.38 Мб
ID:	108129  
alecksis вне форума  
Непрочитано 23.12.2016, 11:32  
CAIG
Частый гость
 
Регистрация: 20.05.2015
Сообщений: 45
Сказал спасибо: 41
Сказали Спасибо 26 раз(а) в 14 сообщении(ях)
CAIG на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

что мешает на время отработки антидребезга отключить обработку INT? Если религия не позволяет на время отключить прерывание, то можно установить флаг в переменной и пропускать обработку этого прерывания, пока не выяснится- это срабатывание кнопки, помеха, или дребезг. После выяснения причины срабатывания-сбросить флаг или включить прерывание.
CAIG вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эрудиция и смекалка slavar1 Отвлекитесь, эмбеддеры! 13012 05.10.2025 09:34
[Решено] Так, рассказик :)) Я долго ржал :)) DK Отвлекитесь, эмбеддеры! 7 31.08.2007 22:33
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49
[Решено] Всем эмбеддерам посвящается... Decan Отвлекитесь, эмбеддеры! 0 24.10.2005 14:43


Часовой пояс GMT +4, время: 03:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.