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

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

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

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

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

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

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

 
Опции темы
Непрочитано 06.10.2011, 15:41  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 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,067
Сказали Спасибо 337 раз(а) в 156 сообщении(ях)
Zoosman на пути к лучшему
По умолчанию Re: Как устранить дребезг на вход INT0

Сообщение от Easyrider83 Посмотреть сообщение
Zoosman, где и что вы собрались зацикливать?
Может я чего-то недопонимаю но для меня эта конструкция "тупо"
ждёт пока я отпущу кнопку и предотвращает "дребезг"
Zoosman вне форума  
Непрочитано 10.10.2011, 09:27  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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 Отвлекитесь, эмбеддеры! 12765 06.04.2024 20:45
[Решено] Так, рассказик :)) Я долго ржал :)) DK Отвлекитесь, эмбеддеры! 7 31.08.2007 22:33
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49
[Решено] Всем эмбеддерам посвящается... Decan Отвлекитесь, эмбеддеры! 0 24.10.2005 14:43


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot