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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 12.06.2013, 14:39  
Uragan90
Почётный гражданин KAZUS.RU
 
Аватар для Uragan90
 
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
Uragan90 на пути к лучшему
По умолчанию Многофункциональная кнопка

Здравствуйте!!!
Пишу обработчик нажатия на кнопку и встретился с трудностью определения "долгого и короткого" нажатия на кнопку.
По сути нужно написать код обработчика в котором учитывается продолжительность нажатия с целью запуска разного рода действий...
Задача:
1) При нажатии на кнопку коротким толчком (если это именно нажатие, а не дребезг)- зажечь светодиод чтоб он горел постоянно пока не будет еще раз нажата кнопка, причём любой продолжительности (при этом светодиод должен погаснуть)!
2) Если нажать на кнопку и удерживать её "долго" (порядка 3-5сек.) - светодиод должен гореть, но лишь пока мы удерживаем кнопку.
Как только отпустили кнопку светодиод тут же должен гаснуть!
Я написал код, но он работает коряво и через раз, в протеусе светодиод ведёт себя не культурно- моргает как попало
Помогите оформить идейку советом, примером ну или хоть как то

PHP код:

if (PINB.0==0){ // если нажали на кнопку то...
    
delay_ms(50);     // задержка
    
    
if (PINB.0==0){ // если не дребезг то...
        
flags=1;          // выставляем флаг нажатия и...
        
count++;            // увеличиваем счетчик
    
        
if (count20){   // если count больше 20 (долгое удержание кнопки), то...
             
while(PINB.0==0){led_=1;}   // зажигаем светодиод с условием (ГОРИТ) пока держим кнопку
             
led_=0;
             
flags=0;  // сбрасываем флаг нажатия кнопки
             
count=0;    // и сбрасываем счетчик
        
}
    }
    
    if (
PINB.0!=0){ // если отжали кнопку
        
count=0;
        if (
flags==1){   // но флаг был ранее установлен
            
while(PINB.0!=0){led_=1;}   // зажигаем светодиод с условием (ПОСТОЯННО ГОРИТ) пока не нажмем на кнопку
            
led_=0;
            
flags=0;      // сбрасываем флаг нажатия кнопки
        
}
    }

Реклама:
__________________
Я бы изменил весь мир, но бог не дал исходников
Uragan90 вне форума  
Непрочитано 12.06.2013, 14:43  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

https://kazus.ru/forums/showthread.p...F2%EA%EE%E3%EE
omercury вне форума  
Сказали "Спасибо" omercury
Uragan90 (12.06.2013)
Непрочитано 12.06.2013, 14:56  
Uragan90
Почётный гражданин KAZUS.RU
 
Аватар для Uragan90
 
Регистрация: 20.09.2009
Сообщений: 1,899
Сказал спасибо: 470
Сказали Спасибо 408 раз(а) в 255 сообщении(ях)
Uragan90 на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

Там вроде таймер задействован
__________________
Я бы изменил весь мир, но бог не дал исходников
Uragan90 вне форума  
Непрочитано 12.06.2013, 15:18  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

Uragan90, Использую http://www.microchip.su/showpost.php...2&postcount=12
http://www.microchip.su/showpost.php...5&postcount=22
http://www.microchip.su/showpost.php...2&postcount=50
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 12.06.2013 в 15:21.
dosikus вне форума  
Сказали "Спасибо" dosikus
Uragan90 (12.06.2013)
Непрочитано 12.06.2013, 15:28  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

dosikus, ты в какой по счёту программе структуры начал использовать?

Сообщение от Uragan90 Посмотреть сообщение
Там вроде таймер задействован
У тебя системный таймер есть?
Или перебей на задержках, если хочешь. Алгоритм.
omercury вне форума  
Сказали "Спасибо" omercury
Uragan90 (12.06.2013)
Непрочитано 12.06.2013, 15:34  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

На АВР в качестве системного таймера прекрасно работает вачдог
Заодно потребление минимально
niXto вне форума  
Непрочитано 12.06.2013, 15:36  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

Сообщение от omercury Посмотреть сообщение
dosikus, ты в какой по счёту программе структуры начал использовать?
Дык, ну перебить на просто переменные .
Пощадим Ураганчика ...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 12.06.2013 в 15:39.
dosikus вне форума  
Непрочитано 12.06.2013, 15:46  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

Кстати о кнопках . Засвечу , хоть и без отслеживания длительности .
Давилка дребезга на вертикальных счетчиках . Сразу 8 кнопок .
Код:
volatile unsigned char  input,flag_100ms,count_10ms;
...
Код:
void interrupt low_priority tmr1_ov(void)
{

    static unsigned char tick_count, in_state, in_cnt0, in_cnt1;
    unsigned char in_delta, in_toggle;


    if (TMR1IE && TMR1IF) {
        TMR1IF = 0;
       
        TMR1 = (TMR1_RELOAD-TMR1_OVHEAD);
      
        if ((++tick_count) == 10) {
            tick_count = 0;
            if(++count_10ms==10){
             count_10ms=0;
            flag_100ms=1;
            }
        
            in_delta = (~IN_PORT) ^ in_state;
            in_cnt1 = in_cnt1 ^ in_cnt0;
            in_cnt0 = ~in_cnt0;
            in_cnt0 &= in_delta;
            in_cnt1 &= in_delta;
            in_toggle = in_cnt0 & in_cnt1;
            in_state ^= in_toggle;
            input = in_state;


        }
        return;
    }
   
}
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 12.06.2013, 15:59  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

Сообщение от dosikus Посмотреть сообщение
Использую
Тестер, конечно, молодец, но моя чуть менее ресурсоёмкая и в прерывании не висит. Но это из-за подхода - у меня кейпресс, у него кейскан. Как библиотечная функция его универсальней.
omercury вне форума  
Непрочитано 12.06.2013, 16:02  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Многофункциональная кнопка

omercury, Здесь приаттач плиз, лениво по той ветке скакать.
__________________
Осторожно , злой кот
dosikus вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопка start -stop man19320 Электроника средств транспорта 24 30.12.2013 16:06
Не опрашивается вторая кнопка. Attiny2313/ putmannn Микроконтроллеры, АЦП, память и т.д 8 02.02.2011 02:40
Сенсорная кнопка на авр yarunt Микроконтроллеры, АЦП, память и т.д 1 20.11.2010 21:01
Плоская кнопка /датчик/ веса человека - как? DDimon Электроника - это просто 26 29.01.2010 22:09
Atmega 16 не работает кнопка через порт PC4 ? uriy-ch Микроконтроллеры, АЦП, память и т.д 16 14.01.2009 21:42


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


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