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

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

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

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

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

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


 
Опции темы
Непрочитано 31.01.2015, 17:59  
prosto_andriy
Временная регистрация
 
Регистрация: 25.06.2013
Сообщений: 58
Сказал спасибо: 25
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
prosto_andriy на пути к лучшему
По умолчанию Подсветка дисплея на ATtiny13 (как сделать)

Помогите пожалуйста написать программу для управления подсветкой дисплея с такими параметрами:

- пять уровней яркости;
- управление всего одной кнопкой - короткое нажатие ступенчато увеличивают яркость, длинное – выключает подсветку;
- авто-отключение через 15 минут (в том числе переход микроконтроллера в «спячку»)

Подскажите, пожалуйста «чайнику», реально ли это сделать на обычной ATtiny13? Например, по такой схеме:


Насколько я понял, нужно постоянно опрашивать кнопку (произошло нажатие или нет). Значит, для этого придется задействовать прерывание?
Если нажатие зафиксировано, то нужно отследить его длительность! И соответственно либо включить подсветку /увеличить её яркость (если нажатие короткое) или выключить её (если нажатие длинное)!

Для изменения яркости обычно используется PWM(ШИМ)! ATtiny13 его поддерживает, но дело в том, что в ней всего один таймер! В общем, непонятно можно ли всё это делать с его помощью? Если да, то как? Объясните пожалуйста!
Миниатюры:
Нажмите на изображение для увеличения
Название: pwm_led.jpg
Просмотров: 661
Размер:	19.3 Кб
ID:	75250  
Реклама:
prosto_andriy вне форума  
Сказали "Спасибо" prosto_andriy
warel (29.06.2019)
Непрочитано 31.01.2015, 18:07  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Можно конечно... Таймер аппаратно генерирует шим и параллельно по его прерыванию считаем временные интервалы для опроса кнопок. Или можно по прерываниям от вачдога отмерять время задержек
niXto вне форума  
Сказали "Спасибо" niXto
warel (29.06.2019)
Непрочитано 31.01.2015, 18:19  
elon
Почётный гражданин KAZUS.RU
 
Аватар для elon
 
Регистрация: 29.12.2004
Адрес: Bернулся в San Jose,CA,USA,Beach BLVD,свой дом,окна на океан-ничего личного,просто бизнес!
Сообщений: 1,098
Сказал спасибо: 22
Сказали Спасибо 423 раз(а) в 316 сообщении(ях)
elon на пути к лучшему
Радость Re: Подсветка дисплея на ATtiny13 (как сделать)

Внутри исходник на асме , hex , dsn .... 4 градации , легко доделаете до нужных вам параметров работы
Вложения:
Тип файла: zip 4-stage-pwm.zip (13.2 Кб, 40 просмотров)
__________________
"Дворяне и их младые отроки должны всегда меж собою говорить на ВЫ и на иностранных языках, дабы тем навыкнуть могли, и чтобы их можно было от других незнающих болванов распознать."
Уложение о поведении (с) царь Пётр I
elon вне форума  
Сказали "Спасибо" elon
warel (29.06.2019)
Непрочитано 31.01.2015, 20:51  
prosto_andriy
Временная регистрация
 
Регистрация: 25.06.2013
Сообщений: 58
Сказал спасибо: 25
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
prosto_andriy на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Наверно я не совсем правильно описал алгоритм – правильнее так:

1. Ожидание нажатия кнопки. Если она нажата – начать отсчет времени, сгенерировать событие «кнопка нажата» и перейти в состояние 2.
2. Отслеживание – проверяем, отпущена кнопка или нет! Если нет, то сравниваем время нажатия с текущим временем!
Если разница больше 0,5 секунд, генерируем событие «короткое нажатие» и переходим в состояние 3. Если кнопка отпущена, генерируем событие «кнопку отпустили» и возвращаемся в состояние 1.
3. Опять отслеживаем состояние кнопки! Если она нажата больше 1 секунды с момента начала отсчета, генерируем событие «длительное нажатие» и переходим в состояние 4. Если кнопка отпущена - генерируем событие «кнопку отпустили» и возвращаемся в состояние 1.
4. … и т.д.

5. Если нажатия кнопки не было 15 минут – перевести микроконтроллер в «спящий» режим!

Проще всего наверно было бы написать такой код на обычном "C/C++" в AVR Studio? Или обязательно использовать ассемблер?
prosto_andriy вне форума  
Сказали "Спасибо" prosto_andriy
warel (29.06.2019)
Непрочитано 31.01.2015, 20:53  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Ассемблер обязателен, к сожалению.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
warel (29.06.2019)
Непрочитано 31.01.2015, 21:16  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Сообщение от Easyrider83 Посмотреть сообщение
Ассемблер обязателен, к сожалению.
Спорно - IAR (и наверное GCC) Attiny13 поддерживают. Так и зачем тогда ассемблер?
_Артём_ вне форума  
Сказали "Спасибо" _Артём_
warel (29.06.2019)
Непрочитано 31.01.2015, 21:39  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Сообщение от Easyrider83 Посмотреть сообщение
Ассемблер обязателен, к сожалению.
Приколист.
Сообщение от prosto_andriy Посмотреть сообщение
реально ли это сделать
Безусловно.
Тут правда мега.
https://kazus.ru/forums/showthread.p...EE%F2%EA%EE%E5
omercury вне форума  
Эти 2 пользователя(ей) сказали Спасибо omercury за это сообщение:
prosto_andriy (31.01.2015), warel (29.06.2019)
Непрочитано 31.01.2015, 21:55  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Сообщение от prosto_andriy Посмотреть сообщение
Для изменения яркости обычно используется PWM(ШИМ)! ATtiny13 его поддерживает, но дело в том, что в ней всего один таймер! В общем, непонятно можно ли всё это делать с его помощью?
А это не имеет значения. У вас задача прямая и простая как палка, её просто нужно согнуть в обруч. Пусть таймер и рулит PWM, обработку кнопок делайте в вечном цикле, типа конечный автомат. Только в конце цикла сделайте программную задержку на 100мс. Три программных счётчика - нажатие кнопки, отпускание и таймаут с выходом в слип. Высокая точность при опросе кнопки и даром не впарилась, зачем здесь ещё один таймер?
STM32F0 вне форума  
Эти 2 пользователя(ей) сказали Спасибо STM32F0 за это сообщение:
prosto_andriy (31.01.2015), warel (29.06.2019)
Непрочитано 31.01.2015, 22:23  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Сообщение от STM32F0 Посмотреть сообщение
Высокая точность при опросе кнопки и даром не впарилась, зачем здесь ещё один таймер?
А что мешает сделать из него же System Tick ?
omercury вне форума  
Сказали "Спасибо" omercury
warel (29.06.2019)
Непрочитано 31.01.2015, 23:21  
prosto_andriy
Временная регистрация
 
Регистрация: 25.06.2013
Сообщений: 58
Сказал спасибо: 25
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
prosto_andriy на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Это что-то вроде функции "millis()" в Arduino?
Согласен с Вами - так проще, но я все-таки хотел бы разобраться с этими таймерами и прерываниями!
..так и не понял, в какой именно момент таймер должен начинать отсчет? В момент касания кнопки? Его нужно настроить на срабатывание по спаду, то есть переходу из 1 в 0 ??
Ведь при нажатии кнопки напряжение на выводе PB0 падает до нуля! Не так ли?
prosto_andriy вне форума  
Сказали "Спасибо" prosto_andriy
warel (29.06.2019)
 

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

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Ностальжи по школе... Ar-Gen-Tum Отвлекитесь, эмбеддеры! 141 27.02.2015 16:10
Как остановить мк? Как сделать паузу? skllks Микроконтроллеры, АЦП, память и т.д 8 27.12.2008 17:27
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49


Часовой пояс GMT +4, время: 11:12.


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