unsigned int filter_2(unsigned int data)
{
#define filter_len 10
static unsigned int buffer[filter_len] = {0};
static unsigned int* buffer_p = (int*)buffer + (filter_len - 1);
static unsigned int sum = (filter_len >> 1);
sum -= *buffer_p;
*buffer_p-- = data;
sum += data;
if (buffer_p < buffer)
{
buffer_p += filter_len;
}
return sum / filter_len;
}
|