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

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

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

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

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

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

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

 
Опции темы
Непрочитано 19.02.2015, 19:22  
proba60
Вид на жительство
 
Аватар для proba60
 
Регистрация: 26.10.2009
Сообщений: 379
Сказал спасибо: 47
Сказали Спасибо 146 раз(а) в 93 сообщении(ях)
proba60 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

У меня получилось так.(в программировании я новичёк )
Вложения:
Тип файла: rar kn.rar (60.8 Кб, 28 просмотров)
Реклама:
__________________
..истина где то рядом..
proba60 вне форума  
Непрочитано 19.02.2015, 22:02  
3d cube
Гражданин KAZUS.RU
 
Регистрация: 27.11.2012
Адрес: 30км от Софии
Сообщений: 732
Сказал спасибо: 89
Сказали Спасибо 310 раз(а) в 180 сообщении(ях)
3d cube на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сие простейший интегратор. Тоесть убирает помехи и дербезг конопок.
Надо выбрать период слежения за состоянием входа. Важно. Ну и пороги переключения бита ноги по состоянию счетчиков. 100 200 так написал. В реале 70-120. Или как попадется. По реалиям.
3d cube вне форума  
Непрочитано 19.02.2015, 22:03  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от prosto_andriy Посмотреть сообщение
Правильнее всего наверно
Возможно, но в лоб это не решить - у Вас каждая смена состояния кнопки сопровождается "дребезгом". Отфильтруйте сначала его - чётко зафиксируйте состояние кнопки, а уж потом займитесь логикой обработки изменений её состояния.
Разделяй и властвуй.
omercury вне форума  
Непрочитано 19.02.2015, 22:46  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от proba60 Посмотреть сообщение
У меня получилось так.(в программировании я новичёк )
Всем доброго времени суток.
Я скажу, что в программировании тоже не асс, но некоторые замечания могу сделать.
1. Нет комментариев и поэтому довольно трудно разбираться что есть что. Даже переменные не подписаны.
2.На каждую однобитную переменную тратиться по целому байту.
3. Когда в условии нужно сложить логический результат, а не переменную, то нужно писать по два знака. У тебя записано: if ((kn==0)&(flage==0)), а надо if ((kn==0)&&(flage==0)) в Вашем случае выполняется побитное (И) между двумя переменными.
4. Есть такая строчка DDRC=(1‹‹DDC0); Я так, понял, что Вы хотели установить PORTC.0 как выход. Но надо думать и о других портах. А если бы кроме нулевого бита в регистре были бы еще единицы? Они тогда сбросяться, так как маска 1‹‹0 - это 0b00000001 и если бы какой то пин в этом порту работал как выход, то он станет входом. Если надо изменить один бит, то нужно писать так. при установке DDRC|=1‹‹n, а если сбросить - DDRC&=~(1‹‹n)
PS. И нужно активнее использовать табуляцию, а то трудно разбираться со скобками.

Последний раз редактировалось МВА; 19.02.2015 в 22:59.
МВА вне форума  
Непрочитано 20.02.2015, 00:12  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,969
Сказал спасибо: 2,554
Сказали Спасибо 11,850 раз(а) в 5,938 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от МВА Посмотреть сообщение
в программировании тоже не асс
Одна буква может в корне изменить смысл и даже придать ему комичность. "Ас" - крупный спец, а "асс" (или "ass"), простите, задница.
Сообщение от МВА Посмотреть сообщение
На каждую однобитную переменную тратиться по целому байту.
Не всегда это плохо.
Сообщение от МВА Посмотреть сообщение
в Вашем случае выполняется побитное (И) между двумя переменными.
Между двумя логическими результатами "true" или "false". Такая конструкция может и работать, но лучше так не делать.
Сообщение от МВА Посмотреть сообщение
нужно активнее использовать табуляцию
Нужно правильно вставлять в пост программу.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.

Последний раз редактировалось akegor; 20.02.2015 в 00:22.
akegor вне форума  
Сказали "Спасибо" akegor
МВА (20.02.2015)
Непрочитано 20.02.2015, 09:51  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от akegor Посмотреть сообщение
Одна буква может в корне изменить смысл и даже придать ему комичность. "Ас" - крупный спец, а "асс" (или "ass"), простите, задница.

Не всегда это плохо.

Между двумя логическими результатами "true" или "false". Такая конструкция может и работать, но лучше так не делать.

Нужно правильно вставлять в пост программу.

Всем доброго времени суток.
Спасибо за комментарии, я в программировании, действительно не большой специалист, а так получилось, что большой (не задница). И программы я в пост неправильно вставлял я, но замечание делал по программе из архива в проекте AVR studio.
МВА вне форума  
Непрочитано 21.02.2015, 08:04  
Proshha
Временная регистрация
 
Регистрация: 23.07.2007
Сообщений: 42
Сказал спасибо: 3
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
Proshha на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

ох и любит народ из ничего проблему создать ))
236 постов, когда вопрос решается на трёх МС мелкой логики 564 (ЛА7, ИЕ10, ТМ2) за полчаса пайки. Однобокое мышление, однако...
Proshha вне форума  
Непрочитано 21.02.2015, 08:11  
prosto_andriy
Временная регистрация
 
Регистрация: 25.06.2013
Сообщений: 58
Сказал спасибо: 25
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
prosto_andriy на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от omercury Посмотреть сообщение
...у Вас каждая смена состояния кнопки сопровождается "дребезгом". Отфильтруйте сначала его - чётко зафиксируйте состояние кнопки, а уж потом займитесь логикой обработки изменений её состояния.
Разделяй и властвуй.
Посмотрел Ваш код, и хотя он имеет четкую структуру, я так и не понял, как в нем отфильтровывается дребезг?
Вот функция сканирования кнопки:

PHP код:
void    key_scan(void)
{
    if  
KeyPress                //Если кнопка нажата
    
{                            //Проверим, давно ли её нажали
        
if (KeyNew)             //Если флаг установлен (значит "давно")
        
{                                          
            
count++;          //Увеличиваем счётчик задержки
            
if  (countlongkey//Если длинное нажатие
            
{                                
                
bright_ch();    //Начинаем менять компаратор ШИМ
                
count--;        //Декремент счетчика(увеличивать-то его больше никчему)
                
PWM_on 1;
            }                   
//Выход
        

        else                    
//Нажали только что, на это и укажем
        
{   
            
KeyNew 1;         //Устанавливаем флаг
        
}                       //Выход  
        
systemClock 0;        //Сброс таймаута выключения подсветки
    
}   
    else                        
//Если кнопка не нажата Это может означать,  
    
{       //что её и не нажимали или только что отпустили, вот это и проверим даьше
        
if (KeyNew)             //Если флаг установлен (только что отпустили)
        
{                       //Проверим, до скольки успели досчитать
            
if (countlongkey)  //Если меньше длинного(короткое нажатие)
            
{//Можно было и объединить, но не люблю я двойные условия, МК их всё равно по очереди сделает
                
if (countshortkey//Если больше минимального (короткое, но не дребезг)
                
{                     
                    
led_on_off();   //Включаем/выключаем фонарь
                
}               //Иначе - Это был дребезг
            
}   
            else    {
Dir_on=~Dir_on;}   //Меняем направление изменения яркости
        
}                       
        
clr_var();              //Сброс переменных
    
}                           //Выход  
    
KeyEXE 0;                 //Запрет опроса кнопок   
    #asm("sleep")               //Усыпляем МК

Мне непонятно, когда устанавливается флаг "KeyNew"? Сразу же после нажатия кнопки? А сбрасывается он сразу после её отпускания?
Объясните пожалуйста, если Вас это не затруднит!
prosto_andriy вне форума  
Непрочитано 21.02.2015, 10:34  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от Proshha Посмотреть сообщение
вопрос решается на трёх МС мелкой логики 564 (ЛА7, ИЕ10, ТМ2) за полчаса пайки. Однобокое мышление, однако...
Боюсь, что даже при разнобоком мышлении 3 корпуса и куча внешних элементов займут больше места, чем один мелкий МК
NewWriter вне форума  
Непрочитано 21.02.2015, 10:56  
Proshha
Временная регистрация
 
Регистрация: 23.07.2007
Сообщений: 42
Сказал спасибо: 3
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
Proshha на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от NewWriter Посмотреть сообщение
Боюсь, что даже при разнобоком мышлении 3 корпуса и куча внешних элементов займут больше места, чем один мелкий МК
три кондёра и 6 резисторов против кварца с обвязкой? это "куча внешних"? про потребление я вообще молчу. 564 (планарка, к слову) в статике потребляет микроамперы. а в динамимке она будет только при нажатии. но и в динамике при низкой частоте - потребление не намного больше. в отличии от МК.
Proshha вне форума  
 

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

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

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, время: 18:18.


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