У вас вот такой алгоритм:
unsigned int Exponential_Sliding_Average(unsigned int measuring_value)
{
static unsigned int y;
y = y + measuring_value - (y >> 3);
return(y >> 3);
}
потом вы пишите что он работает вот так:
Если на входе 7, то на выходе
0,1,2,3,3,4,4,4,4,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7.....
Не сходится!
На входе 7: meeasuring_value = 7;
На начлаьном шаге: y[i-1] = 0;
Получим: y[i] = 0 + 7 - (0 >> 3) = 7
на выход даем y[i] >> 3 = 7 >> 3 = 0
получается что "0" всегда если на входе 7.