Tak sobie myślę.
ARM jest mi obcy, CPP także, ale..
Chodzi mi o samo podejście.
Tak jak kolega "SylwekK" podpowiada.
SylwekK napisał(a):
Najpierw wyłap wszystkie sygnały (najlepiej uśrdnione), umieść w dodatkowych zmiennych i dopiero rób porównania.
tzn. tam gdzie zapisujesz czytane wartości z adc użyłeś timera. - chyba że źle rozszyfrowałem.-
Zorganizuj sobie tak program by zapisywał odczyty z adc np.
pomiar_1_mik_1, pomiar_1_mik_2, pomiar_1_mik_3,
cd. programu.
obliczenia średnich.
następnym razem:
pomiar_2_mik_1, pomiar_2_mik_2, pomiar_2_mik_3,
obliczenia średnich.
itd.
dla-- 1_mik: pomiar_1_mik_1 dodać pomiar_2_mik_1, i podzielić przez ilość do uśrednienia. czyli tutaj: 2 ._ to by była pierwsza uśredniona wartość, którą będziesz potem sobie przyrównywał.
dla-- 2_mik: pomiar_1_mik_2 dodać pomiar_2_mik_2, i podzielić przez ilość do uśrednienia. czyli tutaj: 2 ._.......druga....
itd.
może wykorzystać inny sposób zapisu np. tablicę.
potem odczytujesz wartości zmiennych "uśrednionych", które obliczysz w kodzie :
dodając i dzieląc ( jak w matmie).
( myślę że to o uśrednianie w tym stylu chodzi.)-, a nie o filtrowanie górno i dolno przepustowe. tak mi się wydaje.
Chociaż można by pomyśleć o czymś jakby stabilizator, do zmniejszenia hmm.. 'szpilek' adc dźwięku,
poprzez może dodanie kondka, który będzie pompowany sygnałem z mikrofonu, i filtrowany dławikiem przed adc. coś jak zasilanie AVCC, by zmniejszyć dynamikę skoków napięcia z mikrofonów.
hm... no chyba że to ma śledzić muchę w locie. to może być problem z tempem odczytu.
(czy to zda egzamin, tego nie wiem - to tylko taka myśl, którą bym sprawdzał na początku, bo prosta do przetestowania.)
Pozdrawiam.