Страница 2 из 2

СообщениеДобавлено: 18 апр 2016, 08:24
lizard66
AlekseiKO писал(а):В меню выбираю значение "частоту" и начинаю ее повышать или уменьшать. Но при нажатии на кнопку значение прыгает через 1 и даже больше. (Пример: 20, 23, 25, 27, 30)
И если быстро быстро, резко резко , нажать на кнопку то только тогда как положено на 1 деление переключается.

Так вот вопрос. Время нажатия на кнопку чем определятся ? В коде программы? Или же номиналами деталей какими то?

Спасибо

С дребезгом можно бороться как программно, так и аппаратно, чаще программно. В данном случае его побороли плохо, либо кнопки убитые.
Схему покажите.

СообщениеДобавлено: 18 апр 2016, 12:23
AlekseiKO
Кнопки вроде нормальные. пробывал ставить другую. так же было.
схемку накидал почти от руки,на скоряк. За исключение некоторых мелочей стандартных.

СообщениеДобавлено: 18 апр 2016, 13:12
slav0n
Самое простое, если писатель прошивки не забыл включить встроенные в мегу подтягивающие резисторы, то внешние на 1к можно вообще убрать, а параллельно кнопкам поставить конденсаторы. Если же внутренние подтяжки не задействованы, то внешние надо поставить на 20-50к, чтобы не завышать емкость сглаживающих кондеров. Эту емкость подобрать экспериментально, начиная примерно от 0.01мкФ.

Re: Исходники, алгоритмы.

СообщениеДобавлено: 18 апр 2016, 14:56
lizard66
Ну, аппаратным антидребезгом тут не пахнет, а на PORTC автор мог и АЦП с медлинным тактом задействовать в качестве борьбы с дребезгом. Тут либо с софтом копаться, либо на каждую кнопку по Шмидту или RS-триггеру и кнопки с трехконтактные (с перемыканием), либо как Славка рекомендует емкости подобрать

СообщениеДобавлено: 18 апр 2016, 16:34
slav0n
lizard66 писал(а):а на PORTC автор мог и АЦП с медлинным тактом задействовать в качестве борьбы с дребезгом.

обычно делаем счетчик итераций главного цикла.
При нажатии на кнопку счетчик запускается, при отпускании - сбрасывается.
В зависимости от содержимого счетчика решаем что делать.
Например код на сях
Код: Выделить всё
while(1)
   {
      if(btn_prs)//проверяем кнопку
      {
         if(cnt ==10 ||//первое нажатие, антидребезг 10 циклов
            ( cnt >= 70 && (cnt % 20)==10 ))//длительность паузы перед автоповтором (70)
//и  период автоповтора (20)
         {
            //здесь исполняем нажатие
            
         }
         
         cnt++;//инкремент счетчика
      }
      else cnt=0;//сброс счетчика
   
      //бла-бла
   }

Re: Исходники, алгоритмы.

СообщениеДобавлено: 19 апр 2016, 01:11
AlekseiKO
Попробывал еще одну кнопку от мышки. Такая же хня...
Попробывал поставить сначало :
кондер 0.01- без изменений
Выпаял 1к - без изм.
Впаял 27к -без изм.
Поменял кондер 0.1-без изм.

Я так понимаю автар прошивки решил поглумиться...

СообщениеДобавлено: 19 апр 2016, 03:56
slav0n
AlekseiKO писал(а):Я так понимаю автар прошивки решил поглумиться...

возможно просто сбацал по-быстрому в протеусе и всё

Re: Исходники, алгоритмы.

СообщениеДобавлено: 19 апр 2016, 05:25
AlekseiKO
Кстати в архиве есть фаил протеуса. Только я в нем ни разу не работал!
Он своего рода исходник?

Re: Исходники, алгоритмы.

СообщениеДобавлено: 19 апр 2016, 07:00
slav0n
AlekseiKO писал(а):Он своего рода исходник?

нет