Задам еще один вопрос. Столкнулся с непонятной мне вещью: есть два фильтра реализованных на C цифровых фильтра Баттерворта фторого порядка: один НЧ, другой ВЧ. Вот код реализации
Код
//*Фильтр Баттерворта 2ого порядка Low-Pass-------------------------------------------------
//Сдвигаем старые значения
for(n=2; n>0; n--){
x[n]=x[n-1];
y[n]=y[n-1];
}
//Вычисляем новое выходное значение
x[0]=NewSample;
y[0]=BCoef[0]*x[0];
for(n=1; n<=2; n++)
{y[0]+=(BCoef[n]*x[n])-(ACoef[n]*y[n]);}
//*Фильтр Баттерворта 2ого порядка High-Pass-------------------------------------------------
//Сдвигаем старые значения
for(n=2; n>0; n--){
x_HP[n]=x_HP[n-1];
y_HP[n]=y_HP[n-1];
}
//Вычисляем новое выходное значение
x_HP[0]=y[0];
y_HP[0]=BCoef_HP[0]*x_HP[0];
for(n=1; n<=2; n++)
{y_HP[0]+=(BCoef_HP[n]*x_HP[n])-(ACoef_HP[n]*y_HP[n]);}
in_new=y_HP[0];
И есть две среды разработки для STM32: Keil MDK-ARM 4.53.0 и CooCox COIDE 1.7.0. В обоих средах для фильтра используется код приведенный выше.
При использовании для прошивки кода скомпилированного в Keil на выходе ЦАП после фильтрации получаю нормальную синусоиду:
А при использовании для прошивки кода скомпилированного в CooCox COIDE на выходе ЦАП получаю сигнал с просечками, которые мешают мне для дальнейшей обработки.
С чем все это может быть связано?