добавлоен полосовой фильтр (не доработано)
This commit is contained in:
@@ -457,7 +457,43 @@ int32_t FilterRMSInt_Process(FilterRMSInt_t* filter, int32_t input);
|
||||
|
||||
|
||||
|
||||
// ==================== CMSIS ВЕРСИИ ====================
|
||||
// ==================== ДРУГИЕ ФИЛЬТРЫ ====================
|
||||
|
||||
|
||||
/**
|
||||
* @brief Структура полосового фильтра с дифференциатором
|
||||
* @details Комбинация дифференциатора и полосового фильтра 2-го порядка.
|
||||
* Используется для выделения сетевой частоты и подготовки к детектированию нуля.
|
||||
*/
|
||||
typedef struct _FilterBandPassDerivative_t {
|
||||
FilterState_t state; ///< Состояние фильтра
|
||||
|
||||
// Дифференциатор
|
||||
float prev_input; ///< Предыдущее входное значение
|
||||
|
||||
// Полосовой фильтр (биквадратный, прямая форма II)
|
||||
float b0, b1, b2; ///< Коэффициенты числителя
|
||||
float a1, a2; ///< Коэффициенты знаменателя
|
||||
|
||||
// Состояния фильтра
|
||||
float x1, x2; ///< Состояния входа
|
||||
float y1, y2; ///< Состояния выхода
|
||||
|
||||
float last_output; ///< Последнее выходное значение
|
||||
uint8_t dataProcessing; ///< Флаг обработки данных
|
||||
|
||||
// Указатели на функции
|
||||
int (*reset)(struct _FilterBandPassDerivative_t *filter,
|
||||
float center_freq_ratio, float bandwidth_ratio);
|
||||
float (*process)(struct _FilterBandPassDerivative_t *filter, float input);
|
||||
} FilterBandPassDerivative_t;
|
||||
|
||||
int FilterBandPassDerivative_Init(FilterBandPassDerivative_t* filter,
|
||||
float center_freq_ratio,
|
||||
float bandwidth_ratio);
|
||||
float FilterBandPassDerivative_Process(FilterBandPassDerivative_t* filter,
|
||||
float input);
|
||||
|
||||
#ifdef DSP_FITLERS
|
||||
/**
|
||||
* @brief Структура биквадратного фильтра с CMSIS-DSP
|
||||
|
||||
Reference in New Issue
Block a user