
Dr
27.01.2017
17:29:56
или если нагрузки есть неплохие
или станочное говно, или перебои с сетью

Bastad
27.01.2017
17:30:11
Она как ночник только еще цыфорки показывает

Samael
27.01.2017
17:38:58

Google

Bastad
27.01.2017
17:40:49
Не в спальне же
Ну и потом сам видишь что он там показывает)
Так что посмаьривать иногда - удобно

Влад
27.01.2017
17:45:11
Как совместить программно антидребезг и долгое/короткое нажатие? Т.е. чтобы при коротком нажатии вызывалась одна функция, если нажатие дольше определенного времени - другая функция, и все это с защитой от дребезга. Есть процессы и неблокирующие таймеры в них. Не могу придумать адекватный алгоритм

LexsZero
27.01.2017
17:48:29

Samael
27.01.2017
17:48:54

Влад
27.01.2017
17:50:08
не могу, это процессор надо постоянно держать активным, а он у меня спит. мне прерывание по любому фронту приходит, с ним надо работать.

Samael
27.01.2017
17:50:34
А сетевое дома не интересно а на работе в каждой грщ на каждом вводе стоят универсальные

Bastad
27.01.2017
17:52:07
Дома тоже хочется игрушек

LexsZero
27.01.2017
17:52:40

Подполковник
27.01.2017
17:53:35
дребезг это что?

Влад
27.01.2017
17:53:38
системное время, да, есть.

Подполковник
27.01.2017
17:53:39
когда кучу раз нажать?

Google

Samael
27.01.2017
17:53:47

Влад
27.01.2017
17:54:48

Подполковник
27.01.2017
17:54:59
ее

ОлегЪ
27.01.2017
17:55:17
переделал прогер, теперь все по феншую. ман надо?

Samael
27.01.2017
17:55:23
То есть то нет то есть то нет и так очень быстро, аж подгорает

Влад
27.01.2017
17:56:32

LexsZero
27.01.2017
17:57:13
задний - 1->0, в обработчике прерывания смотришь в каком состоянии сейчас нога.

Влад
27.01.2017
17:57:16
нет, нисходящий

LexsZero
27.01.2017
18:00:46
ну это зависит от того куда кнопка замыкает. обычно нога подтянута вверх и кнопка замыкает на землю

Bastad
27.01.2017
18:00:55

Dolphin
27.01.2017
18:05:01
DSO203 кто нить юзает?

Влад
27.01.2017
18:06:08
на землю. это я запутался в заднем и переднем фронтах

Dolphin
27.01.2017
18:06:10
Влад, микро-милисекунды есть?

Влад
27.01.2017
18:08:22
нет, тики системного таймера. один тик ~8мс

Dolphin
27.01.2017
18:10:22
Нах так сложно

Влад
27.01.2017
18:12:22
Теперь усложняем.
Надо событие длинного клика создавать не по окончанию нажатия, а по прошествию 800мс. Т.е. запускаем таймер, который создаст событие через 800мс, а если до этого создалось событие "нажатие", то таймер убиваем. Соотвественно, устанавливаем флаг после срабатывания этого таймера и если он стоит — не генерируем событие "клик" и убираем флаг.
Внимание, вопрос, куда надо воткнуть создание таймера?

Dolphin
27.01.2017
18:14:58
не надо создание таймера, он у тебя системный и тикает. У тебя есть прерывание от кнопки с ним и работаешь

Влад
27.01.2017
18:15:14
ты про что, про лонг-клик?

Google

LexsZero
27.01.2017
18:15:14
да, как-то так

Dolphin
27.01.2017
18:15:34
есть флаг нажатия
в прерывании проверяешь флаг. если он ==0, запоминаешь время

LexsZero
27.01.2017
18:16:09

Dolphin
27.01.2017
18:16:41
если он !=0, вычисляешь время которое прошло

LexsZero
27.01.2017
18:17:09

Dolphin
27.01.2017
18:17:38
а как ты узнаешь тогда - длинное нажатие или короткое?

LexsZero
27.01.2017
18:18:07
если б было короткое - прилетело бы прерывание отпускания раньше

Dolphin
27.01.2017
18:18:19
вот оно и нужно
короче дайте скажу как я делаю а там думайте
прерывание прилетело от кнопки
если флаг ==0 запомнили время

Dolphin
27.01.2017
18:19:11
если не 0, вычисляем сколько прошло
если <50 сброс времени которое запомнили
если >50<800 - короткое нажатие
>800 - длинное
по выходу прерывания - инверсия флага нажатия
все
:)

Влад
27.01.2017
18:22:09
я нажимаю кнопку. держу ее 500мс, держку 800, держу две секунду. У меня не приходит прерывание, потому что состояние не меняется

Google

Dolphin
27.01.2017
18:22:28
нет
по фронту прерывание же
это не по таймеру
а по кнопке
хоть минуту держи
прерывание придет када отпустишь
Алекс?

Влад
27.01.2017
18:24:29
ну

Dolphin
27.01.2017
18:24:31
?

Admin
ERROR: S client not available

Влад
27.01.2017
18:24:39
оно и придет, после отпускания кнопки
а мне надо по истечении времени
когда пользователь должен думать, а сколько ему надо еще держать кнопку для долгого нажатия, это плохой интерфейс
хороший интерфейс не будет требовать от пользователя думать, а создаст событие долгого нажатия еще до отпускания кнопки, заодно и уведомит пользователя реакцией на это событие, что все, кнопку можно уже и отпустить. нажал кнопку, подержал, загорелся свет. значит кнопку можно уже и отпустить

Dolphin
27.01.2017
18:28:42
а ты не боишься вложенности в таком случае?

LexsZero
27.01.2017
18:29:03
не понял нафига нужен флаг

Влад
27.01.2017
18:29:33

Dolphin
27.01.2017
18:30:32
ок, не мешаю, общайтесь я ушел ;)
удач

Google

Влад
27.01.2017
18:31:27

Dolphin
27.01.2017
18:31:52
ну ты сетишь прерывание в прерывании
а в момент когда таймер сработает, юзер отпустит батон
и песда
Завтра пообщаемся, я спать пойду, пообщайтесь, прикольный автомат жеж

Влад
27.01.2017
18:33:27
ну, там либо одно долгое нажатие получится, либо и долгое и короткое

Dolphin
27.01.2017
18:34:11
продумать надо правильно, чтобы не сработали прерывания в один и тот же момент
;)
На мой взгляд, можно в прерывании выставлять флаги, а счетчик времени проверять в главном цикле
и срабатывать не по таймеру, а по достижению счетчика

Влад
27.01.2017
18:36:35
угу, я вот и боюсь гонки. там с остановкой процесса будут проблемы, надо бы тоже на флаг переделать. всмысле, не только убивать процесс, а проверять по истечению флаг срабатывания
а у меня кнопки на батарейках

Тёма
27.01.2017
18:38:18
ребят
я не очень в теме автомобилей и их аккумуляротов, так что вопрос
220 от аккумулятора же можно с инвертором получить?

Влад
27.01.2017
18:39:04
можно

Тёма
27.01.2017
18:39:06
а как подсчитывать, насколько хватит аккума?

Dolphin
27.01.2017
18:39:13
тогда выставлять флаг, что ты подготовил прерывание включения, и в случае если флаг стоит, при выполнении прерывания от кнопки, сразу выход из прерывания (от кнопки).

Тёма
27.01.2017
18:39:38
и если навскидку, 200вт расходовть долго получится на одном аккумуляторе обычном?

Влад
27.01.2017
18:39:58
исходя из мощности устройства, емкости аккумулятора и КПД инвертора.