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

Обсуждаем контроллеры компании Atmel.
Adrift
Вымогатель припоя
Сообщения: 539
Зарегистрирован: Вт окт 01, 2024 15:22:33

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

Сообщение Adrift »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4654393#p4654393"]зачем мне опрашивать "+" и "-" чаще, если промежуточные опросы не несут никакой информации?[/uquote]
Затем чтобы нажатия этих "+" и "-" не пропустить. Как вы комповой клавиатурой пользуетесь? Не мешает ведь то, что она быстро на нажатия реагирует и эти нажатия не пропускает? Видимо нет, т.е. можно сделать все так, что будет работать хорошо для всех, а не только для тех, кто нажимает кнопку и держит до тех пор пока на экране что-то там не обновится. Тем более, как я говорил, опрашивать кнопки 10 раз в сек ничуть не сложнее, чем 3.
Аватара пользователя
главный колбасист
Это не хвост, это антенна
Сообщения: 1324
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край
Контактная информация:

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

Сообщение главный колбасист »

Может эту задачу решает проще аналоговая вычислительная машина,то есть конденсатор и резистор на кнопке(интегратор),вместо кучи транзисторов в МК и кодов для них?

Чтобы не плодить сущности.
Последний раз редактировалось главный колбасист Пт ноя 29, 2024 11:30:09, всего редактировалось 1 раз.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19045
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

Adrift, много людей собрало мои устройства из моих тем на этом форуме, но ни один не пожаловался на работу кнопок. так что, кнопки у меня работают хорошо для всех, а не только для меня.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Starichok51 писал(а):так что, кнопки у меня работают хорошо для всех,
тут ошибочка логическая)

кнопки работают хорошо, только для всех кто собрал :)
что дааалеко не для всех))
Аватара пользователя
Starichok51
Модератор
Сообщения: 19045
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

ну да, а для тех, кто не собрал - работают плохо.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

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

Сообщение Just_Fluffy »

Для тех, кто не собрал - они вообще не работают!!! :))

А антидребезг нужен, когда обработчик быстрый. Что б одно нажатие "+" не превратилось в 100500 инкрементов.

Большой период опроса - тоже алгоритм антидребезга. И под этот период опроса нужно заводить отдельный таймер. Либо все процессы, если позволяет алгоритм, вязать к этому периоду.
А если периоды опроса разные - 3 раза в сек и 100 раз в сек - то нужно делать таймеры индивидуально под каждый период. Все зависит от общего алгоритма программы и концепции обработки событий, внешних и внутренних.
(Здесь под таймерами я имею ввиду не Т0/1/2/..., а программные счетчики, базирующиеся на каком то опорном временОм событии.)

Ну и походу спор плавно переполз в оффтоп для ассемблера... По кнопкам была отдельная тема где то...
Белая и Пушистая
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Just_Fluffy писал(а):А антидребезг нужен, когда обработчик быстрый. Что б одно нажатие "+" не превратилось в 100500 инкрементов.
Just_Fluffy, согласен. Именно ради инкрементов.
Я выше рисовал график дребезга и обработку в своём понимании)

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

И да) задержки подстраиваю под себя. И они у меня локальные, а не глобально в цикле опроса порта)
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

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

Сообщение Just_Fluffy »

shonty, если алгоритм основной программы разрешает задержки - то можно и так.
Но в моем понимании антидребезг нужен не только как устранение собственно дребезга, а и как защита от помех и рандомных коротких нажатий сторонними предметами ...
Ибо в моем понимании человек не может нажать кнопку на 2-5-7 мс. Соответственно, если нажатие длится менее какого то времени - это не нажатие. А в вашем случае будет сработка....
Белая и Пушистая
veso74
Поставщик валерьянки для Кота
Сообщения: 1905
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

Для медленных систем /режим МК без генератора, МК только как управление/ всегда использую простой метод: кнопка/и: цифровое чтение (в LOW), пауза, цифровое чтение (в LOW). Если второе чтение "Да" - выполняем. Пауза 20 или 30 ms. Не занимает места в памятья, исключены любые проблемы bounce, MK работают примерно в 10 см от мощных электромагнитных полей (напр. около УМ 4*ГУ-50, МК на сантиметрах от П-фильтра). Отдавна принял активный "LOW" - гораздо более помехоустойчив, по крайней мере на столе с TRX и любых сигналах на проводах и в ефире вокруг МК.

В прошлом напр. протестировал 5-7 способов. Таймеры, специальные функции, много способов. В последнее время изпользую только простой метод. Почти всегда без едного конденсатора на шине. Иногда даже с внурт. pull-up из MK. Правда, с одной кнопкой, используемой в течение длительного периода, проводил исследование, было интересно. Bounce импульсы былы более 50 ms, много "иголок". Конечно кнопка: в корзину, но бывают и такие случаи. (частично пользуюсь переводчиком БГ->РУ)
Последний раз редактировалось veso74 Пт ноя 29, 2024 11:55:46, всего редактировалось 3 раза.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Just_Fluffy писал(а):А в вашем случае будет сработка..
Just_Fluffy, да, в моём случае сработает. Подобно триггеру.
Вы писали про алгоритмы, а я пишу про концепцию :)

Добавлено after 1 hour 14 minutes 29 seconds:
Кстати, поинтересовался, есть ли антидребезг в клавиатурном контроллере типа tm1637:
из ДШ, пишут что 键扫描(8×2bit), 增强型抗干扰按键识别电路 (Сканирование ключей (8×2 бит), улучшенная схема распознавания ключей с защитой от помех)
Аппаратно наверное Изображение
Аватара пользователя
Starichok51
Модератор
Сообщения: 19045
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

Just_Fluffy писал(а):А если периоды опроса разные - 3 раза в сек и 100 раз в сек - то нужно делать таймеры индивидуально под каждый период.
у меня в вышеописанном случае есть программный таймер по 10 мс. и есть счетчик по 10 мс.
каждые 10 мс опрашивается кнопка Пуск/Стоп и другой счетчик считает число "нажатых" опросов этой кнопки.
состояния счетчика по 10 мс разбиваются на 3 интервала - 33 (330 мс), 66 (660 мс) и 100 (1 сек), состояние счетчика 100 сбрасывает его на ноль. вот в эти 3 интервала происходит опрос кнопок + и -.
и если тебе угодно, счетчик по 10 мс можешь называть тоже программным таймером, так как он в итоге отмеряет 1 секунду.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
AQ29
Нашел транзистор. Понюхал.
Сообщения: 198
Зарегистрирован: Сб июл 30, 2011 21:00:24

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

Сообщение AQ29 »

Защита от дребезга – простая задача.
Надо дождаться, когда дребезг закончиться, тогда можно считывать положения кнопок.
Я использовал простой вариант – программа считывает порт с кнопками 3 раза с интервалом 30 миллисекунд в 3 регистра РОН, например, r20, r21 и r22. Если r21 не равно r20, то начинаю считывать сначала. Когда все 3 регистра равны, то дребезг закончился, это реальное состояние кнопок.
Плюсы такого решения.
- Программа простейшая, можно написать за несколько минут. Не нужно никаких таймеров, независимых, параллельных, сквозных, вертикальных, горизонтальных и перпендикулярных счётчиков.
- Всегда быстрая реакция на кнопки. В ассемблере обычно программа крутиться по кругу и довольно быстро, скажем, 10 мс, получается время реакции около 0,1 секунды, неплохо. Если круг длительный, можно вставить несколько команд считывания кнопок, время реакции сократиться. Командой называю строчку вызова программы считывания кнопок.
- Можно считывать нажатие нескольких кнопок, это нередко бывает необходимо.

[uquote="OKF",url="/forum/viewtopic.php?p=4653829#p4653829"]А если серьёзно, то мелкие кнопки совсем дребезжащие. Да и изнашиваются. Вон, в данный момент на мышке правая кнопка все нервы портит в Протеусе.([/uquote]
Замените кнопку, она стоит копейки, берегите нервы.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

А кто-нибудь пробовал подсчитать процент неудачных срабатываний?

Добавлено after 3 minutes 45 seconds:
Думаю что целесообразность борьбы с дребезгом должна вытекать из статистики ))
AQ29
Нашел транзистор. Понюхал.
Сообщения: 198
Зарегистрирован: Сб июл 30, 2011 21:00:24

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

Сообщение AQ29 »

[uquote="shonty",url="/forum/viewtopic.php?p=4656412#p4656412"]А кто-нибудь пробовал подсчитать процент неудачных срабатываний?

Добавлено after 3 minutes 45 seconds:
Думаю что целесообразность борьбы с дребезгом должна вытекать из статистики ))[/uquote]
Не нужна статистика. Исправные кнопки должны работать чётко и стабильно.
Если это не так, то, похоже, разработчик выбрал излишне сложный алгоритм и запутался в «горизонтальных и вертикальных» счётчиках.
Если ли всё же интересует статистика, то ведь есть клавиатура и мышка, там кнопки стоят и используются интенсивно. За много лет работы не помню ни одного сбоя кнопок – вот и вся статистика.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

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

Сообщение Just_Fluffy »

чет тема про ассемблер в оффтоп скатывается...
Давайте лучше такой микроконкурс объявим:
минимальный код на асме AVR , что б поменять порядок следования бит в двухбайтовой переменной (АБВГ ДЕЖЗ ИЙКЛ МНОП --> ПОНМ ЛКЙИ ЗЖЕД ГВБА)
Или вот такой - определить, что в байте единичный только 1 бит, все остальные в нуле.
Белая и Пушистая
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Открыл для себя книжку "Алгоритмические трюки для программистов"?)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

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

Сообщение Just_Fluffy »

Gudd-Head, нет, не открыла. Просто 2 страницы обсуждаем алгоритмы, а не ассемблер. Поэтому захотелось разбавить оффтоп ассемблером )))))
Белая и Пушистая
Аватара пользователя
Starichok51
Модератор
Сообщения: 19045
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

Just_Fluffy писал(а):минимальный код на асме AVR , что б поменять порядок следования бит в двухбайтовой переменной (АБВГ ДЕЖЗ ИЙКЛ МНОП --> ПОНМ ЛКЙИ ЗЖЕД ГВБА)
элементарно, Ватсон!
сдвигаем эту пару регистров вправо, а потом из переноса в другую пару регистров влево. и копируем вторую пару в первую.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

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

Сообщение ПростоНуб »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4657279#p4657279"]
Just_Fluffy писал(а):минимальный код на асме AVR , что б поменять порядок следования бит в двухбайтовой переменной (АБВГ ДЕЖЗ ИЙКЛ МНОП --> ПОНМ ЛКЙИ ЗЖЕД ГВБА)
элементарно, Ватсон!
сдвигаем эту пару регистров вправо, а потом из переноса в другую пару регистров влево. и копируем вторую пару в первую.[/uquote]
Медленно. Даже совсем в лоб, через 256 байтную таблицу получится намного быстрее.

Добавлено after 10 minutes 27 seconds:
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4657244#p4657244"]Или вот такой - определить, что в байте единичный только 1 бит, все остальные в нуле.[/uquote]
Тоже через 256 байтную таблицу тремя командами, загрузить регистр из таблицы со смещением в исследуемом байте, вычесть регистр из регистра, проверить на ноль. В таблице все байты должны быть нулевыми, кроме восьми, содержащих один бит в соответствующих позициях и байта по нулевому смещению, который должен быть любым, кроме нуля.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4657259#p4657259"]Gudd-Head, нет, не открыла.[/uquote]
А зря (или пиздишь).
Изображение
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

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