Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 20.03.2013, 19:41  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от tempora Посмотреть сообщение
По байту под каждую кнопку - многовато, на мой взгляд, да и по одному if-els'у с одним инкрементом - тоже.
Как известно, человек - самое медленное периферийное устройство, поэтому, нажатие кнопок, в масштабе времени м/к, можно рассматривать как одну ситуацию для всех кнопок. При таком подходе можно:
- всю коллекцию кнопок упрятать в одну переменную,
- отрабатывать антидребезг одним счетчиком,
- проверять окончание дребезга одним на все кнопки набором операторов if-else.
main idea моего предложения не в количестве переменных и медлительности человека. Суть в разделении процессов. Поверхностное чтение моего поста не дало вам в это вникнуть. Кстати, сия идея, сам скелет, вовсе не мой. Просто я нашел ее как наиболее подходящюю под мои условия. А идея разделения процессов сама по себе красива. Что я и предложил, идею, а не "количество байт экономить". Это уже вопрос реализации.
Реклама:
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 20.03.2013, 19:47  
woroba
Гражданин KAZUS.RU
 
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
woroba на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от Yurkin2007 Посмотреть сообщение
Мне кажется всё это ни к чему. Механический дребезг присущ всем кнопкам, тут спорить трудно. Первые несколько милисекунд (не более 5мс) сигнал от нажатия прыгает вверх-вниз, может создаться ощущение, что пользователь многократно нажал кнопку.
Так опрашивайте клаву с периодом большим, чем дребезг, например 20мс, или 50 раз в секунду. И всего делов-то.
Это если на столе или на макетке.
А в оборудовании со временем кнопки становятся такими, что дребезг не кончается пока кнопка нажата, поэтому только мажоритарные выборки, если не хотите проблем в будущем.
__________________
Не ошибается лишь тот, кто ни чего не делает!
woroba вне форума  
Непрочитано 20.03.2013, 19:59  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от Yurkin2007 Посмотреть сообщение
Так опрашивайте клаву с периодом большим, чем дребезг, например 20мс, или 50 раз в секунду. И всего делов-то.
Из года в год одна и та же ересь. Нельзя так делать.

Кнопка - механический контакт, и если при отсутствии нажатия ложные срабатывания могут быть зафиксированы только от импульсных помех, то при нажатии появляется эффект шороха - кратковременной потери контакта. Со временем контакты кнопки окисляются, расшатываются, деформируются от частых нажатий и т.д. И чем дальше, тем больше будет влияние этого эффекта, который без должного программного подавления (того самого, со счетчиками и буферами), будет приводить к ложным срабатываниям.
testerplus вне форума  
Непрочитано 20.03.2013, 20:15  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от ut1wpr Посмотреть сообщение
main idea моего предложения не в количестве переменных...
Этой main idea в обед - сто лет, да и не ваша она, не льстите себе. И именно потому, что она давно уже стала общим местом, я говорил лишь о деталях её реализации.
Сообщение от ut1wpr Посмотреть сообщение
Поверхностное чтение моего поста не дало вам в это вникнуть.
Не надо своё ЧСВ повсюду раскладывать - тогда и наступать на него не будут. Извините за прямоту, но вы меня вынудили.

Как это вы там насчет апломба-то говорили?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 20.03.2013, 21:05  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от tempora Посмотреть сообщение
Этой main idea в обед - сто лет, да и не ваша она, не льстите себе. И именно потому, что она давно уже стала общим местом, я говорил лишь о деталях её реализации.
Не надо своё ЧСВ повсюду раскладывать - тогда и наступать на него не будут. Извините за прямоту, но вы меня вынудили.

Как это вы там насчет апломба-то говорили?
В моем посте было честно сказано - не моя. Тонко подметили. Все остальное - попытка подброса г..на на вентилятор. Извините, я отхожу от вентилятора. Брызгайте в другие стороны.
Никак не пойму, почему вы так сразу на личности старайтесь перейти? Недостаток других аргументов?
Пожалуйста, не утруждайте себя ответами на эти два вопроса. Они риторические.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 20.03.2013, 21:42  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от ut1wpr Посмотреть сообщение
В моем посте было честно сказано...
Цитирую еще раз:
Сообщение от ut1wpr Посмотреть сообщение
main idea моего предложения ...
Остальное было дописано позже по тексту.
Сообщение от ut1wpr Посмотреть сообщение
Все остальное - попытка подброса г..на на вентилятор.
почему вы так сразу на личности старайтесь перейти?
Это вопрос не ко мне, а к автору другого, более раннего высказывания:
Сообщение от ut1wpr Посмотреть сообщение
Поверхностное чтение моего поста не дало вам в это вникнуть.
Вот с ним и обсуждайте, что он бросает на вентилятор и почему у него нет аргументов.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 20.03.2013, 23:23  
Frensis777
Прописка
 
Аватар для Frensis777
 
Регистрация: 15.03.2009
Сообщений: 162
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Frensis777 на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от tempora Посмотреть сообщение
Сообщение от ut1wpr Посмотреть сообщение
В моем посте было честно сказано...
Цитирую еще раз:
Сообщение от ut1wpr Посмотреть сообщение
main idea моего предложения ...
Остальное было дописано позже по тексту.
Сообщение от ut1wpr Посмотреть сообщение
Все остальное - попытка подброса г..на на вентилятор.
почему вы так сразу на личности старайтесь перейти?
Это вопрос не ко мне, а к автору другого, более раннего высказывания:
Сообщение от ut1wpr Посмотреть сообщение
Поверхностное чтение моего поста не дало вам в это вникнуть.
Вот с ним и обсуждайте, что он бросает на вентилятор и почему у него нет аргументов.
Товарищи! Я прошу тишины. Дайте высказаться каждому и не переходите на личности. Попрошу вести диалог в рамках приличия, так сказать. Товарищи, будьте вежливы друг другу, умейте выслушивать друг друга. Мы здесь собрались, товарищи, на этом прекрасном форуме Kazus.ru, чтобы пообсуждать тематические вопросы; и это не место, где можно разводить флуд и поливать грязью друг друга. Спасибо за внимание!

А теперь, собственно, хочу подкинуть Вам, уважаемые товарищи, следующую пищу для размышления. Меня интересует вопрос, как рационально написать следующий код. Требуется, чтобы при длительном нажатии на одну из кнопок, происходило линейное инкрементирование переменной-счетчика с определенной(низкой ) частотой(допустим 2 Гц.) Приведу пример. Допустим, на многих бытовых музыкальных устройствах/телефонах при длительном нажатии на одну из клавиш, громкость линейно увеличивается, при нажатии на другой-линейно уменьшается. Меня интересует реализации такого плана. Можете даже код не приводить; достаточно будет привести алгоритм работы этой микропрограммки.
Предлагайте Ваши мнения, товарищи! С удовольствием выслушаю.
Frensis777 вне форума  
Непрочитано 20.03.2013, 23:35  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию 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 в зависимости от состояния. Ну принцип понятен, я думаю. Но процедура такого рода должна обрабатываться только в основном цикле.
Easyrider83 вне форума  
Непрочитано 21.03.2013, 00:30  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от Frensis777 Посмотреть сообщение
Предлагайте Ваши мнения, товарищи! С удовольствием выслушаю.
Логичнее другой сценарий - вы, осмыслив все ранее предложенные варианты, решаете свою задачу и представляете своё решение здесь, чтобы получить обратную связь. Будет ли она положительной зависит от того, как внимательно вы слушали и как качественно усваивали.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 21.03.2013, 00:46  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Опрос кнопки/клавиатуры

Сообщение от omercury Посмотреть сообщение
Алгоритм обработки таков: Структура обработчика прерывания
Если кнопка нажата
...Если флаг не установлен -› установить флаг. выход.
...Если флаг установлен -› инкремент счетчика.
......Если счётчик досчитал до длинного нажатия -› начинаем менять компаратор ШИМ. Декремент счётчика(увеличивать-то его больше никчему). выход.
Если кнопка не нажата -› проверяем флаг состояния кнопки
...Если флаг установлен - › проверяем счётчик времени нажатия кнопки
......Если меньше длинного
.........Если больше минимального времени -› включаем/выключаем фонарь. сброс переменных. выход.
.........Иначе - это был "дребезг". сброс переменных. выход.
...Если флаг не установлен -› сброс переменных. выход.
Стас рекомендовал вот это.
http://www.elektronika.lt/_sys/stora...ktronikaLT.zip
omercury вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опрос кнопки на atmega 16 2517212 Микроконтроллеры, АЦП, память и т.д 10 31.03.2012 10:22
Опрос клавиатуры ra0wbj Микроконтроллеры, АЦП, память и т.д 3 13.10.2011 21:40
Опрос матричной клавиатурки serb-radio Электроника - это просто 2 31.07.2009 16:32
Опрос удалённых датчиков. picavr Микроконтроллеры, АЦП, память и т.д 6 20.03.2009 01:09
Опрос кнопки Electric111 Микроконтроллеры, АЦП, память и т.д 15 18.12.2007 22:48


Часовой пояс GMT +4, время: 03:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot