Przesyłam moją propozycję implementacji algorytmu FFT w asemblerze. Celem nie ma być dokładność, ale możliwość upchnięcia analizy w jak najmniejszych uC. Wymagania co do algorytmu: kontroler AVR (w zasadzie dowolny) z min 128b SRAM (64b zajmują dane, a potrzebne jeszcze miejsce na stos). W przypadku ATMega można spokojnie zastosować mnożenie sprzętowe, co pozwoli na skrócenie czasu obliczeń i objętości kodu. Prezentowany poniżej kod jest tworzony pod ATTiny, użyto funkcji mnożenia 8x8 bit signed wg. Atmela oraz funkcji pierwiastka kwadratowego wg. Ruud v Gessel (dobbelbeker@chello.nl). Program testowy zajmuje 742 bajty, i prawdopodobnie można upchnąć go na uC z 1 kb pamięci programu. Do obliczenia FFT potrzeba około 9000 cykli. Algorytm był testowany na symulatorze w AVR Studio. Załączam również plik Excela, na podstawie którego powstał ten program.
Kod: text