#define SIZE_BUFFER (16)
unsigned int measuring_value_buf[ SIZE_BUFFER + 1 ];
unsigned int sum = 0;
unsigned char index = 0;
unsigned int Oversampling( unsigned int measuring_value )
{
measuring_value_buf[ index ] = measuring_value;
sum += measuring_value;
index++;
if( index > SIZE_BUFFER )
index = 0;
if( sum >= measuring_value_buf[ index ] )
sum -= measuring_value_buf[ index ];
else
sum = 0;
return (unsigned int)(sum >> 2);
}
//////////////////
C_task main( void )
{
unsigned char q;
for(q=0; q<20; q++ )
printf("%d %d\n", q,Oversampling( 100 )); //UP
for(q=0; q<20; q++ )
printf("%d %d\n", q,Oversampling( 0 )); // DOWN
}