Evgen
и если поставить CHANGE, то хрен узнаешь когда тебя позвали - когда rising или Falling
Indr1x
0x03 твое же
Evgen
0x03 твое же
и че, из прерывания взад ногу читать?
Indr1x
На бумажке нарисуй себе по какому фронту будет срабатывать, если стоит по любому изменению уровня
Evgen
На бумажке нарисуй себе по какому фронту будет срабатывать, если стоит по любому изменению уровня
я уже рисовал 😉 вроде стоит задача измерения длительности импульса, но это неточно
Evgen
Ты всегда можешь хранить предыдущий стейт
а если он по какой-то причине похерится?
iҚØN🐾🐾
Я не знаю такой причины, ну мб только коррапт памяти, но это будет уже не важно)
Evgen
По какой, например?
да пес esp знает... слишком быстро будут прерывания или ушла на базу за вайфаем
iҚØN🐾🐾
да пес esp знает... слишком быстро будут прерывания или ушла на базу за вайфаем
Это то тут при чем? У тебя дергается обработчик прерывания, фиксируй изменения стейта
Evgen
Я не знаю такой причины, ну мб только коррапт памяти, но это будет уже не важно)
в аналогичном случае на lpc1768 вообще фейковые прерывания изредка вылезали и я долго думал, что у меня крыша уехала, потому как state сохранял....
iҚØN🐾🐾
в аналогичном случае на lpc1768 вообще фейковые прерывания изредка вылезали и я долго думал, что у меня крыша уехала, потому как state сохранял....
Не надо мешать проблемы. Фейковые прерывания просто так не вылазят, такое бывает вследствие жестких хардварных багов или помех порта, дребезга контактов и тд
iҚØN🐾🐾
iҚØN🐾🐾
Ну в смысле, была регистрация прерывания и был дребезг и я потом тоже репу чесал, почему стейт не менялся, а событие было)
Evgen
В смысле, потеряться?
ну так классика жанра прерываний же... идет прерывание, обрабатывается, в этот момент второе приходит... если нет очереди на прерывания, то оно херится, и если есть регистр, то туда пишется что прерывание похерилось
Evgen
Ну так это реализация хранения. Делай мьютексы или очереди
это на аппаратном уровне жы. че, команды 8086 не изучал?
iҚØN🐾🐾
На самом деле обычно на практике не особо нужен CHANGE
iҚØN🐾🐾
это на аппаратном уровне жы. че, команды 8086 не изучал?
При чем тут 8086? Мы сейчас говорим об esp32
Evgen
При чем тут 8086? Мы сейчас говорим об esp32
ну я первый раз это на 8086 узнал. А в других мелкопроцессорах с прерываниями аналогично
iҚØN🐾🐾
Например, на stm32 делалось, например, HAL_NVIC_DisableIRQ(EXTI0_IRQn); хранение стейта, HAL_NVIC_EnableIRQ(EXTI0_IRQn)
iҚØN🐾🐾
И ничего не терялось нигде
iҚØN🐾🐾
Ну ясное дело, что могло что-то прилететь в момент сохранения переменной, но это 1 такт, так что шанс чего-то потерять минимален
Evgen
И ничего не терялось нигде
хз. Может ты до этого еще не догадался
iҚØN🐾🐾
Под капотом была та же реализация барьера
iҚØN🐾🐾
Наверное.
Evgen
Наверное.
ну а на LPC фейковые прерывания прилетали. Например, два раза подряд по переднему без прерывания по заднему. При том, что частота дребезга низкая... В общем понял...из прерывания ногу читать - не ошибешься
iҚØN🐾🐾
У меня подобное было, кондер решил все вопросы
Evgen
Ну это костыль как-бы. А ты уверен, что дребезга не было или помех? Если там кнопочка, был ли кондер параллельно?
это как раз борьба с механическми дребезгом была. Сначала на объекте, потом просто имитировали механическим концевиком на пружинке. Времена там были порядка 10 мс.
iҚØN🐾🐾
Ну блин, это может быть решено как задержкой программной, так и аппаратной (кондером)
iҚØN🐾🐾
Проверяется элементарно: в разрыв ставишь оптрон и светиком дергаешь через кнопку. Сразу видно, это дребезг или баг чипа
Evgen
не баг чипа, а документрованное в еррате поведение. Насколько я помню
iҚØN🐾🐾
Ну это и есть документированный баг чипа)))
SSR
Ну это и есть документированный баг чипа)))
Он экстраполировал предыдущий опыт и применил ко всему на свете
Evgen
Ну это и есть документированный баг чипа)))
а пес его знает - баг это или как те самые потери прерываний... типа высокочастотная наводка от мобильника
SSR
Я бы забил уже :D
iҚØN🐾🐾
Мы порой так же делаем, не?)
SSR
Мы порой так же делаем, не?)
Ну был конкретный вопрос, на что поступил прям конкретный ответ, но началось это мне не нравится, а на каких-то устройствах всё сломалось
iҚØN🐾🐾
Было время, когда мобилы создавали помехи на мыши и клавы)
iҚØN🐾🐾
Я один раз так чуть не набрал rm -rf / на проде)
iҚØN🐾🐾
Мобила лежала на проводах клавы и мыши и кто-то позвонил... клава начала нажимать что попало, верх-вниз, ентеры, мыша по экрану скакать и что-то кликать
SSR
Мобила лежала на проводах клавы и мыши и кто-то позвонил... клава начала нажимать что попало, верх-вниз, ентеры, мыша по экрану скакать и что-то кликать
Я однажды чая добротно плеснул на клаву, а дорабатывать как-то надо было, пришлось доказывать лиду, что я трезвый🤡
iҚØN🐾🐾
Самое фиговое, что звонить он стал через 1-2 сек, а до этого пока соединялся была тишина, но при этом наводки уже были и я не мог понять, что происходит вообще)))
iҚØN🐾🐾
Обычно после чая выживает, а вот после кофе или колы - это все.
iҚØN🐾🐾
На работе сотрудник шел и жёпой чуток толкнул стол, полстакана кофе на клаву вылил. Он типа салфетками протер и спокойно ушел) прихожу - полклавы работает, половина нет) а потом он такой приходит и: нуу, эта, ммм, я тут чуток пролил колы на клаву, только чуток! Я быстренько вытер! Разобрал - а там уже дорожки зеленые))
SSR
Но клава дешёвая была, спасать смысла не было
iҚØN🐾🐾
А мне обидно было, это была легендарная мицуми классик)
iҚØN🐾🐾
Щас конечно другая клава ванлав - A4Tech KV-300H
SSR
Я что-то пока не нашёл свою любовь :D Уже подумываю самому попробовать сделать
iҚØN🐾🐾
Попробуй KV-300H, влюбишься)
Evgen
Мобила лежала на проводах клавы и мыши и кто-то позвонил... клава начала нажимать что попало, верх-вниз, ентеры, мыша по экрану скакать и что-то кликать
у нас есть оптические сканаторы с моторами с обратной связью на гальванических подвесах. Так вот они очень четко на подобное реагируют на вполне звуковых частотах
Ruslan
Маковская клава
iҚØN🐾🐾
Маковская клава
Более неудобной клавы еще не видел)
iҚØN🐾🐾
Плюёмся, но используем)
Evgen
а вот скажите мне, господа медиумы... почему частота вызова loop() одинакова для esp32 и esp8266... вот такое вызывается с частотой примерно 120кГц int n1=1, n2=1; static int in1=0,in2=0, state=0; void loop() { if(state) { in1++; if(in1 == n1) { state = 0; in1 = 0; digitalWrite(LED_BUILTIN, state); } } else { in2++; if(in2 == n2) { state = 1; in2 = 0; digitalWrite(LED_BUILTIN, state); } } }
Ruslan
Еще есть такая на кухонном компе, но так себе
Indr1x
ну а как это делать если у контроллера нет функции захвата таймера. на esp там или не на esp, какая разница
Indr1x
Это же речь не про cnt ?
не знаю что такое cnt, речь про Input Capture Pin например в семействе avr
Indr1x
у Stm есть что то похожее
Indr1x
определить длинну импульса используя esp32
ok-home
Какие проблемы?
да собственно никаких - кроме никакой точности и нагрузки на мозги - есть аппаратные решения встроенные в контроллер.
Indr1x
читаем RMT - там много чего интересного измерить можно
да это теже яйца только в профиль When an RMT channel finishes transmitting or receiving, a specific event will be generated and notify the CPU by interrupt.