Свежие обсуждения
Микроконтроллеры

Дайте плиз асм-код для декодирования RC-5 процессором PIC16F84

1 3

Перерыл большую часть инета .... большое количество мертвых ссылок, а там где ссылки живые программ нету.... А очень хочется
Программу можно либо дать URL на форуме либо в почту кинуть на rochnyack@ngs.ru

Кто будет кидать в мыло:

пожалуйста сделайте латиницей осмысленную тему типа RC-5 decoder programm, а то масса спама с виндовой кодировкой которую веб-интерфейс криво отображает и эти письма удаляются не читая.

 

Искал 1 минуту.
http://mirrors.smtn.stavropol.ru/pic/_private/readrc5.zip

 

Хм.. спасибо большое !

 

Подскажите ссылку на ликбез по написанию проги-декодера кода RC-5 для PIC.
Только "для чайников", что бы понять алгоритм декодирования.

 

Выкладываю кусочек кода из действующей программы. Писалось для 4мГц pic16f628a . Сигнал принимался на RB0 в режиме прерывания с 1 на 0.

142012.rar

 

Welcome61, спасибо. Буду разбираться.
На сколько я понял, то в Вашем примере к порту RB0 подключается выход IR приёмника? Ведь, у него при ожидании на выходе как раз единица.
То есть, обработка принятой команды начнётся только по прерыванию?

Ещё, Вы не могли бы словами описать алгоритм принятия кода команды. Что бы "врубиться" в суть.

Я хочу изменить схему кодового замка на работе, а для уменьшения количества проводов от клавиатуры до основного блока применить кодер от дистанционки телевизора.

 

К входу RB0 подключен ИК приемник, на выходе которого постоянно уровень лог. 1 при отсутствии сигнала на входе.
Это условие выполняется для изделий типа SFH-560, TFMS5360 и им аналогичных.
Прерывание можно не использовать а алгоритм оставить тотже.
Для начала рекомендую изучить протокол выдачи команд в кодах RC-5.
Я описывал для себя так:
как только пришел уровень 0 на вход, то ухожу в прерывание , а это
уже первый бит. Их всего 14.
Осталось 13. Далее двигаюсь по времени и опрашиваю вход порта.
Определяюсь - 1раз прочитал порт (записал), затем 2 раз прочитал (записал), Анализ -если перепад из 1 в 0 - то это 0.
Иначе - 1.
И так 13 раз. Получилось 2 байта. Мне нужен был младший байт и один бит старшего, в который записывался признак "Повтор команды".

 

Ув DWD, может быть, тогда проще применить еще и декодер, раз уж кодер нашли А еще проще - поставить вместо кодера микроконтроллер и реализовать самому любой протокол, какой придумаете, раз уж все равно связались с программированием.

 

Welcome61: Для начала рекомендую изучить протокол выдачи команд в кодах RC-5.

Нашёл пару описаний (в журнале и инете). Увидел, что он собой представляет. Но дело в том, что у меня опыта работы с МК всего 1,5 раза, да и то, на уровне простой логики (если..., то...) и без привязки к временнЫм интервалам. А тут нужно "вести учёт" каждой микросекунды...

Чисто логически, наверно, смог бы представить себе алгоритм будущей проги, но уверен, что в лучшем случае это будет "изобретение велосипеда", а в худшем - хитро-вымученый глюкавый код...
По этому хотелось бы сначала узнать, как эту задачу решают в принципе - к чему привязываются, как ведут отсчёт, как фиксируется принятый код в МК и т.д.

Welcome61: ...двигаюсь по времени и опрашиваю вход порта.

В смысле - ожидаете какое-то время? Какое именно?
"Двигаетесь" маленькими шагами? Грубо говоря - занимаетесь частичной "оцифровкой" принятого сигнала, потом ищете перепад?
А чем лучше организовать в этом случае временнУю задержку - подпрограммой или таймером?

Я, к стати, представлял себе другой вариант - поймав первый перепад, отсчитываю время, чуть большее длительности одного бита и читаю порт. Если там ноль, то "пишу" ноль, а если там 1, то "пишу" 1.
Или это не верно?

Ещё был вариант (на уровне подсознания) - отрабатываю все подряд прерывания по входу, фиксируя значение таймера и сбрасывая его после обработки. После анализа полученного числа решаю, должен ли быть в это время импульс или это просто помеха, и если должен, то в зависимости от величины полученного значения фиксирую "0" или "1". Хотя, это сложнее...

 

chav1961: ...тогда проще применить еще и декодер, раз уж кодер нашли

А что это за микросхема, и какие у неё выходы?
Всё равно, придётся отрабатывать полученный код в МК. Но, ведь, можно это делать сразу, без применения промежуточных декодеров.

chav1961: ...поставить вместо кодера микроконтроллер...

Придётся писать прогу ещё и для него...
Не ужели получится дешевле приобретения готовой стандартной мс кодера? Кстати, её и приобретать не нужно - есть несколько убитых пультов от разной аппаратуры. Даташиты уже скачал...

Первыми, к стати, были варианты мс от комповой клавы (жаль, что потребление большое ~70...100мА), и известный кодер от сигнализаций HT12E.
Потом вспомнил об обилии дистанционок...