Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Сообщение dgrett »

Удалил
Я всё-всё узнAю и стану профессором.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15789
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Все определяется схемотехникой конкретного устройства и системой команд/особенностями ядра конкретного семейства МК.
В том числе и для кнопок.
Так что решений может быть весьма много (в том числе и аппаратного предподавления дребезга механических контактов).
8)
:beer:
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

вот схема ничего не убивает и работает как часы устраняя дребезг… верхний по схеме резистор можно задействовать в самом МК… нижний рассчитывается в зависимости от ёмкости…
Боюсь разочаровать, но схема ваша не устраняет дребезг полностью, а лишь уменьшет его вероятность. Периодически, кнопку будет таки глючить несмотря на все предпринятые решения.
Чем больше величина нижнего резистора, тем хуже схема давит дребезг. А он не может быть маленьким - ибо ток через кнопку надо ограничить.

Зачем такие пляски с дополнительными деталями на каждую кнопку, если отлично справляется простой до гениальности программный способ подавления дребезга. Представьте, куда эти резисторы и конденсаторы ставить в матричную клавиатуру?
Контактная информация:
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

[uquote="Alexeyslav",url="/forum/viewtopic.php?p=3288551#p3288551"]Периодически, кнопку будет таки глючить несмотря на все предпринятые решения.[/uquote]
Теоретические предположения – это хорошо. Только вот теория должна подтверждаться практическими фактами на железе. Если таковые факты есть (+ осциллограммы и т.п.) – с удовольствием взгляну. Если таковых нет, буду тогда тебя считать лишь теоретиком не более того.
Alexeyslav писал(а):Представьте, куда эти резисторы и конденсаторы ставить в матричную клавиатуру?
Опять ты «о своём, о девичьем» (С)
А если клавиатура на герконах!? Как в былые времена… :)
Alexeyslav писал(а):Зачем такие пляски с дополнительными деталями на каждую кнопку, если отлично справляется простой до гениальности программный способ подавления дребезга.
Бывают (у меня довольно часто) ситуации, когда свободной памяти для написания кода для подавления дребезга просто нет… часто это относится к девайсам на тини13… брать из-за этого более ёмкий МК или поставить дополнительные RC цепочки – я в большинстве случаях выбираю второе, так как это дешевле на порядок, да и кнопка может быть удалена от девайса на значительном расстоянии (несколько метров). Ты же в свою очередь поступай как считаешь нужным – я свой опыт тебе не навязываю. :wink:
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

Сообщение trofim2 »

А что, у герконов нет дребезга?
Реклама
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

О чём думаем когда читаем пост!?
Реклама
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

Сообщение trofim2 »

Думаем о подавлении дребезга и тех несчастных, которые во вновь разрабатываемых устройствах использует больше половины памяти. Как в дальнейшем можно модифицировать данное устройство, если не делать халтуру?
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Только вот теория должна подтверждаться практическими фактами на железе.
Она и подтверждается. В чем я давно убедился и мне никакие подтверждения уже не нужны.

Кажется мне, если у вас не хватает памяти даже под отрабтку дребезга, костылей в ваших проектах сверх меры. И даром что они называются особенностями архитектурного решения... это больше к художникам-практикам, хромающим на теорию.
у герконов нет дребезга?
У герконов дребезг есть, но ситуация на порядки лучше чем у обычных кнопок. Если кнопкам нужен защитный интервал в 10-20мс, то для герконов достаточно 1мс.
Контактная информация:
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

[uquote="Alexeyslav",url="/forum/viewtopic.php?p=3288779#p3288779"]
Только вот теория должна подтверждаться практическими фактами на железе.
Она и подтверждается. В чем я давно убедился и мне никакие подтверждения уже не нужны.[/uquote]
То есть предъявленных фактов не будет? Вопрос риторический… оно впрочем было сразу понятно.
Alexeyslav писал(а):Кажется мне, если у вас не хватает памяти даже под отрабтку дребезга, костылей в ваших проектах сверх меры.
:))
«Когда кажется, тогда крестятся». (С)

Предполагать ты можешь что угодно – это не возбраняется! :tea:
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

Сообщение trofim2 »

Апломба то сколько!
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Практика - мерило истины. Это я к тому, что спорить бесполезно. Если кто-то желает наступать в будущем на грабли, это его дело. И не надо ему в этом мешать. Самое страшное наказание - оставить наказуемого в покое. Он сам въедет в пень.
Так что заканчивайте бесполезный спор.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

У меня при разработке нескольких проектов в плане обработки нажатий кнопок сложился свой подход, смею надеяться, не самый худший. Собственно, давно хотелось поделиться им с другими, но всё как-то руки не доходили. А тут такое живое обсуждение проблемы антидребезга таки сподвигло на запись видеоролика на тему.

Конечно, учитывая, что ветка форума посвящена ассемблеру, а я на C код писал, видео не совсем в тему будет. Плюс видеоролик не только про антидребезг (это где-то с середины), но и вообще о том, как попытаться избавиться от использования задержек в коде.

Но саму идею можно перенести и на другой язык без проблем. Так что ссылочку я тут всё-таки оставлю :) https://www.youtube.com/watch?v=c7rE9JCF6Wg
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

время в ролике 28:00 но на самом деле ролик просто ужасен, смысл происходящего просто ускользает куда-то. Его можно понять разве что изначально уже в теме.
Показывать код... в онлайн-трансляции... нет, увольте. Код лучше изучать в виде текста, а если пояснять какие-то алгоритмы в онлайне - то лучше использовать графики, блок-схемы и т.д. А код приложить рядом, чтобы можно было его изучать.
Не выдержал до конца ролика, так и не понял какую идею пытались донести.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Да, соглашусь, что ясно идею в ролике я не высказал.

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

А уже сами события генерируются в отдельном потоке, в нашем случае - в периодически вызываемом прерывании.

События могут наступать не только от кнопок. В проекте анализатора спектра у меня, например, события генерируются не только механикой - кнопками и энкодером. Есть также код, обрабатывающий сигнал с пульта ДУ, и код, обрабатывающий "текстовые" команды, приходящие по UART. Все эти источники событий работают независимо и не блокируя основной цикл программы, в котором в это время идёт, например FFT-анализ, вывод спектра на экран, и т.д.
Контактная информация:
akl
Друг Кота
Сообщения: 4473
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3287793#p3287793"]... Минут за 30 набросал код (правда на C), который по вышеописанному принципу делает вроде как простую задачку, но с подвохами.

Вкратце - есть две кнопки, есть два светодиода. Кратковременное нажатие каждой кнопки зажигает свой светодиод на определённое время. Кнопки работают абсолютно независимо одна от другой.[/uquote]Как я понял из дизассемблера студии реакция идет на отпускание кнопки(ок). По мне, таким функционалом может обладать только одна кнопка - "RESET". Реакции на кратковременное нажатие кнопки нет.
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

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

В принципе, ничто не мешает генерировать событие не при отпускании, а сразу же по достижении счётчиком заданного значения после нажатия кнопки. Именно так у меня, например, генерируется событие длительного нажатия кнопки в моих проектах.
Контактная информация:
akl
Друг Кота
Сообщения: 4473
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3289467#p3289467"]Да, на отпускание. Потому как при нажатии кнопки в принципе нельзя понять, это нажатие или помеха (дребезг)...[/uquote] Извините, но вы написали чушь.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

WiseLord писал(а):Да, на отпускание. Потому как при нажатии кнопки в принципе нельзя понять, это нажатие или помеха (дребезг).
опередили...
akl писал(а):Извините, но вы написали чушь.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Почему же? Как можно по первому моменту, когда на кнопке лог. 1 сменяется нулём, понять, что это короткое нажатие кнопки, а не помеха/дребезг/или пользователь планирует удерживать кнопку более, например, секунды?
Контактная информация:
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Сообщение dgrett »

"Короткое " - я понимаю, микросекунды... Пальцем..
Я всё-всё узнAю и стану профессором.
Ответить

Вернуться в «AVR»