Показать сообщение отдельно
Старый 15.09.2008, 21:56   #1   
Форумец
 
Сообщений: 552
Регистрация: 17.06.2005
Возраст: 42

dr.ON вне форума Не в сети
Как сделать "усреднитель" битовой последовательноости.

Как программно сделать аналог RC-цепочки на которую поступает прямоугольный сигнал( 0 - 1)

нада вычислить грубо говоря скользящее соотношение "1" и "0".

т.е.
...11000101010... - результат 50%
...100100100100... - 33%
...110110110110... - 66%

************************************************
sum = sum * 0.999 + X * 0.001
где X = 1 или 0
( ну это правда совсем извращения( нелинейность))
хотя не так уж и звращенно. Работает красиво.
************************************************
if( X == 1)
{
sum = sum + ( ( 1 - sum) / 1000)
}
else
{
sum = sum - ( sum / 1000)
}

Ктонибудь знает как проще?

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^
P.S. Забыл сказать - это нужно для реализации на 8ми битном микроконтроллере и следовательно решения в лоб( типа выделяем массив на N бит( кольцевой), кидаем туда биты и каждый раз пересчитываем "1" и "0" и делим вконце) неприемлемы.

P.S.Пока решил по первому методу
uint16 sum;
.............
sum -= ( sum >> 8);
if( X)
{
sum += 256;
}
.............
  Ответить с цитированием