[an error occurred while processing this directive]
|
Меряю Fx в десятки КГц, обновлять результат должен каждые 10 миллисекунд. В качестве временнОй базы - такты Fref 8 МГц внутри МК, и выше никак нельзя. Использую capture таймера по каждому 4-му фронту Fx (чтобы меньше жрать ресурсы МК), коплю захваченые отсчеты в массиве и параллельно утюжу массив скользящим окном шириной в несколько десятков миллисекунд (типа 500-1000 отсчетов на окно). Окно сдвигаю каждый рабочий (4-й) фронт Fx, оконные суммы тупо суммирую и каждые 10 миллисекунд вывожу.
Так вот, все бы хорошо, но каждый раз, когда Fref кратно Fx, получаю мерзкие биения, что неизбежно из-за большой степени корреляции между соседними окнами. Частично помогает dithering - искусственное размазывание каждого отсчета своим шумом, но общий шум, понятно, тоже растет. Подсознательно понимаю, что надо бы отложить в другой массив несколько НЕПЕРЕКРЫВАЮЩИХСЯ отсчетов и пройтись по нему чем-нибудь более приличным, чем примитивный треугольник... Как бы это сделать по уму, а не "по понятиям"?
E-mail: info@telesys.ru