|
Подскажите, как правильно декодировать протокол |
|
|
|
Jan 31 2007, 19:21
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Имеется некая последовательность, одну посылку из нее нарисовал (вкладка) Тайминги расписал, то, как я понимаю назначение посылок тоже... Подскажите, как правильно декодировать посылку, так как никогда этим не занимался...теории нет. Может есть вероятность, что она похожа на какую нибудь стандартную последовательность. В общем буду благодарен за любую информацию! Заранее спасибо! З.Ы. пока думаю настроить прерывание на изменение уровня, и между возникновениями флагов считать длительность. Правильно ли?
Эскизы прикрепленных изображений
--------------------
Андрей Смирнов
|
|
|
|
|
Jan 31 2007, 22:38
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(Pyku_He_oTTyda @ Jan 31 2007, 21:03)  ага, попробую. А стартовый отслеживать таймером на 7мс, как я понял? Кстати, правильно, что длинный положительный импульс "0" а короткий "1"? так кажется есть в каком то протоколе. Можно отслеживать старт для надежности ,а можно и не отслеживать если зараннее известна длина пакета ,можно например отследить отсутствие пакета и сделать сброс ,тут как угодно. Тоже самое с короткими и длинными импульсами ,может быть 1 а может 0,смотря как протокол замутили.
|
|
|
|
|
Jan 31 2007, 22:38
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Pyku_He_oTTyda @ Jan 31 2007, 19:21)  Имеется некая последовательность, одну посылку из нее нарисовал (вкладка) Тайминги расписал, то, как я понимаю назначение посылок тоже... Подскажите, как правильно декодировать посылку, так как никогда этим не занимался...теории нет. Может есть вероятность, что она похожа на какую нибудь стандартную последовательность. В общем буду благодарен за любую информацию! Заранее спасибо!
З.Ы. пока думаю настроить прерывание на изменение уровня, и между возникновениями флагов считать длительность. Правильно ли? Сигнал всегда такой чистый, или может быть зашумлен между посылками? Стабильность тактовых частот источника и контроллера декодера? Если тактухи источника и контроллера ползают, и сигнал зашумлен, я не генерю по нему прерывания, а анализирую изменение сигнала в таймерных прерываниях с частотой 2/te (te - длительность минимального элемента в посылке; в Вашем случае - 1 мс). В привязке к приведенной картинке: удобно отслеживать перепады 0/1, по ним подстраивать таймер, получать по таймеру 16 (8, если перестроить таймер на te) отсчетов для хидера посылки и по 8 (4) отсчетов для каждого бита. Как их обрабатывать - сравнивать ли с образцом, счетчиком ли (н-р, при выборке sample? cnt++: cnt--; по окончании бита if(cnt == ..)...), зависит от зашумленности сигнала. При наличии шума очень рекомендую не иcпользовать счетчик, а последнюю выборку для бита проверять на == 0. Если шума нет, то можно по перепаду 0/1 генерить прерывание и запускать таймер на длительность 1.5*te для второй выборки (считаем, что первая уже была, и она = 1; 1.5*te - чтобы попадать выборкой на середину следующего элемента), и на длительность te для последующих в течение приема одного бита или хидера. Дальше также. Если и тактухи не плавают, то можно обойтись одной синхронизацией таймера на всю посылку. ЗЫЖ PWM 3:1/1:3 - не совсем обычно (н-р, в кодерах сигналок обычно 2:1/1:2) и более жестко по допускам на разброс тактух, но в плане обработки - просто PWM.
|
|
|
|
|
Jan 31 2007, 22:56
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Pyku_He_oTTyda @ Jan 31 2007, 22:32)  Цитата Поэтому я заводил сигнал на канал захвата таймера, писал в буфер моменты всех фронтов (около 80 байт) можно об этом чуть поробнее? исходников этого проекта сейчас нет. И сейчас нужно ехать есть что-то и спать где-то :-) Основная мысль правильная - прерывание по фронту. Если ресурсы процессора не заняты - то может и достаточно. Завтра, думаю, будет время.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 31 2007, 23:54
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Pyku_He_oTTyda @ Jan 31 2007, 20:21)  Имеется некая последовательность, одну посылку из нее нарисовал (вкладка) Тайминги расписал, то, как я понимаю назначение посылок тоже... Подскажите, как правильно декодировать посылку, так как никогда этим не занимался...теории нет. Может есть вероятность, что она похожа на какую нибудь стандартную последовательность. В общем буду благодарен за любую информацию! Заранее спасибо!
З.Ы. пока думаю настроить прерывание на изменение уровня, и между возникновениями флагов считать длительность. Правильно ли? Я определял таким образом 2мкс. Если тактируется одним кварцем и длина посылки не велика, то можно просто непрерывно сканировать по прерыванию от таймера с периодом в 0.5мс
|
|
|
|
|
Feb 1 2007, 07:29
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Цитата Сигнал всегда такой чистый, или может быть зашумлен между посылками? достаточно чистый, будет передается по токовой петле 0-20ма Цитата Стабильность тактовых частот источника и контроллера декодера? Кварц 8 мег Спасибо всем! В голове начало вырисовыватся  Цитата У какого-нибудь таймера AVR есть режим Capture (захвата) по фронту? увы, не попадалось...
--------------------
Андрей Смирнов
|
|
|
|
|
Feb 1 2007, 10:24
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Писал на асме для приемника ДУ. Оч похоже. Делал следующим обрзом: Брал прерывание раз в 10 меньше самой, в вашем случае наверное можно 10кГц. В прерывании проверял вход, и увелич. соответствующюю переменную(короче "считал" длинну), проверяя границы максимальные(это в вашем случае можно 8мс ) и минимальные (можно 4мс) для старт имп. Если все ок(пришел ст.имп.) то начинаем проверять таким же макаром низкий уровень после ст.имп. Если все хоккей, тогда мы знаем что пришел старт. Далее: По следующему полож.фронту начинаем отсчет, проверяя мах значение(больше к примеру 5мс). После заднего фронта сравниваем значение счетчика с точкой посередине длительности (1 или 0). если больше -значит 0, меньше 1. Ждем следующего переднего фронта,(также проверяем на max знач. низкого уровня..:-)) и так далее.. Если значение низкого уровня превысила мах, то посылка принята! Начинаем анализировать... Вот еще ссылочки по ПДУ протоколам, мож пригодится..:-) http://slydiman.narod.ru/scr/kb/ir.htmhttp://www.sbprojects.com/knowledge/ir/ir.htm
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Feb 1 2007, 10:50
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288

|
Цитата Цитата У какого-нибудь таймера AVR есть режим Capture (захвата) по фронту?
увы, не попадалось...  Как это не попадалось? Бегом смотреть даташиты на любую мегу, искать там 16-разрядный timer/counter1, раздел про input capture unit.
--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
|
|
|
|
|
Feb 1 2007, 11:15
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(rezident @ Feb 1 2007, 01:11)  Раз тема в разделе AVR, то делаю заключение, что декодировать сигнал видимо нужно с помощью AVR, так? Я не большой знаток AVR, поэтому не сердитесь, если скажу глупость  У какого-нибудь таймера AVR есть режим Capture (захвата) по фронту? Если есть, то какая проблема чтобы его использовать и получать точные отсчеты между фронтами импульсов? А уж когда имеются интервалы отсчетов от всей посылки, то никто не мешает "прореживать" ее с какой угодно частотой. О, то, что я делал и что хотел предложить
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Feb 1 2007, 11:20
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 13-10-06
Из: Финляндия
Пользователь №: 21 273

|
Похоже на SONY SIRC, но длительности не те. http://www.sbprojects.com/knowledge/ir/sirc.htmВ этом случае 0 и 1 - наоборот, поскольку на выходе фотоприёмника 0 соответствует наличию модулированного сигнала.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|