-
Декодер RC-5 на PIC16F84
Приветствую участников!
Возникла задача написать программу декодирования протокола RC-5 для МК PIC16F84. Импульсы с фотоприемника ILMS 5360 подаются на вход RB0/INT МК, программа должна возвращать в определенной ячейке ОЗУ hex-код принятой команды, либо FF при некорректном приеме посылки. Алгоритм программы в общих чертах ясен, хотелось уточнить следующие моменты:
1. Инвертирует ли фотоприемник принимаемые импульсы? Иными словами, запуск программы декодирования должен происходить по фронту или по спаду импульса на RB0/INT?
2. Заполнены ли импульсы на выходе фотоприемника несущей частотой 36 кГц?
3. Есть ли у кого готовые процедуры решения такой задачи? В инете попадаются только программы конвертации сигналов RC-5 в RS-232.
Всем успехов!
-
Отвечаю по пунктам.
1. На выходах фотоприемников TSOP, SFH503, MS5360 и им подобных в отсутствие приема высокий уровень, во время приема пачки ИК импульсов - низкий.
2. Эти фотоприемники содержат узкополосный фильтр, настроенный на частоту повторения импульсов (например, на 36 кГц), амплитудный детектор и последетекторный фильтр. Так что сигналов несущей частоты на выходе нет, а длительность выходного импульса с определенной точностью (она задана в спецификации фотоприемника) равна длительности принятой пачки импульсов.
3. Готовые процедуры есть. На сайте www.microchip.com лежит документ AN657 (00657.pdf) "Decoding Infrared Remote Controls Using a PIC16C5X Microcontroller". На сайте www.atmel.com есть DOC1473.pdf "RC5 IR Remote Control Receiver". Он, правда, ориентирован на AVR, но описанный алгоритм несложно реализовать и на PIC.
И еще почитайте статью С. Людского "Тестер для проверки пультов дистанционного управления RC5" (Радио, 2005, № 2, с. 53-55). Там есть полезные подробности. И все, что Вам нужно, уже сделано. Правда, на AT90S2313.
-
То есть я правильно понимаю - при приеме, например, логической единицы на выходе фотоприемника должен быть переход с высокого уровня на низкий в середине тактового отрезка (1,8мс)?
-
Да. А при приеме нуля - с низкого на высокий. Точная длительность передачи одного разряда - 64 периода частоты 36 кГц.