http://we.easyelectronics.ru/Theory/chestno-prostoy-cifrovoy-filtr.html

LN(1/5%)  = 2,996
LN(1/0,1%) = 6,908
Ntau = 2,996...6,908

N = Тпп / Т

Alfa < EXP(-Ntau / N)
Beta = 1 - Alfa

Ntau = 6.908 (7?)
Tpp = 100 ms
T = 1.5625 ms
A = -1,306122448979591836734693877551 / 58982 / 3686
B =  2,306122448979591836734693877551 / 5554  / 410

Y(n) = (Na*Y(n-1) + Nb*X(n)) >> 8
or
Y(n) = Y(n-1) + [Nb*(X(n) — Y(n-1)) >> 8]

uint filter(u16 x){
  static u16 y = 0;
  static u16 z = 0;

  if (x >= y) {
    z += (x - y);
  } else {
    z += (y - x);
  }
  return y = (u16)((u32)(5554 * z) >> 16);
};

//
#define Na 15
#define Nb 1
#define k 4

int filter(int x){
  static int y = 0;
  return y1 = (Na * y + Nb * x) >> k;
};

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
http://electronix.ru/forum/lofiversion/index.php/t12237.html
Самый простой способ, аналогичный ФНЧ, т.е. для условий, что сигнал
низкочастотый и сетевая частота в нём присутствует в виде наводки как
единственный высокочастоный сигнал:
Частота дискретизации 1000 Гц;
Подавляемая частота 50 Гц;
На одном периоде подавляемой частоты получается 20 отсчетов.
Для синуса при данных условиях получается, что если брать сумму выборок
X(n-10)+X(n), то в результате должен получаться ноль.
Но кроме синуса, какую-то часть веса выборки составляет полезный сигнал и
простое суммирование приведёт к удвоению его среднего значения. Тогда делаем
так: (X(n-10)+X(n))/2.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
http://chipenable.ru/index.php/programming-avr/item/162-prostoy-cifrovoy-filtr.html

По сути, программа этого цифрового фильтра состоит всего из двух строчек на Си.:
	Dacc = Dacc + Din - Dout
	Dout = Dacc/K
где Dout - выходное значение фильтра, Din - входное значение фильтра, K -
постоянный коэффициент, который рассчитывается по формуле:
	K = T x SPS
где T - это постоянная времени фильтра, SPS - частота дискретизации АЦП.

Dacc и Dout должны сохранять свои значения, после выполнения алгоритма. Если
алгоритм реализовать в виде функции, то эти переменные можно просто сделать
статическими.

Для 8-ми разрядных входных данных алгоритм цифрового фильтра в Си коде может выглядеть так:

#define SPS 9600UL
#define Trc 0.001f
#define K (SPS*Trc)

uint8_t Filtr(uint8_t data)
{
   static uint16_t Dacc = 0;
   static uint8_t Dout = 0;
   uint8_t Din = data;

   Dacc = Dacc + Din - Dout;
   Dout = Dacc/(uint16_t)K;

   return Dout;
}

---
Моё: я думаю, что SPS нужно брать не частоту АЦП, а частоту выборок.
