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

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

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

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

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

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

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

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

Сообщение от oleg_harp Посмотреть сообщение
Мерцание исчезло. Других проблем не было.
Очень хорошо.

poligon_85, Теперь у Вас 2 варианта на выбор...

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

Цитата:
Дык... ещё в начале сказал
st_1, это мы помним. И я лично очень уважаю Ваше мнение. Но ведь таймер уже ШИМит светодиод. Почему бы его не использовать для сканирования кнопки? По флагам в цикле МК должен работать постоянно, пока светит диод. У меня же он просыпается по таймеру и смотрит - как там кнопка? Всё остальное время честно спит.

а вот это следующий шаг...
https://kazus.ru/forums/showpost.php...8&postcount=86
https://kazus.ru/forums/showpost.php...&postcount=133
omercury вне форума  
Непрочитано 18.04.2011, 19:14  
poligon_85
Временная регистрация
 
Аватар для poligon_85
 
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poligon_85 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от omercury Посмотреть сообщение
Пока кнопка не нажата, контроллер спит почти целиком. Будет работать генератор, контроллер прерываний и цепи запуска.
#asm("sleep") тогда что делает? Ну в смысле по каким критериям контроллер просыпается? Только внешнее прерывание? И зачем тогда это состояние если остается включенным таймер при этом?
poligon_85 вне форума  
Непрочитано 18.04.2011, 19:24  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

До сих пор у нас просыпалось по таймеру. А вообще эти режимы описаны в Datasheet в разделе Power Management and Sleep Modes. Например http://www.gaw.ru/html.cgi/txt/ic/At...vr/atmega8.htm
omercury вне форума  
Непрочитано 18.04.2011, 20:07  
poligon_85
Временная регистрация
 
Аватар для poligon_85
 
Регистрация: 11.04.2011
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
poligon_85 на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Ясно. Спасибо
poligon_85 вне форума  
Непрочитано 29.04.2011, 01:43  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Здравствуйте уважаемые.
Я эту проблему решал таким образом:

if (butt==0){
delay_ms(50);
flags=1; // ставим флаг если кнопка нажата
tmr++;
if (tmr›40){
led_1=1;
flags=0; // выполнили команду сбрасываем флаг
tmr=0; // и сбрасываем счетчик
}
}
if (butt!=0){ // если кнопка отжата и флаг установлен
tmr=0;
if (flags==1){
led_2=1; // выполняем следующую команду
flags=0;
}
}
// дополнительная защита от переполнения переменной
if (tmr›100){
tmr=0;
}

Последний раз редактировалось artyomugr; 29.04.2011 в 20:23.
artyomugr вне форума  
Непрочитано 29.04.2011, 10:02  
oleg_harp
Прописка
 
Регистрация: 25.08.2007
Сообщений: 193
Сказал спасибо: 11
Сказали Спасибо 57 раз(а) в 33 сообщении(ях)
oleg_harp на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от artyomugr Посмотреть сообщение
Я эту проблему решал таким образом:
Задачу ТС Вы не выполнили (разные действия при коротком и длительном нажатии кнопки, и регулировка яркости). А если попробуете выполнить, то поймёте, что код Ваш не подойдёт из за
Код:
delay_ms(50);
Дребезг при отжатии кнопки Вы не обрабатываете. При нажатии дребезг вы обрабатываете некорректно: через 50mS Вы ставите flags, а если через 50 mS butt уже не равно 0(это был дребезг)? Так что код Ваш будет работать в Proteus, но через раз в реале, а ТС для его задачи вообще не подходит.
oleg_harp вне форума  
Непрочитано 29.04.2011, 10:20  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Этот код работает так как реализован в устройстве.
Только я ошибся в первой задержке...
бегло писал код по памяти, так как исходник дома в проекте.
первая задержка должна быть 100ms не меньше.
Насчет ШИМ, да Вы правы. Работать не будет должным образом, но опять же, посидев с кодом можно выполнить ТЗ с ШИМ использованием.
artyomugr вне форума  
Непрочитано 29.04.2011, 10:47  
oleg_harp
Прописка
 
Регистрация: 25.08.2007
Сообщений: 193
Сказал спасибо: 11
Сказали Спасибо 57 раз(а) в 33 сообщении(ях)
oleg_harp на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от artyomugr Посмотреть сообщение
Этот код работает так как реализован в устройстве.
Попробуйте очень быстро понажимать и поотпускать кнопку в своём устройстве. Вы будете сильно удивлены. Если нет, Вам очень повезло с кнопкой.
oleg_harp вне форума  
Непрочитано 29.04.2011, 16:02  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

ни каких проблем нет при быстром нажатии и отпускании
там все решает задержка delay_ms(100);
этот код мне надо был для реализации сервис меню в проекте.
artyomugr вне форума  
 

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

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

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


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