Например TDA7294

 Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс фев 25, 2018 01:24:30



Часовой пояс: UTC + 3 часа [ Летнее время ]


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



Начать новую тему Ответить на тему  [ Сообщений: 6497 ]  На страницу Пред.  1 ... 316, 317, 318, 319, 320, 321, 322 ... 325  След.
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 19, 2018 19:31:04 
Мучитель микросхем

Карма: 4
Зарегистрирован: Ср июн 25, 2008 16:19:44
Сообщений: 463
Рейтинг сообщения: 0
Гефестион писал(а):
Чтобы зря не опрашивать её в цикле, если она нажимается редко. Плюс не будет гемора с многократным опросом кнопки за время её нажатия, поскольку прерывания происходят только по фронтам.

Не вопрос. Исходя из этой позиции, вы сидите ждете какой-то флаг. Работа МК судя по вашему производится зря, вхолостую. Временные задержки на основе счета тактов. Времянки какие угодно. От микросекунд, до секунд. И представляете, МК работает ЗРЯ! Парадокс, не правда ли?!
Я к чему, забудьте об этом суждении. Какую бы вы программу не написали, работа МК - выполнять написанную вами программу. Не хотите ждать зря кнопку? Создайте условие, по которому если кнопки не нажата, идем выполнять другую работу. Так вы освоите псевдопараллельность работы модулей программы.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 19, 2018 19:37:55 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
Так и сделал, вроде работает.

Вот тестовый вариант для проверки кнопок на длительный дребезг (выбраковка кнопок)… на базе тини13, тактируется от заводской установки (1,2 МГц) – фьюзы устанавливать не надо… две кнопки и два светодиода… алгоритм проверяемой кнопки выполнен как описывал выше (от внешнего прерывания)… в теле прерывания организовано так: какой первый лог уровень замечен такой светодиод и загорится… зелёный – лог. 0; красный – лог. 1… сброс свечения светодиодов осуществляется кнопкой сброс.
Схема:
Вложение:
1.png [23.27 KiB]
Скачиваний: 18

Прошивка:
Вложение:
Butt.zip [254 байт]
Скачиваний: 13


Вернуться наверх
 Профиль  
 
JLCPCB Prototype, Бесплатная доставка первого заказа + $2 на прототип ПП!

Крупнейший производитель печатных плат в Китае, 290,000+ заказчиков, 8,000+ он-лайн заказов в день.

Цена за 10 плат: $2 за 2-х слойную, $15 за 4-х слойную, $74 за 6-ти слойную.

LCSC Parts: Экономия до 50%, большой выбор компонентов в наличии, отправка заказа в день оплаты.

Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 19, 2018 20:57:40 
Друг Кота

Карма: 29
Зарегистрирован: Чт май 05, 2011 22:26:34
Сообщений: 4380
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Цитата:
На чём основаны такие умозаключения? Аргументы будут?

Математика, закон Ома... кнопка - сопротивление контакта 0.1Ом, на конденсаторе в момент нажатия 5Вольт... калькулятор сами достанете? А для кнопки заявлен максимальный ток в 50мА. И усреднение тут не катит, ток разряда конденсатора будет таки потихоньку плавить конаткт и оставлять нагар. В итоге кнопка превращается в черт знает что.

Цитата:
Тут тоже желательно аргументированных утверждений, а не бла бла.

Все люди у нас очень терпеливые и обладают железной выдержкой. Попробуйте к примеру поработать с планетом у которого нажатие регистрируется 9 раз из 10. Через 15 минут начинаешь присматриваться к стенке, как бы его так кинуть чтобы обои не поцарапать.


Вернуться наверх
 Профиль WWW  
 

Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 19, 2018 22:14:30 
Это не хвост, это антенна
Аватар пользователя

Карма: 14
Зарегистрирован: Пт ноя 11, 2016 06:48:09
Сообщений: 1394
Откуда: край интернета... самый край :(
Рейтинг сообщения: 0
Alexeyslav писал(а):
планетом
:))) :))) :))) уже присматриваешься?
К кнопке ещё резистор, чтоб ток гасить..., не слишком ли много обвеса получается?
проще регулярно опрашивать, и на основе 2х или 3х подряд одинаковых замеров принимать решение...

_________________
- "Идет, как по маслу" не всегда значит хорошо. Литератор Берлиоз вам бы подтвердил.


Вернуться наверх
 Профиль  
 

Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 19, 2018 22:34:21 
Друг Кота
Аватар пользователя

Карма: 97
Зарегистрирован: Чт янв 10, 2008 23:01:02
Сообщений: 13344
Откуда: M.O.
Рейтинг сообщения: 0
Причем тут резистор? У кнопки по любому должен быть резистор подтяжки. Проблема в конденсаторе, который в момент нажатия находится после резистора.
И опрос не нужно делать подряд. Его нужно делать ПОСТОЯННО с интервалом чуть больше дребезга.. Но если дребезг слишком велик, можно опрашивать чаще, но фильтровать полученный битный массив. Впрочем, это не ускорит срабатывание изношенной кнопки.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 19, 2018 22:40:47 
Друг Кота
Аватар пользователя

Карма: 65
Зарегистрирован: Чт апр 11, 2013 12:19:59
Сообщений: 3058
Откуда: Минск
Рейтинг сообщения: 3
Имхо, все эти игры с попыткой обработать нажатие кнопки через прерывание - это бирюльки. Потому что дребезг нормально таким способом не подавишь. И вешать конденсаторы - это не выход из ситуации.

Гораздо лучше делать периодический опрос состояния кнопок. Но не в главном цикле программы, как любят некоторые, судя по тем примерам кода, что я иногда встречаю. В этом случае, пока нажата кнопка, вся остальная программа, по сути, висит в ожидании.

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

Допустим, таймер настроен на 1кГц. Каждую 1мс срабатывает прерывание, в нём мы просто смотрим на состояние кнопок. Если ничего не нажато - в этой итерации ничего не делаем. Если же по прерыванию мы видим, что одна из нескольких кнопкок нажата - записываем состояние кнопок в некотрой переменной (назовём её btnStatus), а также инкрементируем некоторый счётчик (btnCnt). При следующем прерывании - всё то же самое.

В какой-то момент кнопка будет отпущена. В прерывании мы увидим, что btnStatus изменился. Это повод для того, чтобы 1) обнулить счётчик; 2а) если счётчик насчитал достаточно (скажем, до 100 = 100мс) - мы предыдущий btnStatus сохраняем в новой глобальной переменной (скажем, btnStatusGlobal); 2б) если счётчик не насчитал достаточно - ничего не делаем (считаем это дребезгом контактов).

Ну а основной цикл просто смотрит btnStatusGlobal, и, если в ней что-то есть, выполняет соответствующий обработчик нажатия.

Из опыта - работает такой подход абсолютно надёжно.


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт янв 19, 2018 22:52:51 
Друг Кота

Карма: 29
Зарегистрирован: Чт май 05, 2011 22:26:34
Сообщений: 4380
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Слишком сложно... переменные, счетчики... достаточно считать прерывания и смотреть на младшие 4 бита если они равны нулю - опрашиваем, сохраняем состояние кнопок и сравниваем с предыдущим - если есть несовпадения обновляем маску нажатия/отпускания кнопки, а обнулить маску может только основной цикл.
Как правило счетчик прерываний уже есть, поэтому никакой дополнительной шелухи не надо.


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 00:04:14 
Друг Кота
Аватар пользователя

Карма: 65
Зарегистрирован: Чт апр 11, 2013 12:19:59
Сообщений: 3058
Откуда: Минск
Рейтинг сообщения: 0
Ничего сложного. Минут за 30 набросал код (правда на C), который по вышеописанному принципу делает вроде как простую задачку, но с подвохами.

Вкратце - есть две кнопки, есть два светодиода. Кратковременное нажатие каждой кнопки зажигает свой светодиод на определённое время. Кнопки работают абсолютно независимо одна от другой.

Задействован лишь один - самый простой в atmega8 - таймер. Как для опроса кнопок, так и для таймаутов свечения. Ни одной функции задержки в коде нет, основной цикл программы не блокируется нигде, поэтому никакие полезные вычисления, которые могли бы где-то выполняться, выполнялись бы себе.

Добавить аналогично ещё кнопок / светодиодов - никакой проблемы.

Размер программы меньше 400 байт (на ассемблере, вероятно, и меньше был бы), исходник, hex и проект в Proteus там же.


Вложения:
avrInput.7z [13.37 KiB]
Скачиваний: 12
Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 00:15:01 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
Математика, закон Ома... кнопка - сопротивление контакта 0.1Ом, на конденсаторе в момент нажатия 5Вольт... калькулятор сами достанете?

То есть твоя схема с конденсатором убивает кнопку!? А я тут причём… не нужно свои домыслы перекладывать на других… вот схема ничего не убивает и работает как часы устраняя дребезг… верхний по схеме резистор можно задействовать в самом МК… нижний рассчитывается в зависимости от ёмкости…
Вложение:
1.png [6.66 KiB]
Скачиваний: 23

Alexeyslav писал(а):
Попробуйте к примеру поработать с планетом у которого нажатие регистрируется 9 раз из 10. Через 15 минут начинаешь присматриваться к стенке, как бы его так кинуть чтобы обои не поцарапать.

И тут придумал что-то своё и пытаешься это навесить на меня… :facepalm: ладно всё понятно.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 07:58:39 
Это не хвост, это антенна
Аватар пользователя

Карма: 14
Зарегистрирован: Пт ноя 11, 2016 06:48:09
Сообщений: 1394
Откуда: край интернета... самый край :(
Рейтинг сообщения: 0
получается: либо антидребезг занимает место в коде по методу, например, WiseLordа, либо на плате, по схеме АСУ, а тут уж самому решать - какое место нужнее...

_________________
- "Идет, как по маслу" не всегда значит хорошо. Литератор Берлиоз вам бы подтвердил.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 08:02:42 
Мучитель микросхем

Карма: 4
Зарегистрирован: Ср июн 25, 2008 16:19:44
Сообщений: 463
Рейтинг сообщения: 0
Ну трындец...
В основном цикле.





Сделано по принципу, описанному в статье. Прикреплено.


Вложения:
08.rar [107.57 KiB]
Скачиваний: 12
Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 10:14:25 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
получается:

Я борюсь с дребезгов в 90% случаях программными методами, но бывает когда по разным причинам приходится прибегать к старому методу RC цепочки которой пользовался в былые времена для рассыпухи.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 10:24:30 
Друг Кота

Карма: 48
Зарегистрирован: Пт мар 07, 2008 07:54:43
Сообщений: 3183
Откуда: Ижевск
Рейтинг сообщения: 2
Возник очередной вопрос. Подключил кнопку на PB7, разрешил прерывания PCIE и PCINT7. Т.е. любое изменение логического состояния на этой ноге будет вызывать прерывание... Как сделать так, чтобы кнопка срабатывала только один раз?
Как вариант использования PCINT для опроса кнопки с антидребезгом. Идея в накоплении состояния нажатой кнопки счетчиком за 128 тактов опроса. Если есть дребезг счетчик сбрасывается и счет начинается снова. Индикатором служит реверсирование состояния лапы PD0 при нажатии кнопки. Посмотрел на макете, правда кнопка у меня заведена на PB4 с резистором подтяжки 1,1к. Каждый раз при нажатии кнопки происходит смена состояния лапы PD0. При отпускании кнопки смены состояния нет.
Вложение:
TEST_KEY_PCINT.zip [1.03 KiB]
Скачиваний: 11


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 12:24:34 
Встал на лапы

Зарегистрирован: Вс дек 28, 2014 22:54:05
Сообщений: 129
Рейтинг сообщения: 0
Удалил

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб янв 20, 2018 16:31:53 
Друг Кота
Аватар пользователя

Карма: 73
Зарегистрирован: Вт мар 16, 2010 23:02:27
Сообщений: 7156
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0
Все определяется схемотехникой конкретного устройства и системой команд/особенностями ядра конкретного семейства МК.
В том числе и для кнопок.
Так что решений может быть весьма много (в том числе и аппаратного предподавления дребезга механических контактов).
8)
:beer:


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс янв 21, 2018 00:20:37 
Друг Кота

Карма: 29
Зарегистрирован: Чт май 05, 2011 22:26:34
Сообщений: 4380
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Цитата:
вот схема ничего не убивает и работает как часы устраняя дребезг… верхний по схеме резистор можно задействовать в самом МК… нижний рассчитывается в зависимости от ёмкости…


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

Зачем такие пляски с дополнительными деталями на каждую кнопку, если отлично справляется простой до гениальности программный способ подавления дребезга. Представьте, куда эти резисторы и конденсаторы ставить в матричную клавиатуру?


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс янв 21, 2018 11:17:59 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
Периодически, кнопку будет таки глючить несмотря на все предпринятые решения.

Теоретические предположения – это хорошо. Только вот теория должна подтверждаться практическими фактами на железе. Если таковые факты есть (+ осциллограммы и т.п.) – с удовольствием взгляну. Если таковых нет, буду тогда тебя считать лишь теоретиком не более того.
Alexeyslav писал(а):
Представьте, куда эти резисторы и конденсаторы ставить в матричную клавиатуру?

Опять ты «о своём, о девичьем» (С)
А если клавиатура на герконах!? Как в былые времена… :)
Alexeyslav писал(а):
Зачем такие пляски с дополнительными деталями на каждую кнопку, если отлично справляется простой до гениальности программный способ подавления дребезга.

Бывают (у меня довольно часто) ситуации, когда свободной памяти для написания кода для подавления дребезга просто нет… часто это относится к девайсам на тини13… брать из-за этого более ёмкий МК или поставить дополнительные RC цепочки – я в большинстве случаях выбираю второе, так как это дешевле на порядок, да и кнопка может быть удалена от девайса на значительном расстоянии (несколько метров). Ты же в свою очередь поступай как считаешь нужным – я свой опыт тебе не навязываю. :wink:


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс янв 21, 2018 11:56:17 
Встал на лапы

Карма: 4
Зарегистрирован: Чт сен 10, 2015 07:59:03
Сообщений: 83
Откуда: Гродно, BY
Рейтинг сообщения: 0
А что, у герконов нет дребезга?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс янв 21, 2018 12:02:45 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 49
Зарегистрирован: Ср янв 02, 2013 09:37:35
Сообщений: 2459
Откуда: ХМАО
Рейтинг сообщения: 0
О чём думаем когда читаем пост!?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс янв 21, 2018 12:22:29 
Встал на лапы

Карма: 4
Зарегистрирован: Чт сен 10, 2015 07:59:03
Сообщений: 83
Откуда: Гродно, BY
Рейтинг сообщения: 0
Думаем о подавлении дребезга и тех несчастных, которые во вновь разрабатываемых устройствах использует больше половины памяти. Как в дальнейшем можно модифицировать данное устройство, если не делать халтуру?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6497 ]  На страницу Пред.  1 ... 316, 317, 318, 319, 320, 321, 322 ... 325  След.



Часовой пояс: 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