Авторизация


...

Кто на сайте?

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

  • heydeeste

Статистика

-Посетители : 22989
-Материалы : 209

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

  Корпус

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

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

Автор: Алексей Черепанов (г. Архангельск), Игорь Безверхний (г. Киев) Просмотров: 3859

 

 

За основу была взята программа по распознаванию кода RC5, которую написал один из авторов этой статьи Алексей Черепанов. Данная программа унаследовала от своей предшественницы те же преимущества, компактность кода, не требовательность к ресурсам контроллера, скорость работы. Несмотря на то, что длительность пачки импульсов примерно 30000-35000 мкс, распознавание всей пачки импульсов от пульта отнимает у основной программы только около 120-130 мкс! Достигнута такая экономия за счет переключения фронтов прерываний по INT0. Таким образом, нет нужды при обнаружении начала посылки ожидать в прерывании следующего перепада.

Данная программа рассчитана под тактовую частоту 12 МГц. При необходимости ее можно пересчитать под любой кварц, для этого возможно придется переключить предделитель TMR0 на другое значение и возможно, пересчитать константы. Таймер должен переполняться по истечении 650 мкс для синхробита, и после 2000 мкс для бита. Также для синхроимпульса необходимо пересчитать константу, чтобы проверить его правильность. До переполнения таймера в этом случае должно оставаться не более 200 мкс. Т.е. должно выполняться условие: синхроимпульс > 450 мкс, но < 650 мкс. Для значащего бита необходимо высчитать константу, когда до переполнения останется примерно 1000 мкс. Если времени пройдет более 1000мкс, то принята единицу, если менее, то ноль. Очень важно помнить, что предустановки таймера выбраны таким образом, что любое переполнение таймера при приеме посылки будет означать ошибку приема. Именно поэтому в программе нет проверок на максимальное значение. Эта проверка всегда одна в двух первых строчках подпрограммы прерывания. Т.е. если таймер переполнен, это автоматически означает ошибку приема, но если таймер переполнен, и прерывание произошло по спаду, то это всегда будет означать начало приема посылки с ИК пульта ДУ. Это условие необходимо для правильного определения начала посылки, если его не соблюдать, то правильно принять код с пульта будет практически невозможно. Для правильной работы программы необходимо:

1.   Настроить TMR0 на работу как 8 разрядный счетчик с внутренней синхронизацией.

2.   Установить предделитель как 1:32

3.   Включить прерывание по INT0 по спаду. Хотя важнее просто включить прерывание по INT0, а фронт автоматически переключится так, как нужно.

На рисунке представлен алгоритм работы программы

 

 

 

Исходник программы можно скачать здесь

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

Prev Next

Сигнализатор превышения заданной скорости автомобиля

14-06-2011 wws63

Сигнализатор превышения заданной скорости автомобиля

Cигнализатор предназначен для подачи светозвуковой сигнализации в случае превышения заданной пользователем скорости автомобиля и позволяет оперативно, с помощью нажатия сервисной кнопки, настраивать этот порог срабатывания сигнализации. Устройство может быть установлено на любые автомобили с датчиками скорости, способными выдать от 1,5...

Умножение константы 0xFFFF на байт

19-05-2012 Александр Милевский

Умножение константы 0xFFFF на байт

Хочу популярно, на примере объяснить, что мне нравится в ассемблере. Это его гибкость и возможность подумать и сделать не стандартно именно под необходимую задачу. Сразу скажу, я ни в какой мере не осуждаю любителей языков высокого уровня. Это просто глупо, особенно при...

Настенные часы – термометр с большими индикаторами

12-02-2016 wws63

Настенные часы – термометр с большими индикаторами

В статье предлагается Вашему вниманию настенные часы - термометр и хотя в сети подобных устройств достаточно много, практически все они имеют свои особенности. Эти часы оснащены яркими светодиодными индикаторами белого цвета свечения с высотой знака 126 мм, с автоматическим определением...

ПП чтения данных из Flash памяти программ.

24-05-2012 Super User

 Для чтения содержимого памяти программ используется инструкция (команда) TBLRD. Она имеет несколько разновидностей: TBLRD*     - чтение TBLRD*+ - чтение +1 TBLRD*-  - чтение -1 TBLRD+* - +1,чтение В программе необходимо предварительно записать в указательTBLPTRадрес таблицы (байт) данных,  к примеру,  здесь  задан...


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

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