Авторизация


...

Кто на сайте?

Сейчас 98 гостей и один зарегистрированный пользователь на сайте

  • thamohmedsaman

Статистика

-Посетители : 28065
-Материалы : 210

Пользователь сайта продает...

  MB913 C-01

Пользователь сайта покупает...

ПП приема кода RC-5 с ИК пульта

Автор: Алексей Просмотров: 4538

 

 

И даже не это главное, главное то, что при длительном нажатии кнопки на пульте, выдается посылка и не одна, а сразу множество с периодом примерно 65 мс… Что естественно сильно тормозит основную программу, плюсом еще и проскакивающие помехи… Поэтому решил отказаться от такой идеи и использовать для прерываний оба фронта сигнала… В результате чего, вместо того, чтобы ожидать в прерывании примерно 1800 мкс 14 раз львиная доля этого времени отдается основной программе и прием команды с пульта в общей сложности занимает что то около 150 мкс, разбросанных только за фронтами самих импульсов, не тратится время на тупые задержки… Все остальное делает таймер TMR0. Чтобы встроить программу нужно всего лишь включить прерывание INTx по заднему фронту, хотя можно и по переднему Smile, в прерывании оно все равно переключится как надо на второй посылке или от проскочившей помехи. Также необходимо настроить TMR0 от внутреннего такта с предделителем 1:8 в режиме 8-ми разрядного счетчика и включить его. Программа написана под PIC18F252… Хоть она и занимает всего 29 машинных слов, сложна в понимании, поэтому прикладываю и алгоритм ее работы…

Для начала немного теории: Сама посылка начинается со стартового бита, равного 1. Выглядит это как перепад напряжения с высокого уровня в низкий… Что дает возможность использовать прерывание по изменению уровня сигнала или по INTx. Сами биты кодируются перепадами напряжения в середине временного интервала посылки бита. В RC5 время на передачу одного бита равно 1778мкс.

 

 

 

 

На рисунке привел пример посылки кода клавиши Power. Стрелками обозначены начала временнОго интервала приема бита. Красным выделены стартовые биты, всегда равны 1, черным – бит инвертируется при каждом нажатии кнопки, но не при удержании, синим – код системы, зеленым – команда. На рисунке хорошо видно, что перепадом из 1 в 0 передается 1, из 0 в 1 передается 0. при этом на границе битов может и не быть перепада, к тому же этот перепад не является информационным. Таким образом, если произошло прерывание, необходимо переключить прерывания на другой фронт сигнала и отсчитывать время до следующего прерывания. Т.к. длительность передачи одного бита равно 1778мкс, то при возникновении следующего прерывания необходимо проверить сколько прошло времени с выхода из предыдущего прерывания. Если 889 мкс., то данный импульс является либо короткой помехой, либо правильным перепадом но не информационным… Чтобы это выяснить, опять переключаем фронт прерывания на противоположный и ждем следующего прерывания… И снова проверяем сколько прошло времени, если 1778 мкс. То делаем вывод что бит принят… Если в этот момент прошло больше или меньше времени, то это будет означать ошибку приема и необходимо уйти из прерывания… Чтобы обеспечить правильность определения стартового бита и всей посылки в целом, необходимо в прерывании в первую очередь проверить сколько прошло времени с момента предыдущего прерывания, если больше 1778 мкс то дополнительно необходимо проверить по какому фронту произошло прерывание. При условии что с момента предыдущего прерывания прошло больше 1778 мкс. и прерывание произошло по заднему фронту импульса, всегда будет запускаться инициализация к приему всей команды с пульта. И в последствии будет распознаваться корректность посылки… Т.о. отфильтровываются помехи. В заключение, хочу сказать, что параметры различных пультов с одной и той же кодировкой могут значительно отличаться, поэтому была сделана временнАя вилка, попав в которую, импульс считается правильным. Неинформационные перепады отслеживаются по значению менее примерно 1512 мкс, а информационные в районе от 1512 до 2048 мкс, все что выше этой вилки, считаются помехами, они автоматически распознаются и не влияют на работу программы…

Правильно принятые команды с пульта сохраняются в регистре Command. Есть возможность сохранить и код системы, но я не стал этого делать…

 

 

 

Все материалы здесь

Обсуждение здесь

Случайные статьи....

Prev Next

Программирование c нуля в AVRStudio 5 (ч.6)

02-04-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.6)

Для того чтобы писать более сложные программы, нужно хорошо представлять структуру и взаимодействие разных узлов микроконтроллера между собой, но основные принципы сохраняются независимо от модели контроллера. В принципе, человек, который изучил микроконтроллеры PIC, достаточно быстро осваивает AVR или ARM.Управление микроконтроллером...

Библиотека для динамической индикации (АСМ)

02-05-2011 Alex

Библиотека для динамической индикации (АСМ)

Привязка библиотеки под нужный индикатор и схему подключения. #define ind_size x ; Кол-во индикаторов Эта строчка отвечает за кол-во используемых индикаторов, где x это число индикаторов. Их может быть от 1 до 8 штук.  #define ind_invert   ; Инверсия общего...

Регулятор скорости автомобильной печки на PIC-контроллере

26-04-2011 Иван Шевченко (R1ZK)

Регулятор скорости автомобильной печки на PIC-контроллере

Данный регулятор был сделан по заказу моего друга для автомобиля ЗиЛ 5301 "Бычок". Регулятор собран на микроконтроллере Microchip PIC12F629 и имеет 5 уровней регулировки скорости с индикацией на 5 светодиодах. Выключенное состояние - все светодиоды погашены, 1-й уровень - горит...

Модуль для использования цветного дисплея от сотового телефона

06-10-2012 Сергей Шакуров

Модуль для использования цветного дисплея от сотового телефона

В настоящее время для радиолюбителей стали весьма доступны недорогие и качественные дисплеи от (для) мобильных телефонов. Для конкретной возможности применения одного из них в различных радиолюбительских конструкциях автором создан модуль, описание которого приведено в этой статье.Автор не считает свою разработку...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru