Скачиваний:
60
Добавлен:
21.03.2016
Размер:
2.39 Mб
Скачать

Библиотечная функция FIR16

Объявление объекта:

typedef struct {

 

 

 

 

 

 

 

 

 

 

long *coeff_ptr;

/* указатель на коэф. фильтра */

 

long *dbuffer_ptr;

/* указатель на буфер задержки*/

 

int cbindex;

 

 

/* индекс циклического буфера */

 

int order;

 

 

/* порядок фильтра

 

 

*/

 

int input;

 

 

/* последний входной отсчет

*/

 

int output;

 

 

/* результат фильтра

 

 

*/

 

void (*init)(void *); /* указатель на функцию Init

*/

 

void (*calc)(void *); /* указатель на функцию calc

*/

 

}FIR16;

 

 

 

 

 

 

 

 

 

 

 

 

 

_ptr:

указатель на массив коэффициентов фильтра.

 

coeffff_ tr:

указатель на буфер задержек.

 

 

.

 

dbuffer_ptr:

 

 

 

 

ff

r_ tr:

 

 

 

 

 

.

 

 

 

 

cbindex:i :

 

 

индекс циклического буфера,, вычисляется

внутри функции

 

 

инициализацииз

на основе порядка фильтра..

order:r r:

 

 

 

.

Q0-формат,

диапазон 1

– 255

 

Порядок фильтра.

-

,

з

 

 

input:i t:

 

Последний входной отсчет фильтра.. Q15--формат

 

 

 

-7FFF)

 

 

 

 

 

 

 

output:

(8000(

-

)

 

. Q15-формат (8000-7FFF)

 

t

t:

Результат фильтрации.

-

(

-

)

 

14 - 31

Пример использования библиотеки

FIR16

#define FIR_ORDER 50

/* Порядок фильтра */

#pragma DATA_SECTION(lpf, "firfilt"); FIR16 lpf = FIR16_DEFAULTS;

#pragma DATA_SECTION(dbuffer,"firldb"); long dbuffer[(FIR_ORDER+2)/2];

const long coeff[(FIR_ORDER+2)/2]= FIR16_LPF50; main()

{

lpf.dbuffer_ptr=dbuffer; lpf.coeff_ptr=(long *)coeff; lpf.order=FIR_ORDER; lpf.init(&lpf);

}

void interrupt isr20khz()

{

lpf.input=xn;

lpf.calc(&lpf);

yn=lpf.output;

}

14 - 32

Лабораторная работа 14:

фильтрация Фильтром низких частот сигнала прямоугольной формы

Цель:

Генерация сигнала прямоугольной формы с частотой

2 кГц на EVA-T1PWM

 

Ассиметричный ШИМ с рабочим циклом 50%

Использовать T1-Compare InterruptI

Servicei для

обслуживания сторожевого таймера

Проводом соединить T1PWM с входом АЦП ADCIN2I

Оцифровать сигнал прямоугольной формы на частоте

 

50KHz

 

 

Период выборки генерировать с помощью EVA-Timeri

2

Сохранять отсчеты в буфер “AdcBuf”

 

Отфильтровать входные отсчеты КИХ фильтром

 

 

нижних частот 4-го порядка

 

 

Сохранить отфильтрованные отсчеты в буфер

 

 

“AdcBufFiltered”il

Лаб. работаРешение14 - 33

 

 

 

Визуализировать “AdcBuf” и “AdcBufFiltered”il

 

Соседние файлы в папке C2000WEB_rus