Ну и как сделал-то? (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Анатоль 21 марта 2003 г. 17:53
В ответ на: делал такое(+) отправлено L.A. 21 марта 2003 г. 16:50

Поскольку контроллер суть вещь тупая и ограниченная, то запомниание команд и распознавание выполнено довольно хитро :-) Я не запоминаю всю команду - просто памяти не хватает. Я запоминаю ее образ, мне же не надо ее хранить для последующей выдачи. Т.е. для каждой команды вычисляется CRC16 и именно она хранится в памяти. Затем при распознавании у пришедшей команды снова вычисляется CRC и затем ищется в памяти подходящая. Для каждой команды выделено по пять возможных CRC. Плюс CRC запоминается только если она совпала 3 раза подряд. Это значительно повышает надежность распознавания но не является панацеей. С этой точки зрения наверно имеет смысл применить кой-нить спецушный код, дающий возможность распознавать код как вероятность, похожесть. Т.е. имхо код исправляющий ошибки имееющий большое кодовое расстояние D-min, вобщем решает похожую задачу - попали в зазор - наша команда, не попали, не наша. Вот посоветоваться хочу, стоит применить другой код или нет. Дело в том, что например у Панасоника команды очень длинные, и эффективность CRC16 сильно падает и бывает выполянется команда, которая не была запомнена, слава Богу это не критично, не лифтом управляем, но неприятна сама вероятность такого события.
Что касается кодов повтора. Например регулируем угол поворота задвижки кондишена(образно). Приходит первая команда - "повернуть задвижку", затем команды "повтор"-"повтор"-"повтор"-"повтор"-"повтор". Есть две корявые ситуации:
- первая команда потеряна, либо в случае того, что юзер нажал кнопарик, а потом довернул пульт, либо в следствие помехи
- каждая команда повтора выдается и воспринимается как отдельная посылка, т.е. это уже другая команда.
Сейчас ситуация разрешается так, что только первая команда в таком пульте воспринимается как команда, а все последующие считаются повтором предыдущей. Имхо, решение не слишком изящное, но работает. Можно конечно заставлять юзера постоянно давить кнопку для регулировки, но это еще хуже с потребительской точки зрения.

А я и не говорил что именно в RC-5 команды инвертируются :-) я говорил об одном битике. И если запомнить команду с четным битом, то команда с нечетным невоспримется, при дется заново давить кнопку и материть разработчика - я так умру от икоты :-)

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru