реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подскажите, как правильно декодировать протокол
Pyku_He_oTTyda
сообщение Jan 31 2007, 19:21
Сообщение #1


Профессионал
*****

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



Имеется некая последовательность, одну посылку из нее нарисовал (вкладка)
Тайминги расписал, то, как я понимаю назначение посылок тоже...
Подскажите, как правильно декодировать посылку, так как никогда этим не занимался...теории нет.
Может есть вероятность, что она похожа на какую нибудь стандартную последовательность.
В общем буду благодарен за любую информацию!
Заранее спасибо!

З.Ы. пока думаю настроить прерывание на изменение уровня, и между возникновениями флагов считать длительность. Правильно ли?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jan 31 2007, 20:19
Сообщение #2


Знающий
****

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



Смахивает на Ик передачу ,но не РС5 ,
здесь просто ,запускаете таймер по прерыванию по нарастающему фронту на 2мс,если есть прерывание от таймера записываем 1 ,если снова внешнее до 2мс сбрасываем таймер и записываем 0.
Из прерывания от таймера выходим без установки флага I.
Остальное дело техники.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Jan 31 2007, 21:03
Сообщение #3


Профессионал
*****

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



ага, попробую. А стартовый отслеживать таймером на 7мс, как я понял?
Кстати, правильно, что длинный положительный импульс "0" а короткий "1"? так кажется есть в каком то протоколе.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 31 2007, 21:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Pyku_He_oTTyda @ Jan 31 2007, 20:21) *
З.Ы. пока думаю настроить прерывание на изменение уровня, и между возникновениями флагов считать длительность. Правильно ли?

В радиоприемниках такой протокол часто используется, только подлиннее посылка. И картинка сильно портиtся, если сигнал слабый. Поэтому я заводил сигнал на канал захвата таймера, писал в буфер моменты всех фронтов (около 80 байт), а потом анализировал путем сравнения длительностей 1 и 0. "На лету" легко распознать, если картинка нарисована на бумаге. smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Jan 31 2007, 21:32
Сообщение #5


Профессионал
*****

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



Цитата
Поэтому я заводил сигнал на канал захвата таймера, писал в буфер моменты всех фронтов (около 80 байт)

можно об этом чуть поробнее?


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jan 31 2007, 22:38
Сообщение #6


Знающий
****

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



Цитата(Pyku_He_oTTyda @ Jan 31 2007, 21:03) *
ага, попробую. А стартовый отслеживать таймером на 7мс, как я понял?
Кстати, правильно, что длинный положительный импульс "0" а короткий "1"? так кажется есть в каком то протоколе.


Можно отслеживать старт для надежности ,а можно и не отслеживать если зараннее известна длина пакета ,можно например отследить отсутствие пакета и сделать сброс ,тут как угодно.
Тоже самое с короткими и длинными импульсами ,может быть 1 а может 0,смотря как протокол замутили.
Go to the top of the page
 
+Quote Post
xemul
сообщение Jan 31 2007, 22:38
Сообщение #7



*****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 31 2007, 22:56
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Pyku_He_oTTyda @ Jan 31 2007, 22:32) *
Цитата
Поэтому я заводил сигнал на канал захвата таймера, писал в буфер моменты всех фронтов (около 80 байт)

можно об этом чуть поробнее?

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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 31 2007, 23:54
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



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

З.Ы. пока думаю настроить прерывание на изменение уровня, и между возникновениями флагов считать длительность. Правильно ли?


Я определял таким образом 2мкс.
Если тактируется одним кварцем и длина посылки не велика, то можно просто непрерывно сканировать по прерыванию от таймера с периодом в 0.5мс
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 1 2007, 00:11
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Раз тема в разделе AVR, то делаю заключение, что декодировать сигнал видимо нужно с помощью AVR, так? Я не большой знаток AVR, поэтому не сердитесь, если скажу глупость smile.gif
У какого-нибудь таймера AVR есть режим Capture (захвата) по фронту? Если есть, то какая проблема чтобы его использовать и получать точные отсчеты между фронтами импульсов? А уж когда имеются интервалы отсчетов от всей посылки, то никто не мешает "прореживать" ее с какой угодно частотой.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Feb 1 2007, 07:29
Сообщение #11


Профессионал
*****

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



Цитата
Сигнал всегда такой чистый, или может быть зашумлен между посылками?

достаточно чистый, будет передается по токовой петле 0-20ма
Цитата
Стабильность тактовых частот источника и контроллера декодера?

Кварц 8 мег
Спасибо всем! В голове начало вырисовыватсяsmile.gif

Цитата
У какого-нибудь таймера AVR есть режим Capture (захвата) по фронту?

увы, не попадалось...


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
add
сообщение Feb 1 2007, 10:24
Сообщение #12


Местный
***

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



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


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Feb 1 2007, 10:50
Сообщение #13


Дух погибшего транзистора
****

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



Цитата
Цитата

У какого-нибудь таймера AVR есть режим Capture (захвата) по фронту?

увы, не попадалось...

blink.gif Как это не попадалось? Бегом смотреть даташиты на любую мегу, искать там 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.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 1 2007, 11:15
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



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

О, то, что я делал и что хотел предложить a14.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
GinRider
сообщение Feb 1 2007, 11:20
Сообщение #15


Участник
*

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



Похоже на SONY SIRC, но длительности не те.
http://www.sbprojects.com/knowledge/ir/sirc.htm
В этом случае 0 и 1 - наоборот, поскольку на выходе фотоприёмника 0 соответствует наличию модулированного сигнала.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016