реклама на сайте
подробности

 
 
> Подавление дребезга контактов, Алгоритм подавления,реализация
Axxel
сообщение Mar 28 2007, 08:12
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 140
Регистрация: 31-01-07
Из: Челябинск
Пользователь №: 24 896



Привет всем!

Написал небольшой кусочек кода для
подавления дребезга контактов, IMHO данный
код должен "фильтровать" ложные срабатывания
менее заданного периода.
Но почему-то не покидает ощущение того, что
в коде могут оказаться грабли smile.gif

Какие еще есть правильные методы,
либо можно это сделать проще или красивее?

Пример для одного бита порта ввода:

#define BOUNCE_CANCELLATION_PERIOD 20


unsigned char BITcounter=0; //счетчик состояний бита
bit BITstate=0; //используемое (устойчивое) состояние бита (более 20 мсек)
bit BITmemory=0; // промежуточная переменная, запоминающаяя предыдущее состояние бита
bit toggled=0; //флаг,указывающий на изменение состояния бита

interrupt Timer0() //возникает 1 раз в мсек
{
if(BITmemory^BITn){if(toggled){BITcounter=0;} toggled=1;}
if(toggled ){BITcounter++;}
if(BITcounter==BOUNCE_CANCELLATION_PERIOD){BITstate=BITn;BITcounter=0;toggled=0;
}
BITmemory=BITn; //чтение с порта
}



Вот, примерно так...

Сообщение отредактировал Axxel - Mar 28 2007, 08:34


--------------------
Если боишься - не говори. если сказал - не бойся. ©
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Axxel   Подавление дребезга контактов   Mar 28 2007, 08:12
- - Oleg_IT   Давно и хорошо работающий код. Обслуживает несколь...   Mar 28 2007, 08:50
|- - Kitsok   Цитата(Oleg_IT @ Mar 28 2007, 12:50) Давн...   May 15 2007, 03:32
- - NVade   а я просто опрашиваю клавиатуру с интервалом больш...   Mar 28 2007, 09:54
- - IEC   Контролировать один раз нажатие клавиши (совет NVa...   Mar 28 2007, 10:08
|- - Axxel   По хорошему необходимо контролировать время первог...   Mar 28 2007, 10:36
|- - SergCom07   Думаю лучший вариант реализуется при помощи прерыв...   Mar 28 2007, 12:07
- - Visor   На самом деле достаточно ловить первый фронт измен...   Mar 28 2007, 19:56
- - DeXteR   Цитата(Visor @ Mar 28 2007, 20:56) На сам...   Mar 29 2007, 19:19
|- - Visor   Цитата(DeXteR @ Mar 30 2007, 00:19) Если ...   Mar 31 2007, 19:06
|- - Axxel   А если произойдет такое?   Apr 2 2007, 05:12
|- - Visor   Цитата(Axxel @ Apr 2 2007, 10:12) А если ...   Apr 2 2007, 06:09
|- - Axxel   Цитата(Visor @ Apr 2 2007, 09:09) Объясни...   Apr 2 2007, 07:28
|- - rezident   Цитата(Axxel @ Apr 2 2007, 10:28) И еще в...   Apr 2 2007, 07:50
|- - Visor   Цитата(Axxel @ Apr 2 2007, 12:28) Помехи ...   Apr 2 2007, 07:55
||- - Axxel   Цитата(Visor @ Apr 2 2007, 10:55) Сигналы...   Apr 2 2007, 08:00
|- - Visor   Цитата(Axxel @ Apr 2 2007, 12:28) И еще в...   Apr 2 2007, 08:07
|- - Axxel   Универсальность - враг оптимальности. [/quote] Т...   Apr 2 2007, 10:56
|- - Dog Pawlowa   Цитата(Axxel @ Apr 2 2007, 10:56) ...Так ...   Apr 2 2007, 12:12
|- - Visor   Цитата(Axxel @ Apr 2 2007, 15:56) Так как...   Apr 2 2007, 15:29
- - rezident   На всех форумах одни и те же вопросы задаются htt...   Mar 29 2007, 19:32
- - Axxel   У меня примерно так:   Mar 30 2007, 04:58
- - =AK=   Я проще делаю. В 8-битный сдвиговый регистр каждые...   Apr 2 2007, 06:25
- - Axxel   Да,действительно не такая уж и тривиальная это зад...   Apr 2 2007, 12:20
- - vaivai   На Kazus.ru было несколько примеров на асемблере (...   Apr 2 2007, 21:13
- - birden   Я очень часто использую следующий принцип: Кодunsi...   Apr 3 2007, 05:41
- - Axxel   Остановился пока на таком методе: unsigned char a...   Apr 3 2007, 08:57
- - slog   Ну вы и нагородили, на пустом месте. Достаточно 20...   Apr 3 2007, 09:20
|- - Axxel   Цитата(slog @ Apr 3 2007, 12:20) Достаточ...   Apr 3 2007, 10:34
|- - =AK=   Цитата(Axxel @ Apr 3 2007, 17:04) To =AK=...   Apr 3 2007, 10:40
||- - Axxel   Цитата(=AK= @ Apr 3 2007, 13:40) Ну так в...   Apr 3 2007, 10:43
|- - Visor   Цитата(Axxel @ Apr 3 2007, 15:34) Дело в ...   Apr 3 2007, 12:52
|- - Axxel   К сожалению АСМом не владею... Как это будет выг...   Apr 3 2007, 13:24
|- - Visor   Цитата(Axxel @ Apr 3 2007, 18:24) Суть сл...   Apr 3 2007, 14:21
|- - Mario   Цитата(Visor @ Apr 3 2007, 14:21) Берётся...   Apr 7 2007, 22:24
- - slog   Если опрашивать реже, чем время дребезга, никакие ...   Apr 3 2007, 20:21
- - Axxel   Мне кажется что задержки типа delayms() в алгоритм...   Apr 9 2007, 05:00
|- - Mario   Цитата(Axxel @ Apr 9 2007, 08:00) Мне каж...   May 15 2007, 10:15
- - Kitsok   Нашел. Технология называется vertical counters. Во...   May 15 2007, 09:24
- - Oleg_IT   Цитата(Kitsok @ May 15 2007, 13:24) Нашел...   May 15 2007, 09:58
- - Kitsok   Цитата(Oleg_IT @ May 15 2007, 13:58) См. ...   May 15 2007, 12:47


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th July 2025 - 23:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.09225 секунд с 7
ELECTRONIX ©2004-2016