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

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

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

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

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

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


 
Опции темы

Подсветка дисплея на ATtiny13 (как сделать)

Непрочитано 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.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

Можно конечно... Таймер аппаратно генерирует шим и параллельно по его прерыванию считаем временные интервалы для опроса кнопок. Или можно по прерываниям от вачдога отмерять время задержек
niXto вне форума  
Сказали "Спасибо" niXto
warel (29.06.2019)
Непрочитано 31.01.2015, 18:19  
elon
Почётный гражданин KAZUS.RUN
 
Аватар для elon
 
Регистрация: 29.12.2004
Адрес: Bернулся в San Jose,CA,USA,Beach BLVD,свой дом,окна на океан-ничего личного,просто бизнес!
Сообщений: 1,098
Сказал спасибо: 22
Сказали Спасибо 425 раз(а) в 318 сообщении(ях)
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,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подсветка дисплея на ATtiny13 (как сделать)

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

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

Сообщение от Easyrider83 Посмотреть сообщение
Ассемблер обязателен, к сожалению.
Приколист.
Сообщение от prosto_andriy Посмотреть сообщение
реально ли это сделать
Безусловно.
Тут правда мега.
https://kazus.run/forums/showthread....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.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
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, время: 15:21.


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