Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.04.2011, 20:24
|
|
Временная регистрация
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
Кнопка герконовая будет.
Дело не в языке. Я в алгоритм никак не въеду.
|
|
|
|
15.04.2011, 20:27
|
|
Прописка
Регистрация: 25.08.2007
Сообщений: 193
Сказал спасибо: 11
Сказали Спасибо 57 раз(а) в 33 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
Сообщение от Easyrider83
|
Дребезг устранять програмно - очень много кода выйдет.
|
Хороший прикол!
|
|
|
|
15.04.2011, 20:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
Придумайте свой.
Ваш предыдущий код и должен работать именно так, как Вы описали.
Как бы я написал Ваш код - именно по инвертированию.
Ни в каких симуляторах не проверял, возможны ошибки.
PHP код:
|
{
TCNT0=0xB2;
if (!button)// если кнопка нажата
{
if(!first) // и флаг сброшен
{
first=1; // ставим флаг счета
timer_count=0; // обнуляем счетчик
}
else
{
timer_count++; // увеличиваем счетчик антидребезга
if (timer_count › MAX_ANTI)//проверяем его
{
PORTB.3^=1;
first=0; // сбрасываем флаг
}
}
}
else // кнопка отжата
{
if(first) // но флаг взведен
{
if(timer_count)timer_count--;// уменьшаем счетчик антидребезга
else first=0; // если можно, если нельзя сбрасываем флаг
}
}
}
//-----------------------------------------
|
|
|
|
|
15.04.2011, 20:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
Сообщение от Easyrider83
|
Просто глубое отвращение как к самим камням
|
И совершенно напрасно. Споров заводить не собираюсь, только скажу, что каждый камень хорош по-своему. Подавление дребезга программно - нормальная практика. Подавлять его ёмкостями как раз непрофессионально. А дребезг имеет все, чья масса отлична от нуля. Без него, наверное, только оптика и магнитные датчики работают.
poligon_85, если всё ещё интересно, объясню, почему так, а не иначе.
|
|
|
|
15.04.2011, 20:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
Сообщение от urry
|
Ваш предыдущий код и должен работать именно так, как Вы описали.
|
urry, Вы кому это?
|
|
|
|
15.04.2011, 20:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
poligon_85, его предыдущий код.
|
|
|
|
15.04.2011, 20:41
|
|
Временная регистрация
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
urry, не работает ваш код. На момент нажатия светодиод загорается, отпускаешь - гаснет. Или срабатывает всё через раз. При удержании моргает. MAX_ANTI сделал 9, т.е. время антидребезга 100 мс.
P.S. Я хочу сделать таким же образом, т.е. понимаю приведенный вами алгоритм, но не понимаю почему он не работает.
Последний раз редактировалось poligon_85; 15.04.2011 в 20:46.
|
|
|
|
15.04.2011, 20:51
|
|
Прописка
Регистрация: 25.08.2007
Сообщений: 193
Сказал спасибо: 11
Сказали Спасибо 57 раз(а) в 33 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
Сообщение от poligon_85
|
MAX_ANTI сделал 9, т.е. время антидребезга 100 мс.
|
poligon_85, Вы нас запутываете. Вы в реале проверяете или в Proteus? В Proteus у кнопок нет никакого дребезга.
|
|
|
|
15.04.2011, 20:57
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
Сообщение от Easyrider83
|
Да есть у меня все для работы в АВР. Проблема-то не в этом. Просто глубое отвращение как к самим камням, так и к тем людям, которые писали документации.
|
Камни как камни, вы их просто грызть не умеете...
Цитата:
|
Дребезг устранять програмно - очень много кода выйдет. Не мучайтесь, поставьте конденсатор. К тому же, мембранные кнопки с щелчком дребезга почти не имеют. Не знаю, как их надо нажимать, чтобы они дребезжали.
|
Не давайте дурных советов...
|
|
|
|
15.04.2011, 21:02
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?
2poligon_85
Вас переклинило... вы зациклились, при таком раскладе в голову ничего не полезет...
Займитесь чем-то другим, переключитесь... отдохните...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:27.
|
|