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

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

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

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

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

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

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

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

Сообщение от МВА Посмотреть сообщение
А как разбудить МК коротким нажатием, если у него не работает тактовый генератор, да и почти все внутренние устройства?
А очень просто - прерывание по изменению сигнала на входах (кнопочка нажалась) выводит из слипа. Второй вариант - WDT периодически "будит" МК и МК быстренько опрашивает вход, на котором сидит кнопочка, и снова "засыпает", если состояние входа не изменилось. Этот вариант менее экономичный.

PS. Да, при работе ШИМа МК то будет тоже работать, это правда
Реклама:

Последний раз редактировалось NewWriter; 22.02.2015 в 06:45.
NewWriter вне форума  
Непрочитано 22.02.2015, 09:23  
proba60
Вид на жительство
 
Аватар для proba60
 
Регистрация: 26.10.2009
Сообщений: 379
Сказал спасибо: 47
Сказали Спасибо 146 раз(а) в 93 сообщении(ях)
proba60 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от Proshha Посмотреть сообщение
Обычно я такие схемы сразу паяю, поглядывая на разводку в справочнике и прокручивая в голове логику работы
Нарисовал, чтоб не казаться голословным.


Не хочется быть нудным но тем не мение . 1) По условиям ТС изменения яркости должно быть реверсными, а с к561ИЕ10 это не прокатит.
2). Каким образом вы сбросите второй счётчик в "0", или заполните еденицами при коротком нажатии
кнопки?
__________________
..истина где то рядом..

Последний раз редактировалось proba60; 22.02.2015 в 09:41.
proba60 вне форума  
Сказали "Спасибо" proba60
NewWriter (22.02.2015)
Непрочитано 22.02.2015, 11:11  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,969
Сказал спасибо: 2,554
Сказали Спасибо 11,850 раз(а) в 5,938 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от proba60 Посмотреть сообщение
Не хочется быть нудным но тем не менее .
Когда человек уперся в своем заблуждении, медицина тут бессильна. Будет ужаком на скороводке извиваться, но свою неправоту не признает. В таких случаях проще перестать обращать вниматочность - сам остынет.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 22.02.2015, 11:45  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от NewWriter Посмотреть сообщение
А очень просто - прерывание по изменению сигнала на входах (кнопочка нажалась) выводит из слипа. Второй вариант - WDT периодически "будит" МК и МК быстренько опрашивает вход, на котором сидит кнопочка, и снова "засыпает", если состояние входа не изменилось. Этот вариант менее экономичный.

PS. Да, при работе ШИМа МК то будет тоже работать, это правда
Всем доброго утра.
Когда МК спит - изменение на входах не работает так, как тактовый генератор не работает тоже. Можно разбудить только прерыванием INT0, если нажатие будет достаточно длинным, чтобы успело вызваться прерывание, а перед этим должен запуститься тактовый генератор. Я вначале пытался разбудить прерыванием PCINT0 по заднему фронту - из Power Down не просыпается - проверено на демоплате о которой я писал выше, а использовать менее экономичные режимы сна или вывода я, думаю не имеет смысла, так как мы экономим деньги даже не на электроэнергии, на батарейках, которые будут бесполезно садиться, когда фонарь не работает.
МВА вне форума  
Непрочитано 22.02.2015, 12:04  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от Proshha Посмотреть сообщение
Работа ШИМ - это куда? В редкие моменты или в пиковое потребление, как раз тогда, когда потребителей и без того достаточно?
И, ради интереса - посмотрите потребление в статике КМОП микросхем. Оно уже и так на уровне саморазряда, и даже в динамике оно гораздо меньше потребления МК.
Давай, попробуем разобраться куда. Не надо спорить, что болше потребляет, логика или МК.
Представь, что Вы решили сэкономить на лампочке, когда вам не нужен яркий свет, и уменьшили напряжение на половину. При этом ток через Ваш управляющий элемент будет течь такой, как и через нагрузку, а напряжение поделится пополам между нагрузкой и управляющим транзистором. Падение мощности в нагрузке и в управляющем элементе будут равны. Значит КПД будет равен 50%.
А если вы захотите включить свою лампочку в режиме ночника, в целях экономии электроэнергии, и оставите на ней 10% напряжения? А в управляющем транзисторе упадет 90%. И КПД станет 10%.
Теперь рассмотрим ШИМ. Я думаю насыщение транзистора, с запасом, можно взять 1в. мощность рассеиваемая транзистором в этом случае будет P=1v*I(нагрузки). При этом, если мы уменьшаем напряжение в нагрузке - мы уменьшаем длительность открытого состояния. При этом коэффициент мощности рассеиваемой транзистором равен K=t(имп.)/t(периода) а это всегда меньше единицы. Кстати, Вы не задумывались, почему в китайских зарядках управляющий транзистор такой маленький, без радиатора и не греется?

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

Сообщение от Proshha Посмотреть сообщение
Нарисовал, чтоб не казаться голословным.
Навскидку, чего здесь нет:
- нет подавления дребезга контактов, и сколько раз отработает D-триггер одному Аллаху известно. На этот раз конденсатор Вы забыли без кавычек;
- двойное короткое нажатие требовалось на включение подсветки заранее запомненной яркостью, а не для изменения яркости на одну дискрету. Одиночное короткое на выключение;
- длинное нажатие должно плавно менять яркость в обе стороны, по очереди (уже сказали);
- напрочь отсутствует пятнадцатиминутный таймер автоматического отключения подсветки;

Каждое длинное нажатие будет давать лишний такт на счётчик.
И, кстати, Вы не нарисовали большой радиатор для регулирующего элемента.

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

Сообщение от МВА Посмотреть сообщение
использовать менее экономичные режимы сна или вывода я, думаю не имеет смысла, так как мы экономим деньги даже не на электроэнергии, на батарейках, которые будут бесполезно садиться, когда фонарь не работает.
Отчего же? Миллиампер-другой для батарейки - тоже хлеб.
Кстати, фонарь был в начале топика, сейчас речь про дисплей.

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

Сообщение от omercury Посмотреть сообщение
Отчего же? Миллиампер-другой для батарейки - тоже хлеб.
Кстати, фонарь был в начале топика, сейчас речь про дисплей.


Лампа накаливания весьма нелинейный элемент и сопротивление нити при половинной яркости значительно ниже, чем у горячей. Потери, соответственно увеличатся.
Вот, о том, что миллиампер-другой, тоже хлеб, и я говорю. что НЕ имеет смысла использовать менее экономичные режимы.
О линейности светодиода я тоже молчу. Там вообще сопротивление динамическое. По сравнению с ним лампочка просто идеально линейная.
Я имел в виду любую полезную нагрузку. И если, Вы заметили, я не использовал в расчетах сопротивление нагрузки, а только напряжение, ток и относительное распределение мощности в нагрузке и в управляющем элементе. И если на лампочке 10% от питающего напряжения, а ток в ней будет такой-же как и в управляющем элементе, потому, что они включены последовательно, то и распределение мощности будет 1/9. 10% полезной, а 90% просто на нагрев транзистора.
PS. В этом топике я не нашел обсуждения подсветки индикатора, правда, у Prosto Andriy есть тема
по ссылке https://kazus.ru/forums/showthread.php?t=110035&page=2 , где это обсуждалось, но там давно тишина.

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

Сообщение от МВА Посмотреть сообщение
Вот, о том, что миллиампер-другой, тоже хлеб, и я говорю. что НЕ имеет смысла использовать менее экономичные режимы.
Почему? Кому оно мешает-то?
Тем более, что уже реализовано.

Сообщение от МВА Посмотреть сообщение
PS. В этом топике я не нашел обсуждения подсветки индикатора, правда, у Prosto Andriy есть тема
по ссылке https://kazus.ru/forums/showthread.php?t=110035&page=2 , где это обсуждалось, но там давно тишина.
Ну да, продолжение здесь, с 17-ой страницы.

Кстати, вот идеальная модель (не учитываются задержки) Прошиного творения.
Миниатюры:
Нажмите на изображение для увеличения
Название: Image1.jpg
Просмотров: 31
Размер:	116.7 Кб
ID:	75989  
omercury вне форума  
Непрочитано 22.02.2015, 15:17  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от prosto_andriy Посмотреть сообщение
Посмотрел Ваш код, и хотя он имеет четкую структуру, я так и не понял, как в нем отфильтровывается дребезг?
Вот функция сканирования кнопки:

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"? Сразу же после нажатия кнопки? А сбрасывается он сразу после её отпускания?
Объясните пожалуйста, если Вас это не затруднит!
Я вижу, что все так отвлеклись на Proshha, что Prosto Andriy никто не ответил.
Судя по коду, флаг "KeyNew" устанавливается сразу после нажатия, когда кнопка нажата, но флаг еще не стоит функция переходит к выполнению }else{, и там есть строчка, которая выполняется безусловно "KeyNew=1", сбрасывается этот флаг в функции
clr_var(); //Сброс переменных.
А защита от дребезга строчкой if (count›shortkey) //Если больше минимального (короткое, но не дребезг), если переменная count меньше shortkey - то функция включения/выключения пропускается. Значит это был дребезг.

Последний раз редактировалось МВА; 22.02.2015 в 15:42.
МВА вне форума  
 

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

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

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:14.


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