Например TDA7294

Форум РадиоКот • Просмотр темы - ATMega32: защита от дребезга контактов (прерывания)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб сен 06, 2025 03:23:52

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 29 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 15:43:00 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ARV, ну согласитесь, что поставить кондёр иной раз проще, чем городить трёхэтажный код, особенно когда нет возможности поставить тупые задержки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 17:24:43 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18408
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ploop писал(а):
ARV, ну согласитесь, что поставить кондёр иной раз проще, чем городить трёхэтажный код, особенно когда нет возможности поставить тупые задержки.
не соглашусь. по мне так запаять что-то намного сложнее, чем натыкать кнопками на клаве :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 17:29:13 
Разрешите поделится своим программным методом защиты от дребезга. Для этого в памяти на каждую кнопку используется по одному байту - "сдвиговый регистр антидребезга". При срабатывании прерывания по таймеру я считываю состояние кнопок и каждую кнопку завожу в свой сдвиговый регистр. Когда значение этого регистра = 0x00, то считается что кнопка отжата, если = 0xFF - нажата, другие значения не влияют на регистрацию факта изменения состояния. Только определиться с периодом опроса кнопок.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 18:44:35 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я заводил счетчик. Если N опросов кнопка нажата - устанавливался флаг, по состоянию флагов уже делаем логику программы.

Плюс в том, что можно опрашивать кнопки когда надо, можно в прерываниях, можно в основном цикле, а анализ флага уже можно делать в критичных по времени циклах, чётко представляя, сколько тактов (единицы, или вообще один) займёт проверка.

Работает алгоритм чётко. Но.... кондёр проще :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 18:53:27 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 2
Зарегистрирован: Вт июн 15, 2010 07:16:42
Сообщений: 299
Откуда: Иркутск
Рейтинг сообщения: 0
orinoko писал(а):
Разрешите поделится своим программным методом защиты от дребезга. Для этого в памяти на каждую кнопку используется по одному байту - "сдвиговый регистр антидребезга". При срабатывании прерывания по таймеру я считываю состояние кнопок и каждую кнопку завожу в свой сдвиговый регистр. Когда значение этого регистра = 0x00, то считается что кнопка отжата, если = 0xFF - нажата, другие значения не влияют на регистрацию факта изменения состояния. Только определиться с периодом опроса кнопок.

Отличный метод - поддерживаю! :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 19:41:13 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18408
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
и чего только не придумают, лишь бы по-своему, оригинально :) я вообще за последние пару лет ни разу не использовал прерывания для кнопок, все время работаю по опросу, дребезг давлю. как сказал, и совершенно не жужжу... и автоповтор при длителном нажатии сделал, и работу с одновременно нажатой группой кнопок... и ваши проблемы мне просто удивительны...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 20:00:10 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
ARV писал(а):
вам надо подождать 10-15 миллисекунд и проверить уровень на пине - если он НИЗКИЙ, то делать свои черные дела, если ВЫСОКИЙ - спать дальше.

и всех делов. и никаких кондеров!

В опросах кнопок я тоже так делаю. Сначала жду, за тем снова проверяю, если есть разница, то исключаю обработку кнопки. :) И никаких кондёров. :)

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 20:11:03 
Открыл глаза

Зарегистрирован: Вс дек 06, 2009 19:18:11
Сообщений: 65
Откуда: Ukrain, Sumy
Рейтинг сообщения: 0
DX168B писал(а):
В опросах кнопок я тоже так делаю. Сначала жду, за тем снова проверяю, если есть разница, то исключаю обработку кнопки. :) И никаких кондёров. :)


В самом начале было ..."(большую часть времени МК спит)"
Если мы не используем прерывание, то большую часть контроллер опрашивает клавиатуру.

Я не зная почему в задаче надо, чтобы МК большую часть спал. Но вопрос был задан именно так. А кто как обрабатывает нажатие клавиш, это уже вопрос третий. Мне например пару раз тыкнуть паяльником не трудно :)) .

Понесло нас не на шутку :)) . Сейчас каждый с пеной у рта будет доказывать , что его метод лучше. А на самом деле почти все варианты были названы и что выбрать каждый решает сам.

_________________
Если на клетке со слоном увидишь надпись "Буйвол" - не верь глазам своим.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания)
СообщениеДобавлено: Пт фев 18, 2011 23:25:13 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Сб июл 11, 2009 18:42:21
Сообщений: 1135
Откуда: Украина, г.Николаев
Рейтинг сообщения: 0
В целом моё скромное мнение совпадает с мнением ARV. Однако я делаю ещё проверку на отпускание кнопки. Тогда дребезг исключается без всяких задержек. Проверено на 100% при использовании микрокнопок.

_________________
Успех - императив!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 29 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y