ИК пульт управления на AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

как минимум 72 байта, но на самом деле больше - я не учитывал, что некоторые команды требует не 2, а 4 байта памяти - посчитал все по 2. при этом используется таймер, да еще с регистром захвата, т.е. как минимум есть еще код инициализации таймера где-то. кроме того, в моем коде никакая периферия, кроме единственного пина на порту, не требуется.
PB_EXPERT писал(а):
ARV писал(а):по формату функции это скорее ПЕРЕДАЧА кода, а не прием
Это прием.
тогда расскажите мне, что за параметры у нее? adr - я так понимаю, адрес девайса, а com - команда... и что получается? нафига при приеме знать адрес и команду? или в этих переменных наоборот, возвращается принятый результат?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
myx
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 371
Зарегистрирован: Чт июл 22, 2010 10:12:09

Сообщение myx »

ARV писал(а):можно даже на тини13 делать девайсы.
Вот, с исходником:
http://radioded.ru/content/view/129/1/
Последний раз редактировалось myx Пт сен 10, 2010 16:09:04, всего редактировалось 1 раз.
Реклама
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

ARV писал(а):или в этих переменных наоборот, возвращается принятый результат?
Да, в них возвращается результат.
ARV писал(а):как минимум 72 байта, но на самом деле больше - я не учитывал, что некоторые команды требует не 2, а 4 байта памяти - посчитал все по 2. при этом используется таймер, да еще с регистром захвата, т.е. как минимум есть еще код инициализации таймера где-то. кроме того, в моем коде никакая периферия, кроме единственного пина на порту, не требуется.
Это стандарная функция.
При необходимости, можно написать свою, но зачем изобретать колесо?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

PB_EXPERT писал(а):При необходимости, можно написать свою, но зачем изобретать колесо?
чтобы доказать самому себе, что способен на это - некоторые и этого не могут, только "стандартное" юзают
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

ARV писал(а):aleksandr-zh, при всем уважении: приведенный кусок кода как-то слабо вяжется с RC5.
Роман,
вот видео работы устройства:
http://narod.ru/disk/24861862000/MOV00014.3gp.html
(исправил ссылку)

а вот полный код
лежит тут давно :)

http://bascomavr.3bb.ru/viewtopic.php?id=287
Последний раз редактировалось aleksandr-zh Вт сен 14, 2010 07:52:31, всего редактировалось 1 раз.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aleksandr-zh писал(а):
ARV писал(а):aleksandr-zh, при всем уважении: приведенный кусок кода как-то слабо вяжется с RC5.
Роман,
вот видео работы устройства:
http://narod.ru/disk/24822911000/MOV00014.3gp.html

а вот полный код
лежит тут давно :)

http://bascomavr.3bb.ru/viewtopic.php?id=287
я читал ваше же собственное описание, где вы и говорите, что это не прием RC5, а некий прием вообще - лишь бы как-то работало. разве не так?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

ссылку читали? ТЗ: распознать нажатие кнопок на пультах
кнопки распознались? :)
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

--повтор
Последний раз редактировалось aleksandr-zh Пн сен 13, 2010 23:20:36, всего редактировалось 1 раз.
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

заказали одно устройство, там есть функция тестирования ПДУ
вот видео, 950 кБ
http://narod.ru/disk/24856693000/MOV00015.3gp.html

принимаемые от пульта данные отображаются на 7-сегментном в HEX виде

hex выложить? :)
прошьете, Роман, попробуете...
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Александр, не беспокойтесь понапрасну :) прием и декодирование RC5 или какого-то иного стандарта - это одно, а "реакция на нажитие кнопки пульта" - это другое. речь пока только об этом.

в сущности, прием именно RC5 очень прост, даже при вашем подходе функция будет отличаться от вашего варианта несильно, может даже, практически никак :beer:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

лукавите, уважаемый, ох лукавите :)
вы утверждаете, что указанный мною метод - самодельшина
А ведь сами, в 2009 году написали о том же самом!
Т.е, мы вместе изобрели велосипед ;)

http://www.radiokot.ru/forum/posting.ph ... 0&p=224407

ARV Заголовок сообщения:
Добавлено: Вт май 19, 2009 6:58 pm

Откуда: Новочеркасск

у меня получилось нечаянно

я сделал RC5 по алгоритму, описанному во многих источниках. да, анализ предыдущего состояния и т.п. но при проверке оказалось, что из 5-и пультов, которые у меня дома есть, только от магнитолы PHILIPS передает в стандарте RC5, а остальные - нет. поначалу мне казалось, что мой алгоритм при приеме не-RC кодов работает неверно, но потом я увидел закономерность и подправил алгоритм: если принимать не 14 бит (как положено для RC5), а 32, то по этому алгоритму прекрасно принимаются коды от ВСЕХ моих пультов (техника Samsung, LG, BBK и Toshiba).
В начале каждого кода четко прослеживаются биты семейства, затем toggle-бит (если он есть), затем код команды и т.п. Единственный нюанс: коды эти не совпадают с документированными, то есть если в документации написано, что "Volume+" должна иметь код 0x10720432 (например), то мой алгоритм показывает 0xAe004323 (опять же например). Это совсем не помешает для любительских поделок - не так ли?[/b]


_________________
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aleksandr-zh писал(а):лукавите, уважаемый, ох лукавите :)
ну в чем же лукавство вы видите?
во-первых, я делал прием именно RC5 - и сделал его!
во-вторых, сам алгоритм без моего желания оказался приспособленным и для различения других кодов - но я-то в этом не виноват!
в-третьих, сейчас я так же утверждал, что сделал именно прием RC5, а не чего попало.

так в чем же я лукавлю?

если абстрагироваться от RC5-кода, с чего и пошел разговор, то для самообучаемых поделок или иного творчества все приемы приемлемы. просто если мы беремся сравнивать реализацию чего-либо, надо сравнение проводить адекватно: если прием RC5 - то именно этот код, а если чего попало - то чего попало, а не RC5... ваш пример, если я не ошибаюсь, принимает 8 бит - это не укладывается в нормы ни одного стандарта - не только RC5, но и NEC, SONY и т.п. распространенных, поэтому сравнение изначально некорректно.

наконец, частично из-за собственных тяжких раздумий, частично из-за начавшегося тут спора, я в настоящее время сделал очередную версию алгоритма приема и распознавания кодов почти всех стандартов (без использования таймеров и т.п. прерываний), и опять-таки: распознавание есть, но совпадения со стандартами нет :) однако, если вы решите снова затеять сравнение - давайте оговорим условия :) иначе снова окажется, что прием 8-бит из 24 или 32 (которые передаются некоторыми пультами) не позволит не перепутать команды от них, в чем я убедился сегодня :) поэтому я все еще шлифую алгоритм, не показывая код...

кстати, как ваш алгоритм реагирует на команды именно RC5-стандарта? я вот сегодня долго бился над тем, как победить toggle-бит при приеме: получается, что из-за него одна и та же кнопка пульта выдает 2 разных кода (если рассматривать их просто как некий набор битов - как реализовано в вашем алгоритме, да и в моем так же).

и еще одна проблема с приемом сигналов от пультов TOSHIBA: там код передается только единственный раз при нажатии кнопки, а при удержании повторяется некий огрызок из двух импульсов, в итоге получается, что чуть ли не все кнопки излучают один и тот же код "2" :)

так что в приеме и распознавании сигналов любых (или почти любых) пультов довольно много подводных камней, чтобы решительно утвержать, что прием 8-битов достаточен для всех нужд (даже любительских).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

как принимает... я же видео, помнится выкладывал
http://narod.ru/disk/24861862000/MOV00014.3gp.html
полученный файл переименовать: изменить расширение на 3gp (это формат видео мобильников)

там как раз показано, как устройство реагирует на разные пульты
у менязаработали все, что были под рукой или приносили
Исключение - пульт от моего ТВ Самсунг 29Z... - вообще никакой реакции

могу осциллографом посмотреть... Если интересно, конечно ))

а по поводу лукавства:
вы лукавали в том, что утверждали онеработоспособности такого вот метода, и даже питали прием с передачей...
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aleksandr-zh писал(а):а по поводу лукавства:
вы лукавали в том, что утверждали онеработоспособности такого вот метода, и даже питали прием с передачей...
какое же это лукавство? придется повториться...
во-первых, я не утверждал, что метод неработоспособен :) я утверждал, что это не прием RC5. прочтите мои сообщения и удостоверьтесь в этом
во-вторых, если я спутал прием с передачей, так лишь потому, что с вашим бейсиком никаких дел не имел никогда и судил по нему из имеющихся у меня навыков Си: внешний вид функции с двумя параметрами заставил меня подозревать, что это не прием, а передача, ведь для передачи важно КОМУ и ЧТО передать, а при приеме надо бы принять ВСЕ... так что я готов признать лишь свою ошибку в разборе синтаксиса вашего бейсика - вполне простительную, как мне кажется :)

а теперь по поводу приема "любых пультов". сегодня я сделал почти так (а может, и совсем так же), как сделано у вас: определял длительность импульса и "называл" единицей долгий импульс, а нулем - короткий. так вот, 8 бит не позволяют однозначно определить кнопки даже в одном пульте, не говоря уже о разных - это я утверждаю с уверенностью 99.99%. прием 16 бит может дать сбои в пределах одного многокнопочного пульта (типа DVD) и среди разных пультов могут найтись одинаково принимаемые коды - это опять же подтверждено с гарантией 99.99%. завтра я буду тестировать на имеющихся в моем распоряжении пультах (6 шт) прием 32 бит - надеюсь, в этом случае определение будет действительно однозначным. когда я буду окончательно уверен во всем - я тоже могу показать видеодоказательства своих слов :)

вот такие пироги... поэтому я и сомневаюсь, что у вас так вот легко и непринужденно вышло принимать все-все-все и не путать это... на вашем видео, кстати, не показано, что ВСЕ кнопки ВСЕХ пультов дают РАЗНЫЕ коды - а ведь это важно!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

ARV писал(а): на вашем видео, кстати, не показано, что ВСЕ кнопки ВСЕХ пультов дают РАЗНЫЕ коды - а ведь это важно!
метров 300 в сеть выкачать не смогу - интернет "социальный" - 128 кб\с
я сделал несколько устройств, работающих в ПДУ. Программа - по вышеописанному алгоритму
Никто пока не бил :)

ради интереса проверю Ваши слова по поводу "ложного срабатывания" - аж интересно стало :)

Всем спокойной ночи!
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aleksandr-zh писал(а):Никто пока не бил :)
к/ф Напарник писал(а):- у вас на стройке несчастные случаи были?
- нет, а что?
- будут.
:))) :))) :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Вполне работоспособный вариант. Главное достоинство - минимализм. Но некоторые неудобства заметны на глаз: "нечестное" распознавание, слишком много допущений, что в итоге может привести к наличию ложных срабатываний. А вводить фильтры по допустимому диапазону - значить отказываться от минимализма... Кроме того, помехи весьма хитрые - обнаруживают себя потом, когда не надо...
Мне кажется не совсем удобным прием кода в виде:

Код: Выделить всё

 code = resive_ir();
Более гибкая система получается система с автоматом состояний. Вроде:

Код: Выделить всё

 switch (reciever_rc5(&time_front))
{
case CONTINUE:
...
break;
       
case ERROR:
...
break;

case RC5_CODE:
...
break;
}
Вызов функции по событию, чтобы не отвлекаться напрасно... Код усложнится не намного, зато будет гораздо удобнее.
Хотя я предпочитаю использовать реальные коды клавиш, определяемых алгоритмами, анализирующих и количество бит, и интервалы, и "зеркальность" (нет в пультах с extended системой), и т.д. В результате чего вероятность ошибки становится исчезающе мала... Но уже вижу применение Вашему коду - в 2313 не влазит у меня пять кодировок + USB-CDC, приходится м8 исползовать, а так возможно и получится... Для компового пульта критичность невелика...
Все ИМХО... В целом интересная библиотека...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

спасибо за отзыв :) в общем, во главу угла ставилась именно простота и доступность понимания, а затем уже идет надежность. я вижу основное преимущество моего подхода в том, что код получился практически аппаратно-независимым - задержки библиотечными функциями есть практически в любой системе для любого МК, ну а работа с портами сведена к одному макросу. я предполагаю, что и PIC будет работать по этой программе, не только AVR.

пока что я заметил только одно узкое место - это появление на выходе TSOP каких-то случайных импульсов... для систем без обучения это не страшно, а вот если такие импульсы проскочат во время обучения - это уже неприятно...

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

реальные коды клавиш и прочее - это, имхо, дело более высокого уровня, "обертки" для системы разных событий. сколько я ни пытался событийную модель в свои проекты встроить - либо не вписывался по памяти, либо не находил выгоды... пора задуматься о многозадачной ОС :) там это дело будет родным...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Сообщения: 95
Зарегистрирован: Вс авг 22, 2010 09:23:08

Сообщение svs39 »

ARV писал(а):спасибо за отзыв :) в общем, во главу угла ставилась именно простота и доступность понимания, а затем уже идет надежность. я вижу основное преимущество моего подхода в том, что код получился практически аппаратно-независимым - задержки библиотечными функциями есть практически в любой системе для любого МК, ну а работа с портами сведена к одному макросу. я предполагаю, что и PIC будет работать по этой программе, не только AVR.

...
Вам СПАСИБО за работу! :music: - давно хотел добраться до пульта, но пугало их разнообразие- теперь два домашние ТВпульта декодируются устойчиво(причем один с имп повтора), а от кондиционера-нет- ну и не надо(возможно ТСОР38 не подходит).
Хотел оставить комментарий на Вашем сайте, да напрягает регистрация с набором плохо читаемых контрольных символов. Успехов!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»