в аппноте от атмела написано что достаточно сложить 16 10-ти битный значения и потом их поделить на 2 тогда получим 12 битное.
У меня придумалось только через буфер на 16-ть значений. Может есть мнее затратный по памяти алгоритм?
unsigned int Oversampling(unsigned int measuring_value)
{
unsigned double int sum = 0;
measuring_value_buf[index++] = measuring_value;
index &= 0x0F;
for(unsigned char i = 0; i < 16; i++)
{
sum = sum + measuring_value_buf[i];
}
return (unsigned int)(sum >> 2);
}