Защита От Дребезга

Posted on  by  admin
  1. Программная Защита От Дребезга Контактов
  2. Защита От Дребезга Ардуино
  3. Защита От Дребезга Кнопки

Если программировать микроконтроллер клавиатуры, то, наверное, такой способ не годится, но у меня частный случай, происходят некоторые процессы (чтение данных из UART, запись из на SD-карту) и мне надо иметь возможность передать пару-тройку команд (закрыть файл, остановить запись, выждать паузу для замены карты в разъеме), то хотелось бы одну кнопку поставить и ей одной как-то правильно кликать. Не уверен, но думаю, что, в принципе, для примера с SD-картой, можно выдернуть из UART-а девайс, скриптом отловить это событие и если Serial.read -1, то закрыть файл (сбросить буферы) и проделать нужные действия, то есть, обойтись без кнопки вообще.

Но мне интересна идея одной кнопки. И еще беспокоит, не повлияет ли такая обработка кликов на процесс синхронизации данных при записи их на SD-карту из loop? Я еще ничего не кодил и не тестил, плата придет через неделю-две, хотелось бы заранее изучить информацию. Но тут получается:, другой его поправляет и сообщает, что встроенные на то и нужны, а третий предоставляет код, который не читается и вообще писать такое стыдно жаде на первом курсе института: bool b=0; bool s=0; unsigned long d=0. Nkk пишет: Я еще ничего не кодил и не тестил, плата придет через неделю-две, хотелось бы заранее изучить информацию.

Служит для защиты от ложных импульсов при переключении контактов. Для подавления дребезга от кнопки с одной группой контактов могут применяться схемы, приведенные на рис. Число срабатываний и их продолжительность зависит. Возникшего в связи с дребезгом.

Но тут получается:, другой его поправляет и сообщает, что встроенные на то и нужны, а третий предоставляет код, который не читается и вообще писать такое стыдно жаде на первом курсе института: bool b=0; bool s=0; unsigned long d=0; О кнопках на форуме написаны 'вагон и маленькая тележка'. Если аппаратная часть больше интересует, можете прочесть 'Сагу о кнопках', если программная - 'Титановый велосипед.' Да и в других темах эти вопросы часто поднимались, включая варианты с использованием прерываний и таймеров. За неделю-две вполне можно освоить.

При этом нужно учитывать, что форум не учебник. Каждый может высказываться в силу своих как убеждений, так и заблуждений. Нужно осмысленно подходить, фильтровать.

Защита От Дребезга

Button: Waitms Debouncetime ' антидребезг Toggle Led While Pind.2 = 0 ' если кнопка удерживается Waitms Debouncetime Wend ' крутимся здесь Eifr = 64 ' сбрасываем флаг Return Автор: Rimsky Ср фев 16, 2011 17:52:00 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) Я бы сделал так: 1. Инициализировал прерывания по спаду фронта INT0 2.

В обработчике инициализировал таймер защиты от дребезга и запретил прерывание от INT0 3. Далее в цикле после sleep отсчитал временной интервал (обычно около 200 мСек)и пощупал пин на нажатие. Если кнопка нажата, то запускаемся, если нет возращаемся к процедуре инициализации и засыпаем. Автор: Amator Ср фев 16, 2011 18:01:07 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания). Сам изощрялся с енкодером, чего только не выписывал - пока не повесил конденсаторы на контакты по 0.1, нормально не заработало.

Аналогично ковырялся с енкодером, тоже в итоге поставил емкость Найти место под маленький конденсатор гораздо проще чем изобретать программный антидребезг. Автор: ellioh Ср фев 16, 2011 19:12:20 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) - Автор: ChipKiller Ср фев 16, 2011 20:24:39 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания). Спасибо, коллеги, я как раз хотел убедиться, что не усложняю проблему.

Думаю прерывание по INT0 не нужно, как и всякие конденсаторы на контактах. В конструкциях типа АОН и Spectrum и т.д. Опрос по таймеру прекрасно со всем справлялся. Причем несложно учесть одновременное нажатие нескольких клавиш, ввести функцию 'автоповтор' при удержании и многое другое. Все что нужно - завести несколько переменных и правильно обрабатывать их состояние. Автор: ellioh Ср фев 16, 2011 20:38:46 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) - Автор: ARV Ср фев 16, 2011 21:30:09 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) ощущение такое, что никто не в курсе, как борятся с дребезгом по-настоящему.

Традиционная борьба с дребезгом, причем ВЕСЬМА эффективная, заключается в проверке через 10-15 миллисекунд уроня на кнопке и сравнения его с тем, кторый породил само событие. То есть, если у вас прерывание настроено на срабатывание по спаду (хотя, если мне память не изменяет, для просыпа лучше использовать срабатывание по низкому уровню), то в обработчике прерывания этого вам надо подождать 10-15 миллисекунд и проверить уровень на пине - если он НИЗКИЙ, то делать свои черные дела, если ВЫСОКИЙ - спать дальше. Да, перед тем, как выйти из прерывания, надо сбросить флаг запроса прерывания, так как из-за дребезга он мог установиться повторно. И всех делов.

Защита от дребезга кнопки

И никаких кондеров! Автор: Murav Ср фев 16, 2011 23:35:06 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания). И всех делов. И никаких кондеров! Кондеры место в прошивке не расходуют, так что в некоторых случаях лучше использовать их. Автор: ARV Чт фев 17, 2011 00:05:54 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) если прерывание используется только для пробуждения - почему бы в нем не сделать огромную задержку?

Программная Защита От Дребезга Контактов

Проснется девайс на 15 мс позже или раньше - это роли не сыграет. Если я не ошибаюсь, в среднем дребезг маломощных контактов длится около 10 мс, так что 100 - это явно с большим запасом.

Защита От Дребезга Ардуино

Автор: ellioh Чт фев 17, 2011 01:51:43 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) - Автор: ARV Чт фев 17, 2011 02:07:25 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) уважаемый, я думаю, что ваши опасения на счет задержек в прерывании и нарушения стиля 'по событиям' НАПРАСНЫ. С точки зрения основной программы, которая СПИТ, задержка при пробуждении не играет никакой роли совершенно! Из режима 'глубокого сна', т.е. При максимальной экономии энергии, МК не в состоянии проснуться даже за 15 мс, поэтому реальное время выхода из прерывания СОВЕРШЕННО БЕЗРАЗЛИЧНО. Мне так кажется.

А в вашем подходе есть существенный изъян: вы регистрируете КУЧУ прерываний и анализируете их. А мой вариант - ТОЛЬКО ОДНО ПРЕРЫВАНИЕ и анализ уровня. Это намного проще, и, пожалуй, правильнее.

Автор: Rimsky Чт фев 17, 2011 05:34:29 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) В принципе можно использовать пустое прерывание по int (без обработчика) чтобы проснуться, а кнопку опрашивать по таймеру. Автор: ellioh Чт фев 17, 2011 12:08:56 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) - Автор: ARV Чт фев 17, 2011 12:35:25 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) я ж говорил, что имею ввиду режим максимальной экономии, т.е.

Защита От Дребезга Кнопки

Защита От Дребезга

А из Standby пробуждается быстрее, факт. В общем, мое дело - уведомить о способе, а будете вы им пользоваться или нет - дело ваше. Автор: ellioh Чт фев 17, 2011 12:42:43 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) - Автор: lsdy Пт фев 18, 2011 15:23:50 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания) Обратите внимание еще на один аппаратный подход Вложения: 110.72 KiB Скачиваний: 1139 Автор: ARV Пт фев 18, 2011 15:45:36 Заголовок сообщения: Re: ATMega32: защита от дребезга контактов (прерывания).

Coments are closed
© 2019 - downliveru
Scroll to top