Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: RC 5 кодер/декодер на ATmega162
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Azimov
Люди!!! Помогите разобраться начинающему!!!
Есть задача: на одном контроллере генерировать команду и передать ее по протоколу RC 5, а на другом принять ее и декодировать. И в соответствии с командой поменять параметры ШИМ(длину импульса) на одном из выходов (всего их должно быть 3).

Прочитал много информации на эту тему, но тк только начинаю осваивать программирование МК, то мало чего понял из этого. laughing.gif
Очень надеюсь на вашу помощь! Заранее спасибо.
DpInRock
Тогда осваивайте с чем-нибудь, с тем, что понимаете. Там, светодиодом поморгать. А готовых программ в гугле - просто море.
Azimov
В том то и дело, что светодиоды, кнопки и прочие мелочи уже освоил. Захотелось разобраться в чем то более высоком, вот и решил сделать этот проект....
baken
Передавать будете по трем каналам, это понятно, а принимать, тоже по трем каналам? И еще вопрос, одновременно или по очереди.
Azimov
Судя по всему задачу объяснил не очень понятно. Исправлюсьsmile.gif

ШИМ нужны только для того чтобы менять яркость трех светодиодов подключенных к приемнику. А передавать и принимать буду по одному каналу.
baken
Ну нехилую Вы себе задачку поставили. Вам нужно по таймеру передавать RC5 последовательность, и также по таймеру захватывать и расшифровывать.
Наверное лучше всего начать с передачи, чтобы телик понимал. На нем и тренироваться. Например на громкости. Увеличить, уменьшить.
Самый простой путь, это решать без таймеров в лоб. Пишете подпрограмму задержки на 13.5us. Допустим несущая у Вас 36КГц, точнее нужно выяснять по инструкции телика.
Ну и все, посылки это пачки импульсов по 32 импульса в пачке. Прямо по протоколу. И паузы между пачками такие же по 32 импульса, только ничего не выдается.
А чередование пачек и пауз как раз в RC5 описано. http://infrared.h1.ru/protocol.shtml
Управление инфракрасным светодиодом прямое, включить, 13.5us ждем, выключить, опять 13.5us ждем. И так 32 раза подряд.
Осталось по протоколу вызывать эти пачки и паузы, и можно сделать вывод команды на инфракрасный светодиод для телика.
Одно предостережение. В зависимости от режима работы, обычно инфракрасные светодиоды включают в очень тяжелом для них режиме, чтобы дальность обеспечить,
поэтому чтобы его не спалить, проследите, чтобы он был всегда выключен, и включался только во время передачи импульсов.
А как сумеете теликом управлять, пишите. Разберем приемник.
Azimov
Спасибо большое за совет!!! smile.gif
Goodefine
Цитата(Azimov @ Sep 28 2009, 13:28) *
Есть задача: на одном контроллере генерировать команду и передать ее по протоколу RC 5...

А чем SAA3010 не устраивает? Одной головной болью меньше...
Цитата(Azimov @ Sep 28 2009, 13:28) *
...а на другом принять ее и декодировать...

Рабочих исходников море. Даже здесь...
Azimov
Исходников то много, но у меня не очень получатся разобраться в том, что там происходит... И еще такой вопрос с тактовой частотой 1МГц можно осуществить прием и декодирование?
Единственное что я пока что понял из всех исходников это то что: МК ждет внешнего прерывания от какой нибудь из ножек(INT0-2), как только изменился уровень на ножке, он уходит в обработку этого прерывания. В ней осуществляется подсчет длительности импульса. А вот дальше не очень понятно что происходит.
А на счет SAA3010 я ее хотел использовать, но решил разбираться до конца и пошел по пути наибольшего сопротивления...
baken
С 1MHz Вы сможете сделать эту штуку, но почему не использовать встроенный RC генератор на 8МГц и не рисковать. Чтобы не заморачиваться с прерываниями и инициализацией оборудования, сначала напишите работающую программу в лоб. Чтобы она без прерываний, таймеров и прочего тупо принимала и передавала Ваши данные. Как заработает, можно будет по одному куску переводить на аппаратные возможности чипа.
У программы написанной без прерываний есть преимущество. Она наглядна и понятна.
Azimov
4 baken:
Как я понял во всех мегах предустановленная частота 1 МГц и для того чтобы ее поменять нужно изменить определенный бит в определенном регистре? Если это так, то в каком регистре и какие биты нужно поменять? В даташите не нашел ничего про изменение частоты...
baken
В даташите изменение частоты внутреннего генератора описано в разделе фьюзы, меняется с помощью программы AVRStudio и программатора.
PS: Не надо спасибо на каждый чих писать, только тему засоряет. Мне в свое время тоже кто то помогал.
Azimov
Просто приятно, когда тебе помогают... Я бы в одиночку с этим всем разбирался бы год наверное...
DpInRock
Айзек, это лишний раз показывает, что вам рано идти по какому-либо пути.
Начните с кнопки, которую соедините с ножкой INT0 например. Также ножки RX и TX соедините с компом. После этого - изучайте.
RC5 вы не сделаете никогда (при текущем уровне познаний). О изучать намного способнее от простого к сложному. А от сложного к простому - это путь Шерлока, но не Айзека.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.