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

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

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

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

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

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

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

 
Опции темы

Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Непрочитано 10.03.2015, 03:10  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от prosto_andriy Посмотреть сообщение
Самую нижнюю?
Ага, тогда ещё интересно CLKDIV8 на него распространяется?
(просто не проверял это ни разу)
Реклама:
omercury вне форума  
Непрочитано 10.03.2015, 03:20  
prosto_andriy
Временная регистрация
 
Регистрация: 25.06.2013
Сообщений: 58
Сказал спасибо: 25
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
prosto_andriy на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от omercury Посмотреть сообщение
Очень странно...


А Вы её в двух местах программы поменяли?
Нет, только в одном - наверно поэтому оно так странно и работает!

Сообщение от omercury Посмотреть сообщение
В принципе в майне инит таймера можно убрать и оставить только в прерывании по внешнему сигналу.
Тогда туда надо перенести строки, относящиеся к TCCR0A, а из майна удалить, оставить только разрешение прерывания по переполнению таймера.
Тогда будет в одном месте.
Взять из main эти строчки
PHP код:
TCNT0=0x00;                
TCCR0A = (1‹‹WGM01) | (1‹‹WGM00); 
а эту
PHP код:
TIMSK0=0x02;//Timer Overflow Interrupt 
оставить? Я Вас правильно понял?

Последний раз редактировалось prosto_andriy; 10.03.2015 в 03:33.
prosto_andriy вне форума  
Непрочитано 10.03.2015, 03:50  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Да, всё верно.
omercury вне форума  
Непрочитано 10.03.2015, 04:57  
prosto_andriy
Временная регистрация
 
Регистрация: 25.06.2013
Сообщений: 58
Сказал спасибо: 25
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
prosto_andriy на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Теперь все работает нормально, но мне вот ещё в голову пришла идея регулировать длительность автоотключения подсветки длительностью нажатия кнопки! Например
- если кнопка была нажата 1 с, отключить подсветку через 1 мин
- если 2 с, через 2 мин
- если 3 с, через 4 мин
- если 4 с, через 8 мин
- если 5 с, через 16 мин
А повторное нажатие (больше1 с) может отл. подсветку в любой момент!
Подскажите, пожалуйста, влезет ли в ATtiny13 такой код?
prosto_andriy вне форума  
Непрочитано 10.03.2015, 10:48  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Должно войти: там всего-то дополнительная переменная, пара условий да немного математики, главное - деления не делать и не оперировать большими цифрами.
omercury вне форума  
Непрочитано 10.03.2015, 20:14  
МВА
Гражданин KAZUS.RUN
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 841
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от omercury Посмотреть сообщение
Должно войти: там всего-то дополнительная переменная, пара условий да немного математики, главное - деления не делать и не оперировать большими цифрами.
Всем доброго время суток.
Я, думаю, это можно сделать намного проще. Держишь кнопку и регистр инкрементируется через 1 секунду. А потом при помощи функции swich - case выбираешь число секунд для загрузки в переменную и сравниваешь systemClock не с константой, а с этой переменной.


PS. По поводу вопроса Prosto Andriy насчет фьюза.
Это фьюз - делитель. Если твой тактовый генератор, любой, работает на какой-то частоте и вы запраграммируете этот фьюз, то тактовая частота вашего генератора, для всего процессора, будет в 8 раз ниже. В имени фьюза есть буквы DIV (Divider), это значит делитель.
И еще, в маске указывать ноль (0‹‹n) необязательно, вернее его обычно не указывают. Указывают только единицы, а остальные биты и так станут в 0 Если вы напишете 1‹‹5, то это будет число 0b00100000.

Последний раз редактировалось МВА; 10.03.2015 в 21:12.
МВА вне форума  
Сказали "Спасибо" МВА
prosto_andriy (11.03.2015)
Непрочитано 10.03.2015, 22:02  
МВА
Гражданин KAZUS.RUN
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 841
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от omercury Посмотреть сообщение
Тогда туда надо перенести строки, относящиеся к TCCR0A, а из майна удалить, оставить только разрешение прерывания по переполнению таймера.
Делитель таймера выставляется в регистре TCCR0B биты CS00, CS01, CS02
а биты wgm00, wgm01, wgm02 в регистре TCCR0A - относятся к режиму работы таймера(wgm02 в TCCR0B).

Последний раз редактировалось МВА; 10.03.2015 в 22:06.
МВА вне форума  
Непрочитано 10.03.2015, 22:14  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

МВА, Вы это мне рассказываете?
Так я знаю, мне не нужно.
omercury вне форума  
Непрочитано 11.03.2015, 04:41  
prosto_andriy
Временная регистрация
 
Регистрация: 25.06.2013
Сообщений: 58
Сказал спасибо: 25
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
prosto_andriy на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от МВА Посмотреть сообщение
...можно сделать намного проще. Держишь кнопку и регистр инкрементируется через 1 секунду. А потом при помощи функции swich - case выбираешь число секунд для загрузки в переменную и сравниваешь systemClock не с константой, а с этой переменной.
А я думал, что проще константу времени автоотключения оставить!
Выставить её например в 60 (то есть 1 мин.), и в зависимости от того, сколько раз инкрементируется счетчик, множить на соответствующее значение! Например:
- прошла 1 секунда после нажатия - множим на 1
- 2 секунды на 2;
- 3 на 4
- 4 на 8
Я очень плохо разбираюсь в программировании, но мне кажется здесь можно обойтись и без умножения, достаточно сдвигать один бит, если я не ошибаюсь, влево! Или нет?
prosto_andriy вне форума  
Непрочитано 11.03.2015, 11:02  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Как отследить короткое и продолжительное нажатие кнопки в фонаре?

Сообщение от prosto_andriy Посмотреть сообщение
Выставить её например в 60 (то есть 1 мин.), и в зависимости от того, сколько раз инкрементируется счетчик, множить на соответствующее значение!
Ну да, сделать DownCounter (то есть наоборот от сейчас) и забивать туда оставшееся время.

Сообщение от prosto_andriy Посмотреть сообщение
Я очень плохо разбираюсь в программировании, но мне кажется здесь можно обойтись и без умножения, достаточно сдвигать один бит, если я не ошибаюсь, влево!
Андрей, не прибедняйтесь уже...
omercury вне форума  
 
Опции темы

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

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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.