All streams
Search
Write a publication
Pull to refresh
55
0.5
Михаил Кнутарев @mmMike

User

Send message

не корректно написал. НЕ на входе. А считываемое с входа в программе.

Для иллюстрации.. синие и красное - это ну скажем на 0.01% отличающееся друг от друга частоты семплирования. 100 - типа порговое значение. Просто для иллюстрации/примера. За счет алиасинга пороговое значение будет достигаться в алгоритме "+1/-1 от семпла" фактически в непредскзуемое время.

На синем - больше было не учтенных выбросов 1. А на красном больще не учтенных выбросов 0.
Сделать оверсеплинг для дребезга, где фактическая частота может быть десятки МГц.. это не возможно да и не нужно.

там где "..." - там закончивается.

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

  1. "счетичк нажатия" += 1, если семп == "1"

  2. "счетичк нажатия" = 0, если семп == "0"

  3. счетичк "нажатия" > порога (устоявшийся процесс) -> сигнал о нажатой кнопке + "счетичк нажатия" = 0.

И пороговое значение понятнее и проще. А если в счетчике учитыватеся и переходной процесс и его окончание считается как пороговое значение счетчика, то вермя "нажата кнопка" будет считаться от начала переходного процесса. И будет случаныйм образом плавать, поскольку в порог включить придется и семплы после переходного и семплы внутри переходного. А они случайны (количестов 0 != количеству 1).

Аналогично можно ловить отжатие кнопки.
А если требуется просто ловить "кнопка нажата или нет", то проще просто брать сэмплы (период скажем 500ms) и считать семп за резутьтат "нежата/не нажата" в типичной задаче типа "зажатая кнопка увеличивает громкость".

Ровно как описан алгоритм создаем программный счетчик, который инкриминируется, если кнопка нажата и декриментируется если кнопка отжата
счетчик будет возврастать при каждом опросе нажатой кнопки (за 1 секунду семплирования с периодом скажем 20ms это будет +1000/20).
И как это неперывно увеличивающееся значние используется в "флаг, который принимает свое значение в зависимости от пересечения верхнего или нижнего установленного порога" = ?.

Ровно как описано в исходном посте. А если автор чего то "подразумевал" (типа порог.. обнуляем.. учитываем и т.д.) так я не ясновидец и додумывать не буду что он подразумевал.

Я могу догадываться что и зачем имелось в виду.
Но если описание алгоритма такое каое есть, то ну просто сложно удержаться от..

У вас в примере магическим образом частотад дребезка это константа, совпадающая с
частотой опроса.
А проблемы алиасинга так же магически "частоту опроса GPIO надо приподнять".

Мне больше нечего сказать на это..

Если снять осцилограмму с кнопки в момент ее нажатия/отпускания (хорошим осцилографом с малой емкостю и большим входным сопростивлением). То будет видна характерная картина. Собствено это и есть "дребез контакта".
наберите "дребез контакта осциллограмма" в поиске. Там будут картинки примера дребезка на осцилографе.

В зависимости от физического исполнения "кнопки", емкости на входa, входного сопротивления входа и пр. может быть разной формы.. разной длитетельности (может до 5-10ms).

По-моему, там просто случайные 0 и 1, приходящие на порт МК.

Не приходящие, а считываемые с порта (я специально это отметил). А приходит напряжение/ток сложной формы.
"Цировой сигнал" это абстракция. Почему то "писатели под ардуино" про это забывают/не знают. А потому удивляются "а почему не так работает как я думал".

4-й курс (времена динозавов правда).. схемотехника.. лаба посвященная этому. "Что бы запомнили".
Для меня электроника и схемотехника - хоби. Но запомнил жжж..

Считывание состояния кнопки по прерываниям таймера, это один из стандартных методов. Минус этого метода только в том, что он требует относительно много процессорного времени.

просто отмечу (на правах рассуждения)
Процессорное время в обработке события от нажатия на кнопку (человеком) не самый определяющий критерий.
И я критиковал очень конкретный алгоритм со "счетчиком" чего то и измением этого счетчика по опросу.
А не способ "опроса" вообще.

Квадратурный энкодер обрабатывается как две кнопки.

К слову, квадратурный энкодер программный то же работать не будет, если задача не "крутилка громкости", а "точная координата оси станка после часа его работы". Для таких целей есть аппартаный режим счетчиков (в STM32 например).

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

Для "крутилки громкости", зачастую достаточно в фоновом процессе (прерывание по таймера раз в 50ms) тупо считывать состояние и риск возникновения дребезга в момент считывания не учитывать.. кнопки/энкодеры типа "крутилки громкости" - интерактивны. Щелчком больше/меньше значения не имеет вообще.

первая строка значение на входе контроллера (*)
вторая строка - считываение в период опроса.
третья строка - типа счетчик
000001010101010101010100111101000101111111111100111011111111111..0100100001110000000
0____1____0____1____1____1____0____1____0____0____1..0____1____1____0____
__ -1____0____-1____0____1____2____1____2___-1____-2___-1__.. 345__346__347__346___

Ну и что конретно даст значение счетчика для анализа по предложенному...

программный счетчик, который инкриминируется, если кнопка нажата и декриментируется если кнопка отжата.

Только давайте на ходу не придумывать доп условия :) Преврашая алгоритм в лапшу и набор заплат :)
Не надо изобретать велосипед. програмные алгоритмы (как через прерывания, так и через опрос под разные цели) подавления дребезга - это динозавры, которым много десятилетий. Все придумано до нас.
Честно говоря, смысла этой статьи не понимаю.

(*) - условно. значени если бы опрашивали порт в данный момент. Тема для превращения в 0/1, фактически аналогового сигнала дребезка, не проста. Но можно не вдаваться и считать 0/1.

тогда зачем фраза

программный счетчик, который инкриминируется, если кнопка нажата и декриментируется если кнопка отжата

Количество "0" и "1" на опросе кнопки могут встречатся вообще в любых сочетания при попадании на диапазон "дребезга". И период опроса вообще на это не влияет. Поскольку "дребез" это в общем случае "случайный" период (упрощенно изображают на графиках меандром. но это не меандр).

Я так, понимаю, что автор рассматирвал вопрос сложности определения момента "нажатия" на кнопку как фиксации события "нажата". А не просто определения факта "нажата/не нажата"

Ну ну..
Ключевая концептуальная ошибка: "опрос"+"счетчик".

который инкриминируется, если кнопка нажата и декриментируется если кнопка отжата

Получите неопределенное значение. Потому что, момент опроса и момент переходных процессов при нажатии (дребезг) вообще могут не совпасть.

Очень типичная ошибка "опросом" + "счетчик".
Например, так же нельзя опросом энкодер считывать. Если конечно интересует не "качественные" показатели (типа крутилка громкости), а накомительное значение (ось станка и пр.).

Т.е. ссылок у вас нет. время тратить не хотите. "Потому что это не требует доказательств" (типа common sense)

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

Угу.. а кто то в бассейне подскользнулся и разбил голову..
Так себе вариатнты доводов однако.

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

Собственно на этой фразе диалог можно и закончить :)
Т.е. тему не изучали и вообще не в курсе. Просто "здравый смысл" и убежденность.

https://www.youtube.com/watch?v=sJ3yqzLR85w

Мне рекомендовали сменить тип нагрузки. Сменил.. признаки воспаления фасеток позвоночника ушли. Локти не болят.

Это не я решил, так утверждают примерно все источники, которые я читал

Ссылки. pls.
Только не надо путать тяжелую атлетику (хотя там не столь высокий травматизм) с обычными упражнениями на тренажерах в зале.

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

Лет 15 плавал 2-3 раза в неделю по 2-3 км за раз.
2 года назад перешел в тренажерный зал (железо) потому что:

  1. Протрузия (небольшая) и артроз фасеточных сутавов позвоночника в поясничном отделе.

  2. Воспаление хроническое локтевых суставов (эпикондилит).

  3. Признаки износа (МРТ) сухожилий надостной мышцы.

Постоянные монотонные нагрузки на позвоночник (фасетки в частности) и руки в характерных для плавания (вольных стиль) движених не полезны ни для позвоночника ни для суставов.
Так что нифига плавание не "безопастно" в перспективе.

За 2 года все это постепенно стало проходить. И ничего нового не добавилось.
Хотя в зал хожу те же 2-3 раза в неделю и на 2 часа за раз.

Почему Вы решили что это "травмоопасный спорт" - я не знаю.

Глобус Москвы и за МКАД живут люди с песьими головами.
Не обязан весь мир знать широко известную в узких кругах москвичей терминологию.

Лет 10 назад купил кучку (40штук) таких же излучателей (по случаю) и собирался сделать аналогичное.
Но в итоге так и не понял, а для чего лично мне это нужно (практическое примененение) и не стал возится.
Все же делать, что бы тольок просто сделать этого лично мне не достаточно. Тем более, что тема в целом не нова и такое уже делали в DIY.

Но с очень большим интересом прочитал Вашу статью. Спасибо за интересный опыт.

А какая у Вас была практическая цель. Ну для чего это можно приспособить?
(музеи и пр.. это понятно. Я именно для "домашнего" использования имею в виду)

А то, что до сих пор в аэпропорт самолет нельзя проносить жидкости, купленные не в аэропорту...
Если посмотреть на истоки/причны этого ограничения (можно найти отчеты и даже с фотографиями). ДЕбилы с бутылочками, которые на борту самолета хотели сделать что то взрывающеся. Судя по отчету у них все равно ничего бы не вышло. Но.. теперь воду только в порту и за 300..500% нартутки на цену.

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

https://habr.com/ru/articles/795217/

Если в этот момент вместо "Отмена" жмякнуть "ОК", то тоже можно было подключить подписку.

не в тему STK и подписок , но..
Опсосам теперь и подверждения не нужны.

Мне вот недавно на тарифе для модема сняли за услугу "развлечение" (МТС). Чем они собирались модем развлекать - не знаю (причем, в списке подключеных услуг ее не было). После жалобы в чате - деньги вернули. Но кто то наверняка и не заметил. "десять старушек - рубль".

Так что МТС я воспринимаю с некоторй брезгливостью. Как мелкого жулика/неуклюжего вора карманника. За руками которого нужно следить.

Такое же ощущение и на МТС банк распространяется. Понятно, что как бы разное. Но ирационально и то и другое бренд/клеймо МТС.

Да я так и понял.
Просто в сочетании с "мифическими свойствами" в предыдущем предложение и этой фразой, может у тех кто считает, что SIM карта это магия вызвать еще большую веру в магию :)

А так в сущьности там все просто и примитивно.. В первую очередь из за размеров приложений.
Ну 2..3тыс строк кода Java.. превращающиеся в 12-16Кб загружаемого.
Да и такие то монстры были редкостью. EMV платежное приложение (полноценное) умещается в 2100 строк кода. А максимальное STK в ~1000 строк писал.

И вообще, время STK приложений ушло с кнопочными телефонами. RIP.
С концами ушло. Спроси у кого, как в смартфоне добраться до STK меню - мало кто вообще скажет что это такое.

Особой документации на это нет, поэтому зачастую симке приписывают разные мифические свойства (и потом рассказывают про «слежку через SIM-карты»).

Да ну.. вот прям нет :)
10 лет назад даже в открытом доступе найти можно все было (когда я этим плотно занимался)

SIM-карта по запросу оператора может делать многое: выполнять AT-команды, отправлять служебные SMS, посылать и принимать вызовы,

Ээ.. Карта ISO7816 может принимать APDU команды. Отправляет SMS и пр. не карта. Вы имели в виду sim toolkit.. Но все равно фраза звучит коряво и режет глаз.

Цены на железки простое не адекватные. Наверное потому что это для "cool хакеров" предназначено :)
А так, перехватчик проткола ISO7816 T0 и T1 делается на STM32F108 практически без обвязки.
А имея самодельный перехватчик ISO7816, автоматичски получаем эмулятор. По факту, эмуляторы карт то же не сложные. Много кода в апплетах JavaCard не бывает (просто не лезет).

Глядя на череду похожих (страшных) женских лиц на улице, мне кажется что создатели мультика "В синем море, в белой пене…" (где девушка с губами рыбы) что то знали.

И все эти женщины с рыбьими глазами/губами и странными скулами почему то считают что это красиво.

Information

Rating
2,039-th
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity