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

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

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

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

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

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

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

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

Должно войти: там всего-то дополнительная переменная, пара условий да немного математики, главное - деления не делать и не оперировать большими цифрами.
omercury вне форума  
Непрочитано 10.03.2015, 20:14  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 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.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 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.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
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.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
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, время: 19:24.


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