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

 
 
 
Reply to this topicStart new topic
> Как лучше декодировать протокол DiSEqC.
Pat
сообщение Feb 10 2006, 18:20
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480



Уважаемые, есть протокол DiSEqC, которым управляют оборудованием спутникового телевиденья.
Физический протокол показан на рисунке.
Прикрепленное изображение

Частота импульсов 22кГц.
Вот здесь я нашел прекрасную идею, как это реализовать в железе.
http://www.telesys.ru/wwwboards/mcontrol/3...es/195221.shtml
ЦИТИРУЮ:
>Если еще проще, то CAPTURE логикой измеряют длительность импульсов после >компаратора и фильтруют еще более простым фильтром типа
>y[n]=( y[n-1] - (y[n] >> 5) + (abs(x[n]) >> 5) );
>Работает тоже хорошо, проверено.

Через транзисторный ключ я подал сигнал на компаратор в ATmega16. По событию от компаратора делаю захват таймера1.

Формулу y[n]=( y[n-1] - (y[n] >> 5) + (abs(x[n]) >> 5) ); до конца не понял, да и речь там идет об определении занятости телефонной линии. Подозреваю, что там должны быть другие константы.
В формуле не понятно вот это (y[n] >> 5) ведь y[n] это то, что мы получаем в данный момент тогда, как этот y[n] можно делить на 32 еще не получив его.
Определение и дешифрацию протокола я вроде как сделал без всяких ЦФ, но получилось громоздко.
Посему прошу помощь клуба.
1 Может, кто объяснит формулу и что делать с (y[n] >> 5)?
2 Какие еще есть способы определить (выделить из помехи) 22кГц?
Go to the top of the page
 
+Quote Post
SSerge
сообщение Feb 10 2006, 23:39
Сообщение #2


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

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(Pat @ Feb 11 2006, 00:20) *
Формулу y[n]=( y[n-1] - (y[n] >> 5) + (abs(x[n]) >> 5) ); до конца не понял, да и речь там идет об определении занятости телефонной линии. Подозреваю, что там должны быть другие константы.
В формуле не понятно вот это (y[n] >> 5) ведь y[n] это то, что мы получаем в данный момент тогда, как этот y[n] можно делить на 32 еще не получив его.
Определение и дешифрацию протокола я вроде как сделал без всяких ЦФ, но получилось громоздко.
Посему прошу помощь клуба.
1 Может, кто объяснит формулу и что делать с (y[n] >> 5)?

Вообще-то это не формула в смысле математики, а оператор присваивания. И y[n] это просто n-ный элемент массива.
Теперь откуда растут ноги у этого оператора.
Возьмём интегрирующую RC-цепь. Обозначим напряжение на её входе в момент времени i буквой X(i), а на выходе Y(i). В момент времени i-1 через резистор течёт ток I = (Y(i-1)-X(i-1))/R, отчего напряжение на конденсаторе за время tau увеличивается примерно на I*tau/C.
Итого:
Y(i) = Y(i-1) + (tau/(R*C))*(Y(i-1)-X(i-1));
Реализация на С, постоянная времени RC-цепочки в 32 раза больше шага дискретизации по времени (tau). Здесь x не сдвигается чтобы не терять младшие биты, а в результате в y сохраняется сдвинутый на 5 разрядов влево выход фильтра (Y(i)).
Код
int RCfilter(int x)
{
   static long y=0;
   y = y - (y>>5) + x;
   return (int)(y >> 5);
}

Собственно никаких массивов как видим не требуется.
Цитата
2 Какие еще есть способы определить (выделить из помехи) 22кГц?

Можно посчитать коэффициенты ряда Фурье для интересующей частоты f0. Т.е. помножить сигнал на синус и косинус и по отдельности просуммировать за время N периодов частоты f0, после чего обе суммы возвести в квадрат и сложить. Получится величина пропорциональная энергии сигнала в полосе частот порядка f0/N с центральной частотой f0.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post

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

 


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


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