Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Опрос кнопок микроконтроллером
ARV, "понели" - это что и на каком языке?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- Реклама
- Сообщения: 1422
- Зарегистрирован: Вт июн 07, 2011 08:03:18
- Сообщения: 869
- Зарегистрирован: Вт авг 27, 2024 19:11:47
[uquote="OKF",url="/forum/viewtopic.php?p=4665851#p4665851"]Можно и без бабах. Сделал одно, другое, третье, уснул и не проснулся. Где тут цикл?[/uquote]
Одноразовое изделие? Бывает.
Или же в цикл включен мясной человек, который, увидев, что чудо-устройство не подаёт признаков жизни, ткнёт красную кнопочку и перезапустит цикл.
Одноразовое изделие? Бывает.
Или же в цикл включен мясной человек, который, увидев, что чудо-устройство не подаёт признаков жизни, ткнёт красную кнопочку и перезапустит цикл.
Вы меня поражаете... Наверное, я не ошибусь, если скажу, что в известной нам части Солнечной системы Земля нет девайсов, в рабочий цикл которых не был бы включен "мясной" человек...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
[uquote="ARV",url="/forum/viewtopic.php?p=4665951#p4665951"]невозможно программно заставить человека нажать на кнопку.[/uquote]
вы подвергаете сомнению целую профессиональную область,
вся индустрия интернет рекламы предполагает что таки можно
вы подвергаете сомнению целую профессиональную область,
вся индустрия интернет рекламы предполагает что таки можно
- Реклама
- Сообщения: 551
- Зарегистрирован: Ср июн 29, 2022 16:25:45
"Нажми на кнопку - получишь результат!
Твоя мечта осуществится!" (ц) Технология
Твоя мечта осуществится!" (ц) Технология
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Я не ИИ, поэтому могу ошибаться.
[uquote="AlexS4",url="/forum/viewtopic.php?p=4666739#p4666739"][uquote="ARV",url="/forum/viewtopic.php?p=4665951#p4665951"]невозможно программно заставить человека нажать на кнопку.[/uquote]
вы подвергаете сомнению целую профессиональную область,
вся индустрия интернет рекламы предполагает что таки можно
[/uquote]
Предполагать можно всё, что угодно. Реальность доказывает, что нажимают единицы из тысяч. Процент дебилов никогда не был и не будет равен нулю...
вы подвергаете сомнению целую профессиональную область,
вся индустрия интернет рекламы предполагает что таки можно
Предполагать можно всё, что угодно. Реальность доказывает, что нажимают единицы из тысяч. Процент дебилов никогда не был и не будет равен нулю...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
К примеру вылезла хренова рекламна заставка, а убрать ее таки кнопкой надо (или убрать или программу закрыть)...
Вот и таки "заставили кнопку нажать".

Вот и таки "заставили кнопку нажать".
[uquote="BOB51",url="/forum/viewtopic.php?p=4667758#p4667758"]К примеру вылезла хренова рекламна заставка[/uquote] ... в микроконтроллерном устройстве? Чур меня !

Спойлер
У нас в отдел купили новую микро-ЭВМ (так тогда называлось, это 90-е годы) . Собрали, включили. Вдруг защёлкал Consul (теперь это назвали бы принтер, а тогда - устройство вывода) и выдал: "Ышук доил Аиду". И замолк. Все выпали в осадок. Дело в том, что фамилия одного из инженеров в отделе была Ищук, а Аида - это была марка японского робота, которого пытались клонировать в соседнем КБ.
Последний раз редактировалось Jack_A Вс янв 05, 2025 11:36:12, всего редактировалось 1 раз.
- Сообщения: 869
- Зарегистрирован: Вт авг 27, 2024 19:11:47
[uquote="ARV",url="/forum/viewtopic.php?p=4666198#p4666198"]Вы меня поражаете... Наверное, я не ошибусь, если скажу, что в известной нам части Солнечной системы Земля нет девайсов, в рабочий цикл которых не был бы включен "мясной" человек...[/uquote]
Извините, поражать не хотел. Ну а насчёт непременной необходимости мясных человеков для действия - https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 1%80%C2%BB
Извините, поражать не хотел. Ну а насчёт непременной необходимости мясных человеков для действия - https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 1%80%C2%BB
- Сообщения: 551
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Кожаных же )))Огонёк писал(а):непременной необходимости мясных человеков
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Я не ИИ, поэтому могу ошибаться.
[uquote="Огонёк",url="/forum/viewtopic.php?p=4667876#p4667876"][uquote="ARV",url="/forum/viewtopic.php?p=4666198#p4666198"]Вы меня поражаете... Наверное, я не ошибусь, если скажу, что в известной нам части Солнечной системы Земля нет девайсов, в рабочий цикл которых не был бы включен "мясной" человек...[/uquote]
Извините, поражать не хотел. Ну а насчёт непременной необходимости мясных человеков для действия - https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 1%80%C2%BB[/uquote]вот еще сказок тут не хватало... Википедия и без того тот еще источник, так ещё и каждое второе слово "предположительно"
Извините, поражать не хотел. Ну а насчёт непременной необходимости мясных человеков для действия - https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 1%80%C2%BB[/uquote]вот еще сказок тут не хватало... Википедия и без того тот еще источник, так ещё и каждое второе слово "предположительно"
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1422
- Зарегистрирован: Вт июн 07, 2011 08:03:18
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4667901#p4667901"]Кожаных же )))[/uquote]
"...хотел пробить сильно и точно, да неудачно лёг на ногу его кожаный дружок". Футбол, вспомнилось.))
"...хотел пробить сильно и точно, да неудачно лёг на ногу его кожаный дружок". Футбол, вспомнилось.))
- Сообщения: 551
- Зарегистрирован: Ср июн 29, 2022 16:25:45
OKF, ну мне больше вспомнилась озвучка от лица роботов из бостон дайнемикс - "...кожаные ублюдки..."
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Я не ИИ, поэтому могу ошибаться.
- Сообщения: 1422
- Зарегистрирован: Вт июн 07, 2011 08:03:18
Теперь по теме.)
Код: Выделить всё
// Кнопки без дребезга
uint8_t keyTick() {
static uint8_t timer;
static uint8_t old;
static uint8_t valid;
uint8_t key = get_key();
if (old != key) { //change
old = key;
timer = DEBOUNCE_TIME;
}
else if (timer && !--timer && valid != key)
valid = key;
return valid;
}
- Сообщения: 551
- Зарегистрирован: Ср июн 29, 2022 16:25:45
OKF, т.е. для каждой кнопки в памяти надо держать три байтовых переменных? И тогда для каждой кнопки нужно в keyTick передавать указатель на эти три байта плюс физическое состояние кнопки...
Тогда мой вариант с "гистерезисным" счетчиком экономичнее - один байт на кнопку.
Тут ранее упоминался т.н. вертикальный счетчик - хорош, когда 8 кнопок легко мапятся в один байт. Тогда 3 байта хватает для 8 кнопок.
Тогда мой вариант с "гистерезисным" счетчиком экономичнее - один байт на кнопку.
Тут ранее упоминался т.н. вертикальный счетчик - хорош, когда 8 кнопок легко мапятся в один байт. Тогда 3 байта хватает для 8 кнопок.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Я не ИИ, поэтому могу ошибаться.
Всё зависит от того, какой функционал той кнопке в программе задавать нужно.
Служебных флагов и прочего может быть и побольше.

Служебных флагов и прочего может быть и побольше.
- Сообщения: 570
- Зарегистрирован: Вт окт 01, 2024 15:22:33
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4668178#p4668178"]т.е. для каждой кнопки в памяти надо держать три байтовых переменных?[/uquote]
Если get_key() возвращает состояние 8-ми кнопок, то и работать будет для 8-ми кнопок.
Если get_key() возвращает состояние 8-ми кнопок, то и работать будет для 8-ми кнопок.
С удовольствием послушаю как при помощи 2-х или 3-х битного вертикального счетчика считающего строго до 4-х или 8-ми задать пороговое значение в 30ms для короткого нажатия, 150ms для автоповтора и 700ms для длинного нажатия )Just_Fluffy писал(а):Тогда мой вариант с "гистерезисным" счетчиком экономичнее - один байт на кнопку.
Тут ранее упоминался т.н. вертикальный счетчик - хорош, когда 8 кнопок легко мапятся в один байт. Тогда 3 байта хватает для 8 кнопок.
- Сообщения: 551
- Зарегистрирован: Ср июн 29, 2022 16:25:45
там как минимум timer должен быть индивидуален для каждой кнопки. И длинное/короткое нажатие в коде OKF тоже не предусмотрено, так что не передергивайте.Adrift писал(а):Если get_key() возвращает состояние 8-ми кнопок, то и работать будет для 8-ми кнопок.
Опять же, вырвано из контекста.Adrift писал(а):С удовольствием послушаю как при помощи 2-х или 3-х битного вертикального счетчика считающего строго до 4-х или 8-ми задать пороговое значение в 30ms для короткого нажатия, 150ms для автоповтора и 700ms для длинного нажатия )
Я всего лишь говорила про экономию памяти. А как автоповтор будет реализовывать автор вертикальных счетчиков - вопрос алгоритма)))
А вообще - все зависит от алгоритма. Мне хватает 2 байт на кнопку на короткое/длинное нажатие/автоповтор/пауза перед автоповтором.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Я не ИИ, поэтому могу ошибаться.
Итак, дребезг гасим тем, что опрос ведем периодически с периодом дольше дребезга, допустим, 30 мс.
get_key возвращает результат опроса сразу 8 кнопок
Далее, делаем функцию get_event, которая берет get_key и при помощи единственного счетчика отслеживает: нажатие, отпускание и промежуток между ними.
Таким образом, имеем минимум накладных расходов и работаем с событиями: ИЗМЕНИЛОСЬ_СОСТОЯНИЕ_КНОПОК и СОСТОЯНИЕ_НЕ_МЕНЯЕТСЯ_ДОЛГО.
То есть отслеживаем и долгое удержание кнопки, и короткое.
Раз и навсегда такое написали, и горя больше не знаем. Опрос можно повесить на любой таймер, который всё равно наверняка будет в любом проекте. И тему можно закрывать
Добавлено after 7 minutes 47 seconds:
Дополнение: get_key может возвращать до 255 кнопок, но в этом случае комбинации одновременно нажатых кнопок могут быть недоступны.
Я больше вариантов навешиваю на get_event, формируя там из комбинаций готовые события. Тогда в разных проектах почти всё одинаково делается, только события могут быть разные. И туда, кстати, очень хорошо вписываются события от энкодера, команды из USART, прерываний и т.п., вся обработка однотипная выходит
get_key возвращает результат опроса сразу 8 кнопок
Далее, делаем функцию get_event, которая берет get_key и при помощи единственного счетчика отслеживает: нажатие, отпускание и промежуток между ними.
Таким образом, имеем минимум накладных расходов и работаем с событиями: ИЗМЕНИЛОСЬ_СОСТОЯНИЕ_КНОПОК и СОСТОЯНИЕ_НЕ_МЕНЯЕТСЯ_ДОЛГО.
То есть отслеживаем и долгое удержание кнопки, и короткое.
Раз и навсегда такое написали, и горя больше не знаем. Опрос можно повесить на любой таймер, который всё равно наверняка будет в любом проекте. И тему можно закрывать
Добавлено after 7 minutes 47 seconds:
Дополнение: get_key может возвращать до 255 кнопок, но в этом случае комбинации одновременно нажатых кнопок могут быть недоступны.
Я больше вариантов навешиваю на get_event, формируя там из комбинаций готовые события. Тогда в разных проектах почти всё одинаково делается, только события могут быть разные. И туда, кстати, очень хорошо вписываются события от энкодера, команды из USART, прерываний и т.п., вся обработка однотипная выходит
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!



