РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Архив - только для чтения
Энкодер на AVR
Сообщение # 1        
frenele
аватар
  Постов: 30   ОК 
Хочу поделится опытом. Мой товарищ загорелся идеей освоить энкодер. Но столкнулся с рядом проблем. Обратившись ко мне за помощью я решил для него эту задачу. Потому и решил выложить код. Принцип основан на сбросе таймера T0 по прерыванию от INT0.Сброс таймера продолжается до тех пор пока не пройдёт дрябиск на контактах энкодера. С последним таким перепадом таймер считает до прерывания. В обработчике прерывания происходит проверка уровней на входах энкодера и по этому условию определяется в какую сторону поворачивается ручка. Обработчики прерывания запускаются когда есть воздействие на энкодер. В остальное время эти ресурсы микроконтроллера не задействованы.
Файлы: 1872151.txt (1.8 Kb)
Сообщение # 2        
Электродыч
аватар
  Постов: 3755   U 
Практическую реализацию похожей схемы управления можно посмотреть в журнале Радио №9 за 2010год в статье ''УКВ радиоприемник на основе тюнера автомагнитолы''.
Сообщение # 3        
skateman
аватар
  Постов: 2201   Друзья 
Цитата (frenele)
Принцип основан на сбросе таймера T0 по прерыванию от INT0

не лучший вариант
Сообщение # 4        
frenele
аватар
  Постов: 30   ОК 
Цитата (skateman)
не лучший вариант


Есть пример лучше? Выложи я оценю.

Добавлено (13.01.2013, 22:00)
---------------------------------------------
Цитата (Электродыч)
Практическую реализацию похожей схемы управления можно посмотреть в журнале Радио №9 за 2010год в статье ''УКВ радиоприемник на основе тюнера автомагнитолы''.


Я конечно не знаю как там программа написана, но обратил внимание на конденсатор С1 подключенный к одному выводу энкодера. Мой пример позволяет не подключать дополнительных элементов. Только один энкодер. Работает как швейцарские часы.)))
Сообщение # 5        
skateman
аватар
  Постов: 2201   Друзья 
Цитата (frenele)
Есть пример лучше? Выложи я оценю

Я к тому, что если надо задействовать 3 и более энкодеров, то выводов внешних прерываний может просто не хватить, ведь AVR это, к примеру, не STM8 в которой на каждую ногу можно повесить внешнее прерывание.
Сообщение # 6        
frenele
аватар
  Постов: 30   ОК 
Цитата (skateman)
Я к тому, что если надо задействовать 3 и более энкодеров


Я согласен, но это один пример. Сдам сессию займусь этой задачей.
Кстати на MSP430 тоже можно настроить на каждую ножку прерывание.
Сообщение # 7        
skateman
аватар
  Постов: 2201   Друзья 
лучше как кнопки опрашивать по прерыванию таймера, только чтоб пропусков не было при прокрутке надо частоту опроса экпериментально подобрать
Сообщение # 8        
frenele
аватар
  Постов: 30   ОК 
Цитата (skateman)
лучше как кнопки опрашивать по прерыванию таймера, только чтоб пропусков не было при прокрутке надо частоту опроса экпериментально подобрать
Дело в том, что предложенный вариант в самом начале этой темы подразумевает минимальное задействование ресурсов микроконтроллера. Эти ресурсы задействоваться будут только тогда, когда на энкодер оказывает воздействие пользователь. Постоянный опрос при простои энкодера или кнопок и других устройств ввода нерациональное растрачивание вычислительных ресурсов микроЭВМ.

Добавлено (16.01.2013, 01:11)
---------------------------------------------
воздействие на устройство ввода должно вызывать прерывание. Это принципиально! Можно конечно и программно опрашивать порт(ы), но если не требуется строгих  временных интервалов.

Сообщение # 9        
skateman
аватар
  Постов: 2201   Друзья 
Цитата (frenele)
воздействие на устройство ввода должно вызывать прерывание
а если кнопка залипнет?
Сообщение # 10        
frenele
аватар
  Постов: 30   ОК 
Цитата (skateman)
а если кнопка залипнет?
Если залипнет кнопка при использовании прерываний это ни чего страшного. Прерывания вызываться не будут. Дело в том прерывание происходит когда на пине(ножке) меняется состояние с "0" на "1" или наоборот. А если реализовать опрос программно то будут неприятности если просто проверять состояние на пине, а надо чтобы реакция было от фронта или спада на выводе микросхемы. Можно и программно реализовать функцию которая будет реагировать на изменение состояния на пине, но при этом чрезмерно сильно будут вычислительные затраты. Что не очень GOOD.
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA