SciFi (07.09.2011 23:59, просмотров: 83) ответил Т.Достоевский на Камрады! кто то на электрониксе привёл изящный способ усреднения, суть примерно такова.
Я как-то набрёл на это дело случайно (типа сам изобрёл). С тех пор повсеместно применяю для АЦП. А вот в цифровых фильтрах не бум-бум... #define AVG_SHIFT 6
static uint32_t avg;
void init(void)
{
avg = adc_read() << AVG_SHIFT;
}
void update(void)
{
avg += adc_read() - (avg >> AVG_SHIFT);
}
uint32_t read(void)
{
return avg >> AVG_SHIFT;
}
Можно даже сохранять часть дополнительных битов, образовавшихся при усреднении (в функции read() они выбрасываются). Типа oversampling.
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้