- Вложения
-
- ШИМ.rar
- исходник для avr studio
- (5 КБ) 249 скачиваний
-
- ШИМ.JPG
- сама схема проекта
- (80.33 КБ) 623 скачивания
как подружить attiny13 и энкодер (шим регулятор яркости)
Вообщем суть моей проблемы такова. Есть проект он работает и в железе (шим регулятор), но кнопками. А хотелось вместо кнопок подключить энкодер, соответственно крутнул в одну сторону яркость прибавилась и если в обратную сторону убавилась. Моих знаний пока хватает какую нибудь мигалку на cvavr сварганить и всё. Выложил архив и схему проекта(правда не мой), прошу помочь с исходником. Спасибо.
- Реклама
Ну а в чем проблема? В энкодере так же 2 кнопки, только конструктив другой. У него 3 вывода, один общий, на землю, два других твои кнопки.
Так вроде там нужен обработчик импульсов на энкодер, чтобы пропусков не было при вращении его. Я такое вычитал или я ошибаюсь. А может в исходнике время на дребезг увеличить?
Если и потеряется импульс с энкодера, то ничего страшного не произойдёт. Тут главное дребезг отфильтровать.
1. В главном цикле программы (или в прерываниях по таймеру) считается счётчик подавления дребезга.
2. Прерывания настраиваются только на PB1 (а лучше задействовать прерывание INT0 по фронту).
3. В прерывании делается проверка "если задержка истекла и PB1 нажата и PB2 нажата, то вверх и сбросить задержку", "если задержка истекла и PB1 нажата и PB2 не нажата, то вниз и сбросить задержку".
1. В главном цикле программы (или в прерываниях по таймеру) считается счётчик подавления дребезга.
2. Прерывания настраиваются только на PB1 (а лучше задействовать прерывание INT0 по фронту).
3. В прерывании делается проверка "если задержка истекла и PB1 нажата и PB2 нажата, то вверх и сбросить задержку", "если задержка истекла и PB1 нажата и PB2 не нажата, то вниз и сбросить задержку".
Может и так, но мой уровень познаний не позволяет это все реализовать, поэтому и прошу помочь. Исходник есть выше в архиве для доработки, но можете свой предложить.
- Реклама
Если проект простой, то можно без прерываний просто в цикле проверять если кнопка нажата подряд 50..100 раз то цикл завершается и считаем что она нажата. При этом в цикле счетчик увеличиваем до этого значения. Если хотя бы раз проверка прервалась, считаем кнопку не нажатой.
Антидребезг введением задержки
http://avr.ru/beginer/bascom/article2
Внешние прерывания
http://avr-start.ru/?p=883
Антидребезг введением задержки
http://avr.ru/beginer/bascom/article2
Внешние прерывания
http://avr-start.ru/?p=883
Выше в архиве есть исходник рабочий, но мне нужно вместо кнопок энкодер подключить. Проект не мой он написае на ассембл. в AVR STUDIO. Посмотрите можно ли его доработать под энкодер вместо кнопок. Спасибо. Можете исходник и на CVAVR выложить доработанный.


