Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.03.2013, 19:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от tempora
|
По байту под каждую кнопку - многовато, на мой взгляд, да и по одному if-els'у с одним инкрементом - тоже.
Как известно, человек - самое медленное периферийное устройство, поэтому, нажатие кнопок, в масштабе времени м/к, можно рассматривать как одну ситуацию для всех кнопок. При таком подходе можно:
- всю коллекцию кнопок упрятать в одну переменную,
- отрабатывать антидребезг одним счетчиком,
- проверять окончание дребезга одним на все кнопки набором операторов if-else.
|
main idea моего предложения не в количестве переменных и медлительности человека. Суть в разделении процессов. Поверхностное чтение моего поста не дало вам в это вникнуть. Кстати, сия идея, сам скелет, вовсе не мой. Просто я нашел ее как наиболее подходящюю под мои условия. А идея разделения процессов сама по себе красива. Что я и предложил, идею, а не "количество байт экономить". Это уже вопрос реализации.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
20.03.2013, 19:47
|
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от Yurkin2007
|
Мне кажется всё это ни к чему. Механический дребезг присущ всем кнопкам, тут спорить трудно. Первые несколько милисекунд (не более 5мс) сигнал от нажатия прыгает вверх-вниз, может создаться ощущение, что пользователь многократно нажал кнопку.
Так опрашивайте клаву с периодом большим, чем дребезг, например 20мс, или 50 раз в секунду. И всего делов-то.
|
Это если на столе или на макетке.
А в оборудовании со временем кнопки становятся такими, что дребезг не кончается пока кнопка нажата, поэтому только мажоритарные выборки, если не хотите проблем в будущем.
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
20.03.2013, 19:59
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от Yurkin2007
|
Так опрашивайте клаву с периодом большим, чем дребезг, например 20мс, или 50 раз в секунду. И всего делов-то.
|
Из года в год одна и та же ересь. Нельзя так делать.
Кнопка - механический контакт, и если при отсутствии нажатия ложные срабатывания могут быть зафиксированы только от импульсных помех, то при нажатии появляется эффект шороха - кратковременной потери контакта. Со временем контакты кнопки окисляются, расшатываются, деформируются от частых нажатий и т.д. И чем дальше, тем больше будет влияние этого эффекта, который без должного программного подавления (того самого, со счетчиками и буферами), будет приводить к ложным срабатываниям.
|
|
|
|
20.03.2013, 20:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от ut1wpr
|
main idea моего предложения не в количестве переменных...
|
Этой main idea в обед - сто лет, да и не ваша она, не льстите себе. И именно потому, что она давно уже стала общим местом, я говорил лишь о деталях её реализации.
Сообщение от ut1wpr
|
Поверхностное чтение моего поста не дало вам в это вникнуть.
|
Не надо своё ЧСВ повсюду раскладывать - тогда и наступать на него не будут. Извините за прямоту, но вы меня вынудили.
Как это вы там насчет апломба-то говорили?
__________________
There's always more than one way to skin a cat.
|
|
|
|
20.03.2013, 21:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от tempora
|
Этой main idea в обед - сто лет, да и не ваша она, не льстите себе. И именно потому, что она давно уже стала общим местом, я говорил лишь о деталях её реализации.
Не надо своё ЧСВ повсюду раскладывать - тогда и наступать на него не будут. Извините за прямоту, но вы меня вынудили.
Как это вы там насчет апломба-то говорили?
|
В моем посте было честно сказано - не моя. Тонко подметили. Все остальное - попытка подброса г..на на вентилятор. Извините, я отхожу от вентилятора. Брызгайте в другие стороны.
Никак не пойму, почему вы так сразу на личности старайтесь перейти? Недостаток других аргументов?
Пожалуйста, не утруждайте себя ответами на эти два вопроса. Они риторические.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
20.03.2013, 21:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от ut1wpr
|
В моем посте было честно сказано...
|
Цитирую еще раз:
Сообщение от ut1wpr
|
main idea моего предложения ...
|
Остальное было дописано позже по тексту.
Сообщение от ut1wpr
|
Все остальное - попытка подброса г..на на вентилятор.
почему вы так сразу на личности старайтесь перейти?
|
Это вопрос не ко мне, а к автору другого, более раннего высказывания:
Сообщение от ut1wpr
|
Поверхностное чтение моего поста не дало вам в это вникнуть.
|
Вот с ним и обсуждайте, что он бросает на вентилятор и почему у него нет аргументов.
__________________
There's always more than one way to skin a cat.
|
|
|
|
20.03.2013, 23:23
|
|
Прописка
Регистрация: 15.03.2009
Сообщений: 162
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от tempora
|
Сообщение от ut1wpr
|
В моем посте было честно сказано...
|
Цитирую еще раз:
Сообщение от ut1wpr
|
main idea моего предложения ...
|
Остальное было дописано позже по тексту.
Сообщение от ut1wpr
|
Все остальное - попытка подброса г..на на вентилятор.
почему вы так сразу на личности старайтесь перейти?
|
Это вопрос не ко мне, а к автору другого, более раннего высказывания:
Сообщение от ut1wpr
|
Поверхностное чтение моего поста не дало вам в это вникнуть.
|
Вот с ним и обсуждайте, что он бросает на вентилятор и почему у него нет аргументов.
|
Товарищи! Я прошу тишины. Дайте высказаться каждому и не переходите на личности. Попрошу вести диалог в рамках приличия, так сказать. Товарищи, будьте вежливы друг другу, умейте выслушивать друг друга. Мы здесь собрались, товарищи, на этом прекрасном форуме Kazus.ru, чтобы пообсуждать тематические вопросы; и это не место, где можно разводить флуд и поливать грязью друг друга. Спасибо за внимание!
А теперь, собственно, хочу подкинуть Вам, уважаемые товарищи, следующую пищу для размышления. Меня интересует вопрос, как рационально написать следующий код. Требуется, чтобы при длительном нажатии на одну из кнопок, происходило линейное инкрементирование переменной-счетчика с определенной(низкой ) частотой(допустим 2 Гц.) Приведу пример. Допустим, на многих бытовых музыкальных устройствах/телефонах при длительном нажатии на одну из клавиш, громкость линейно увеличивается, при нажатии на другой-линейно уменьшается. Меня интересует реализации такого плана. Можете даже код не приводить; достаточно будет привести алгоритм работы этой микропрограммки.
Предлагайте Ваши мнения, товарищи! С удовольствием выслушаю.
|
|
|
|
20.03.2013, 23:35
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Еще я использовал что-то подобное:
Код:
|
u8 Button_Handle (ButtonTypeDef* Button)
{
u8 cnt;
u8 tmp=0;
for (cnt=0;cnt!=0xFF;cnt++)
if (PIN_SYG(Button)) tmp++;
if (tmp›250) return 1;
else return 0;
} |
Ну и числом 250 можно можно подкорректировать фильтрацию. Т.е. к примеру для обычной мембранной кнопки можно смело ставить 253-254. Для графитовой типа как на пультах ДУ 100-200 в зависимости от состояния. Ну принцип понятен, я думаю. Но процедура такого рода должна обрабатываться только в основном цикле.
|
|
|
|
21.03.2013, 00:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от Frensis777
|
Предлагайте Ваши мнения, товарищи! С удовольствием выслушаю.
|
Логичнее другой сценарий - вы, осмыслив все ранее предложенные варианты, решаете свою задачу и представляете своё решение здесь, чтобы получить обратную связь. Будет ли она положительной зависит от того, как внимательно вы слушали и как качественно усваивали.
__________________
There's always more than one way to skin a cat.
|
|
|
|
21.03.2013, 00:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Опрос кнопки/клавиатуры
Сообщение от omercury
|
Алгоритм обработки таков: Структура обработчика прерывания
Если кнопка нажата
...Если флаг не установлен -› установить флаг. выход.
...Если флаг установлен -› инкремент счетчика.
......Если счётчик досчитал до длинного нажатия -› начинаем менять компаратор ШИМ. Декремент счётчика(увеличивать-то его больше никчему). выход.
Если кнопка не нажата -› проверяем флаг состояния кнопки
...Если флаг установлен - › проверяем счётчик времени нажатия кнопки
......Если меньше длинного
.........Если больше минимального времени -› включаем/выключаем фонарь. сброс переменных. выход.
.........Иначе - это был "дребезг". сброс переменных. выход.
...Если флаг не установлен -› сброс переменных. выход.
|
Стас рекомендовал вот это.
http://www.elektronika.lt/_sys/stora...ktronikaLT.zip
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:44.
|
|