QUOTE (Zelepuk @ Sep 25 2011, 08:58)

А как данные могут затираться, если нигде в прерываниях и в функциях вывода переменные учатвующие расчётах не фигурируют?
Потелепатируем: Ваши данные хранятся в глобальной переменной (массиве). Массив большой. В функции расчета FFT вы заводите локальные массив или какие-то переменные. Они размещаются на стеке. Поскольку стек и область глобальных переменных растут навстречу друг другу - при нехватке памяти стек налезает на глобальные переменные и локальные данные оказываются поверх вашего массива входных данных. Со всеми вытекающими. Проверить оченть просто - разместите после массива глобальную переменную (обязательно volatile), при старте программы занесите в нее любое значение и в ходе выполнения программы проверяйте, что значение не изменилось. Если изменилось - проблема вероятнее всего в нехватке стека.