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

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

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

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

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

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

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

 
Опции темы
Непрочитано 15.04.2011, 21:08  
poligon_85
Временная регистрация
 
Аватар для poligon_85
 
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poligon_85 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от oleg_harp Посмотреть сообщение
poligon_85, Вы нас запутываете. Вы в реале проверяете или в Proteus? В Proteus у кнопок нет никакого дребезга.
Да какой протеус. Конечно в реале. Макетка передо мной
Миниатюры:
Нажмите на изображение для увеличения
Название: DSC04671_.jpg
Просмотров: 57
Размер:	242.4 Кб
ID:	20609  
Реклама:

Последний раз редактировалось poligon_85; 15.04.2011 в 21:15.
poligon_85 вне форума  
Непрочитано 15.04.2011, 21:26  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

ладно, корректируем. Выбираем другой порт выхода - в3 у нас под шим и ставим дополнительный флаг блокировки, чтобы не мигало при нажатой кнопке.
PHP код:
interrupt [TIM0_OVFvoid Time0_ovf_isr(void)
{                                
    
TCNT0=0xB2
    if (!
button)// если кнопка нажата
    
{
        if(!
stp)// и не заблокирована 
        
{
            if(!
first// и флаг сброшен
            
{
                
first=1// ставим флаг счета
                
timer_count=0// обнуляем счетчик 
            
}
            else
            {
                
timer_count++; // увеличиваем счетчик антидребезга
                
if (timer_count › MAX_ANTI)//проверяем его
                
{
                    
PORTB.1^=1;
                    
stp=1;// стопим, пока не рассосется
                
}
            }
        }
    }
    else 
// кнопка отжата
    
{    
        if(
first// но флаг взведен
        
{
            if(
timer_count)timer_count--;// уменьшаем счетчик антидребезга
            
else 
            {
                
first=0;     //  если нельзя сбрасываем флаг cчета
                
stp=0;//     сбрасываем флаг блокировки
            
}        
        }
    }

__________________
warez
urry вне форума  
Непрочитано 15.04.2011, 21:46  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

http://radiokot.ru/forum/viewtopic.php?f=20&t=46290
st_1 вне форума  
Непрочитано 15.04.2011, 21:50  
poligon_85
Временная регистрация
 
Аватар для poligon_85
 
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poligon_85 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от st_1 Посмотреть сообщение
http://radiokot.ru/forum/viewtopic.php?f=20&t=46290
Да да, это тоже я. Но там вообще всё глухо.

urry, всё заработало! Четкая реакция на клавиши. вкл/выкл, и без моргания при удержании
poligon_85 вне форума  
Непрочитано 15.04.2011, 22:04  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

ну, собственно, к теме это никакого отношения не имеет - просто чтобы как бы сказать.. неважно. Разбирайте предложенный Вам ранее код, определитесь с режимами, в которых может находиться фонарик - я вижу 4 - включено, выключено, увеличение яркости и уменьшение яркости . Нарисуйте кружочки, как оно из одного в другое переходит и от чего.
Необходимость записывать в еепром текущее значение яркости я не вижу - Вы можете отправить контроллер в спячку.
__________________
warez
urry вне форума  
Непрочитано 15.04.2011, 22:06  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от poligon_85 Посмотреть сообщение
urry, всё заработало!
Кто бы сомневался...
Проверил в кристалле свой вариант. Работает, но мееееедлеееенноооо.
Поменял в 47 посту. https://kazus.ru/forums/showpost.php...0&postcount=47
А вот видео как работает 11.zip

...это только начало. Дальше будет стабилизация тока через светодиод...

Последний раз редактировалось omercury; 15.04.2011 в 22:11.
omercury вне форума  
Непрочитано 15.04.2011, 22:24  
poligon_85
Временная регистрация
 
Аватар для poligon_85
 
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poligon_85 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от omercury Посмотреть сообщение
Кто бы сомневался...
Проверил в кристалле свой вариант. Работает, но мееееедлеееенноооо.
Поменял в 47 посту. https://kazus.ru/forums/showpost.php...0&postcount=47
А вот видео как работает Вложение 20613
Залил вашу прошивку, светодиод постоянно горит, на кратковременные нажатия не реагирует. При удержании меняется яркость. Че то не то опять

Сообщение от omercury Посмотреть сообщение
...это только начало. Дальше будет стабилизация тока через светодиод...
Стабилизациии не будет, только токоограничивающий резистор 0,33 Ом (аккумуляторы 3.7 вольта, светодиод: 3.4 вольта, 2.8 А (700 мА х 4) max)

Последний раз редактировалось poligon_85; 15.04.2011 в 22:29.
poligon_85 вне форума  
Непрочитано 15.04.2011, 22:35  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Я у себя использую подобную конструкцию, может поможет.

Код:
#define ButtonPin PINB.0
#define ButtonTremor 10
#define ButtonLong 20

volatile bit ButtonPressed = 0;
volatile bit ButtonReleased = 0;

volatile bit ButtonLongPressed = 0;
volatile bit ButtonLongReleased = 0;

volatile bit ButtonPinLast = 1;

volatile unsigned char BtDelayCnt = 0;

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
...
BtDelayCnt++;
if (ButtonPinLast^ButtonPin) BtDelayCnt = 0;
ButtonPinLast = ButtonPin;

if (BtDelayCnt==ButtonTremor)
 {
 if (!ButtonPinLast)
  ButtonPressed = 1;
 else
  ButtonReleased = 1;
 }

if (BtDelayCnt==ButtonLong)
 {
 if (!ButtonPinLast)
  ButtonLongPressed = 1;
 else
  ButtonLongReleased = 1;
 }
...
}

int main
{
...
{
//Обработка кнопок
}
ButtonPressed = ButtonReleased = 0;
ButtonLongPressed = ButtonLongReleased = 0;
...
}
Сильно не пинать - набросал заново, мог и ошибиться.

З.Ы. ButtonTremor и ButtonLong поставьте на свое усмотрение.
AJScorp вне форума  
Непрочитано 15.04.2011, 22:46  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от poligon_85 Посмотреть сообщение
Стабилизациии не будет
Будет. И StepUP преобразователь будет.
PHP код:
#define shortkey  0x50    //80 . Константа - минимум для короткого нажатия
#define longkey   0xF0    //240. Константа - минимум для длинного нажатия
#define PWM_del   0x0F    //15.  Константа задержки изменения яркости 
Поменяйте константы по своему вкусу и откомпилируйте заново. Первая задаёт время(в тактах таймера) короткого нажатия, вторая длинного. Третья регулирует скорость изменения яркости.
omercury вне форума  
Непрочитано 15.04.2011, 22:56  
poligon_85
Временная регистрация
 
Аватар для poligon_85
 
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poligon_85 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от omercury Посмотреть сообщение
Поменяйте константы по своему вкусу и откомпилируйте заново.
PHP код:
#define shortkey  0x3C    //60. Константа - минимум для короткого нажатия
#define longkey   0xFE    //254. Константа - минимум для длинного нажатия
#define PWM_del   0x0A    //10.  Константа задержки изменения яркости 
То же самое

Последний раз редактировалось poligon_85; 15.04.2011 в 22:59.
poligon_85 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Как правильно отследить импульс sdsrem Микроконтроллеры, АЦП, память и т.д 8 17.08.2010 21:28
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33


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


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