Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.10.2013, 18:49
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Универсальный декодер ДУ, самый лучший алгоритм
Добрый вечер уважаемые!
Требуется разработать декодер для сохранения в буфер команд с любого протокола ДУ. Разработал вариант, основанный на подсчете интервалов импульсов и пауз, все вроде хорошо, но есть недостатки.
- бывает, возникают трудности с обучением команд
- много ресурсов занимает сохранение одной команды (24 байта).
Хочется оптимизировать работу устройства.
Забыл добавить , мой метод работает почти с любыми протоколами ИК ДУ
Проверил на NEC, Sony SIRC, Sanyo.
RC5 , RC6 - из за тоджл бита команда срабатывает через одно нажатие.
Есть идея попробовать делать дискретные замеры состояния ножки , и сохранять в память. Стоит ли пробовать? И может есть лучше метод?
С ув. Артем
|
|
|
|
20.10.2013, 20:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Меряем длительности времени "есть импульсы ИЛИ единица" - по этой длительности определяем единица или ноль, и в паузе ("нет импульсов ИЛИ ноль") сдвигаем 1 бит. Так для rc5 делаем 32 раза и на выходе получаем 4 байта. Этот алгоритм успешно ловит коды как с фотоприемника-декодера, так и напрямую с выхода чипа-передатчика (подключенного к базе управляющего светодиодом транзистора)
|
|
|
|
21.10.2013, 01:22
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Я нашел идеальный метод кодирования/декодирования команд. Уже пишу для будущего "мини-умного дома"
Девайсина будет обучаться любым радио брелкам , которые совпадают по несущей частоте. Метод основан на подсчете длительности каждого импульса , длительность которых в виде байтового числа сохраняется в ОЗУ , после я пакую в еепром 24с08. Метод очень прожорливый , 1 команда занимает 100байт памяти, благо что сейчас есть "жирные" контроллеры. Но зато такой метод, теоретически , работает с любым пультом
Код:
Код:
|
void decode_ir_data()
{
tim_system_rc=0x04;
if(start) // если установлен старт бит - начинаем измерять импульсы
{
data_ir[a] = timer_ir;
a++;
timer_ir=0; // обнуляем счетчик
if(a›99)
{
start=0; // сбрасываем старт бит
a=0; // сбрасываем счетчик данных массива
tim_system_rc=0; // сбрасываем системный таймер
tim_stop=1;
}
}
if(start==0) // старт бит установлен? нет!
{
start=0x01; // да!
timer_ir=0;
}
timer_vol=0;
}
void timer_stop()
{
start=0;
tim_system_rc=0;
tim_stop=1;
timer_vol=1;
a=0;
} |
decode_ir_data() - код выполняется в обработчике прерывания ИНТ
timer_stop() - в прерывании по переполнению таймера
Код:
|
for(d=0; d‹100; d++)
{
if (data_ir_eep0[d] › 2)
{
if (((data_ir_eep0[d]+2) › data_ir[d]) && ((data_ir_eep0[d]-2) ‹ data_ir[d])) // команда Вкл.Откл. питание
{}
else cmd_ok=0;
}
timer_led_shou=0;
data_ir[d]=0; // стираем буффер
} |
Проверка принятой команды
Последний раз редактировалось artyomugr; 21.10.2013 в 01:35.
|
|
|
|
21.10.2013, 23:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Сообщение от artyomugr
|
Я нашел идеальный метод кодирования/декодирования команд.
|
Как насчёт протоколов с кодом повтора?
|
|
|
|
21.10.2013, 23:13
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
схавает тоже. У меня с предыдущим способом работало замечательно, а с этим должно быть еще лучше.
Уже по крайней мере дружит с таким пультом : http://forum.cxem.net/index.php?show...0#entry1674496
У этого человека , шурует повтор , а посылка состоит из 52бит. Даже мой простой декодер с ним дружит по умолчанию.
Последний раз редактировалось artyomugr; 21.10.2013 в 23:28.
|
|
|
|
21.10.2013, 23:40
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Поставьте четвертый кортекс, памяти побольше, прямо на 1МГц пишите все, что на ногу прилетит и воспроизводите вместе с шумами. Не все ли равно? Железо нынче дешевое. Такой подход многие считают приемлемым.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
21.10.2013, 23:55
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Я 8-биткой меряю длительность перепадов, и пишу в ОЗУ. А из ОЗУ в еепром 24Схх
открыл бинарник , а там еще и точность высокая : )) погрешность в одно значение.
Можно делать перехватчики таким способом.
У меня в Atmega328 влез декодер на 11 команд статическая индикация , работа с еепром 24С16 8 пунктов меню , в каждом меню от 4 до 10 подменю . на данный момент занято 48% .
|
|
|
|
21.10.2013, 23:57
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Сообщение от Easyrider83
|
прямо на 1МГц пишите все, что на ногу прилетит и воспроизводите вместе с шумами.
|
Улыбнуло : ))))
|
|
|
|
22.10.2013, 04:57
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Если просто принимать команды без ретрансляции может вот такой метод подойдет:
http://ziblog.ru/2013/05/14/distants...-ik-pulta.html
__________________
ziblog.ru
|
|
|
|
22.10.2013, 07:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Универсальный декодер ДУ, самый лучший алгоритм
Сообщение от Easyrider83
|
Поставьте четвертый кортекс, памяти побольше, прямо на 1МГц пишите все, что на ногу прилетит
|
А они в корпусе сот-23 бывают, как мелкие ПИКи? А то размеры платы обычно очень ограничены, времена советских телевизоров с платой 300х400 уже давно прошли
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:26.
|
|