Например TDA7294

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

Текущее время: Чт фев 12, 2026 12:34:44

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7972 ]     ... , , , 385, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 08:33:14 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1343
Рейтинг сообщения: 0
Что за вертикальные счётчики?

Это для экономии переменных в случае нескольких кнопок. Представь, к примеру, 3-х байтный массив. Каждый разряд которого будет счётчиком на 8. Таких счётчиков будет максимум 8. Для горизонтальных, при 8-ми кнопках, понадобилось бы 8 байт. Но считали бы они до 255.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 08:46:35 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
Не совсем понятно :dont_know: И к сожалению почитать про вертикальные счётчики ничего не нашёл :dont_know:
И вообще, это про ASM?

иначе:
OKF писал(а):
Это для экономии переменных
дело опять движется к холивару есть ли в ASM-е переменные :shock:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 13:47:08 
Друг Кота
Аватар пользователя

Карма: 52
Рейтинг сообщений: 2116
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 7067
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
я правильно понял, что на 8 счетчиков занято 3 регистра, в первом побитно хранятся 1 (0е биты) всех счётчиков, во втором - 2 (1е биты), в третьем 4 (2е биты).
и если мне надо узнать сколько в 3м счетчике, то мне нужно из всех 3х регистров достать 3й бит и собрать из него значение, расположив эти биты по порядку...

допустим регистры (или память) таким методом мы сэкономим... но расчётов сколько...?

не проще было запихать по 2 счётчика в байт - да, израсходовалось бы на регистр больше, но работать было бы намного проще...

Добавлено after 8 minutes 50 seconds:
я предпочитаю сквозной счётчик (баловаться так бальваться терминами :) ) он один на всю клавиатуру и сбрасывается при изменении состояния любой кнопки, а как дотикал до нужного значения - дребезг кончился, можно опросить кнопки.

_________________
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 14:01:42 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
Ivanoff-iv писал(а):
(баловаться так бальваться терминами )
поддерживаю :) :beer:
тоже напридумываю терминов)) и буду тут завуалированно изъясняться :)

Добавлено after 8 minutes 37 seconds:
и...
вы можете со мной сколько угодно не соглашаться, но паралельный счётчик в диагональной проекции намного эффективнее всего выше приведённого))


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 14:39:49 
Нашел транзистор. Понюхал.

Карма: -8
Рейтинг сообщений: 19
Зарегистрирован: Сб апр 24, 2021 18:42:11
Сообщений: 158
Рейтинг сообщения: 4
Не совсем понятно :dont_know: И к сожалению почитать про вертикальные счётчики ничего не нашёл...

https://embedders.org/blog/gdi/debouncing.html


Последний раз редактировалось phalanx Ср ноя 27, 2024 14:43:14, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 14:43:02 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1343
Рейтинг сообщения: 4
я правильно понял, что на 8 счетчиков занято 3 регистра, в первом побитно хранятся 1 (0е биты) всех счётчиков, во втором - 2 (1е биты), в третьем 4 (2е биты).
и если мне надо узнать сколько в 3м счетчике, то мне нужно из всех 3х регистров достать 3й бит и собрать из него значение, расположив эти биты по порядку...

допустим регистры (или память) таким методом мы сэкономим... но расчётов сколько...?

Мужики. Ко мне какие вопросы? Человек спросил - я ответил. Не я же их придумал. https://embedders.org/blog/gdi/debouncing.html - для тех кто не может найти.
ВО! Значит, мыслим одинаково.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 15:17:56 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
понятно теперь. это чисто сишные приёмы.

Добавлено after 8 minutes 26 seconds:
в асме всего 2 варианта (если не ошибаюсь) - тикать в аппаратном таймере или тикать в программном цикле.
(в слове "тикать" - ударение на 1-й слог)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 16:02:26 
Друг Кота
Аватар пользователя

Карма: 52
Рейтинг сообщений: 2116
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 7067
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
Прикольно, истинно параллельная обработка всех подключенных к одному порту кнопок...
и нет, это не обязательно С, это и на асме легко делается... на асме же есть логические операторы... 8)

Не знаю, кому плюсик ставить? - поставлю обоим! Метод интересный.

_________________
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 16:28:26 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
shonty, Так у Paktok-а на вертикальных счетчиках не переменные. Там расход регистров большой :) :) :)
[шутка]Интересно, если взять планарный датчик, расход регистров уменьшится?[/шутка]

Вообще, антидребезг такая интересная штука... Я применяю 2 подхода.
1. Кольцевой массив. Каждый интервал времени в ячейку массива с индексом i читается состояние кнопки/кнопок. Потом индекс увеличивается (если выходит за пределы массива - то обнуляется).
После каждого чтения сравниваются между собой все элементы массива. Если все одинаковы - значит состояние кнопок устаканилось - и можно анализировать полученные данные.
Метод хорош, когда интервал чтения позволяет устранить дребезг за N чтений и это N меньше числа кнопок.
2. "Гистерезисный" счетчик.
Для каждой кнопки выделяется 1 байт. Старший бит - флаг нажатой кнопки. Младшие 7 - счетчик.
Обработчик дребезга вызывается с определенной периодичностью. В обработчик передается физическое состояние кнопки и ссылка на счетчик.
В обработчике старший бит выделяется во временную переменную флага, в счетчике бит временно обнуляется.
Далее, если физическая кнопка нажата - смотрим, если значение счетчика меньше заданного предела, то увеличиваем его. Если значение достигло заданного предела - смотрим, если флаг во временной переменной не поднят - генерируем событие нажатия кнопки. Потом поднимаем флаг во временной переменной.
Если физическая кнопка не нажата, то смотрим - если счетчик больше нуля - уменьшаем его. Если после уменьшения счетчик стал нулевой, смотрим - если флаг во временной переменной поднят - генерируем событие отпускания кнопки. Потом сбрасываем флаг временной переменной.
Далее новое значение флага объединияется со счетчиком и всё. На выходе обработчик отдает три значения - ничего не произошло, кнопку нажали, кнопку отпустили.

Добавлено after 10 minutes 35 seconds:
упс. Пока ответ писала - отвлекли. И пока написала - тут уже целый диспут ))))

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 17:44:15 
Друг Кота
Аватар пользователя

Карма: 52
Рейтинг сообщений: 2116
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 7067
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
тоже раньше использовал "кольцевой буфер на 8 элементов" = переменную Х типа статик чар
алгоритм:
сдвигаем содержимое переменной Х влево;
заносим в младший бит состояние кнопки;
проветяем результат(Х==...
0х00 - кнопка отпущена состояние (или нажата, смотря как подключена)
0х80 - кнопка отпущена событие
0хFF - кнопка нажата состояние
0х7F - кнопка нажата событие
)

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

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

_________________
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 19:02:42 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
Ivanoff-iv, Ваша идея с глобальным счетчиком мне понравилась, когда вы про нее еще днем написали.
Но мне надо ее осмыслить...
Пока я пришла для себя к независимым счетчикам для каждой кнопки. Т.е. байт на счетчик, байт на конфиг. В особо тяжелых случаях еще и с индивидуальными пределами для разных кнопок.
Есть у меня библиотечка со структурой и парой функций. При инициализации для кнопки сохраняется конфиг (какие события она должна генерить - нажатие, отпускание, долгое нажатие, повтор... Если индивидуальные тайминги - то еще 2 байта добавляется) и потом просто в таймерной задаче в функцию-обработчик передаются физические нажатия и на выходе получаем событие кнопки.
Да, каждая кнопка индивидуальна. Это не всегда удобно. Но я уже давно перестала гоняться за экономией байтов ради экономии. Использование ОЗУ и и флеша должно быть разумно достаточным. При том, что часто за экономию ОЗУ приходится расплачиваться увеличением и/или усложнением кода.

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 19:23:00 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

Добавлено after 1 minute 52 seconds:
Хотя лично я зря не жоплюсь и считываю раз в 100 мс, и уже лет пять, как ни разу не пожалел об этом. А поначалу тоже всякие интервалы защитные соблюдал... Как вспомню, так вздрогну

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 19:30:35 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1343
Рейтинг сообщения: 0
Это если кнопки большие - пускатели там и т.п. Тогда и 200 можно. И ни о чём не жалеть.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 19:39:58 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
Можно с другого ракурса на вопрос взглянуть: дребезг же из ниоткуда не берётся :dont_know:
Если возник дребезг - значит было нажатие на кнопку.
И напрашивается вопрос: а стОит ли ждать, пока эти переходные процессы в кнопке устаканятся?

Добавлено after 4 minutes 33 seconds:
ps: я опрос порта по максимуму использую, а задержку ставлю перед возвращением из процедуры. Чисто по тактильным ощущениям подбираю.

Добавлено after 3 minutes 13 seconds:
что бы серийного срабатывания не было.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 19:44:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

Любые кнопки, как органы управления человеком. Или вы Брюс Ли и можете кнопку нажать на 10 мс и каждые 20 мс?!

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 20:01:00 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1343
Рейтинг сообщения: 0
Смотря для каких целей кнопки. Если в играх то да, или печатать. Думаю, даже быстрее 20мс. А если серьёзно, то мелкие кнопки совсем дребезжащие. Да и изнашиваются. Вон, в данный момент на мышке правая кнопка все нервы портит в Протеусе.(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 20:49:41 
Мучитель микросхем
Аватар пользователя

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
shonty писал(а):
Если возник дребезг - значит было нажатие на кнопку.
И напрашивается вопрос: а стОит ли ждать, пока эти переходные процессы в кнопке устаканятся?
shonty писал(а):
ps: я опрос порта по максимуму использую, а задержку ставлю перед возвращением из процедуры. Чисто по тактильным ощущениям подбираю.
Описывать всякие алгоритмы можно до бесконечности..
Попробую проиллюстрировать как у меня..
Скачал график дребезга и дорисовал в ГИМП ход обработки нажатия (интервалы примерные):

Изображение

И зачем мне ждать, когда перестанут дребезжать контакты, если процесс обработки с задержкой возвращения по времени превышает дребезг?

Добавлено after 8 minutes 5 seconds:
Если по нажатию кнопки просто диодом моргнуть, то тут да, диод изморгается, но и то это можно скомпенсировать постзадержкой, или интервал опроса увеличить (как ARV писал)
А если выполнять какие либо более серьёзныне действия, то они перекроют весь дребезг + постзадержка по вкусу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 27, 2024 21:36:45 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
shonty, А если это помеха? Или кто то попой сел на клавиатуру? Какая кнопка опросилась или успела нажаться первой - та и обрабатывается?
Я, кроме дребезга, в обработке кнопок исключаю мультинажатия, если они не предусмотрены функционалом.

_________________
Белая и Пушистая


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

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 2
А если это помеха? Или кто то попой сел на клавиатуру?
ввести captcha для подтверждения, что это пользователь, а не его (или чья-то) задница или помехи.


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

Карма: 1
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 11, 2012 18:20:26
Сообщений: 473
Рейтинг сообщения: 0
Just_Fluffy писал(а):
Или кто то попой сел на клавиатуру? Какая кнопка опросилась или успела нажаться первой - та и обрабатывается?
Ну не знаю :dont_know:
У меня опрос с минимальным интервалом. Поэтому мультинажатие от попы исключено :dont_know:

А так да.. пришлось бы ещё и дребезг попы обрабатывать))

Добавлено after 6 minutes 45 seconds:
Если серьёзно, то по поводу мультинажатия согласен.., только если оно предусмотрено, то обрабатывать нужно.
Но при минимальном интервале опроса одновременно 2 кнопки нажать.. это невероятно :dont_know:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7972 ]     ... , , , 385, , , ...  

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


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

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


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

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


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