|
В простейшем случае - с прямоугольным окном длительностью 20 мс. Он имеет АЧХ вида sin(x)/x и подавляет частоту 50 Гц и её гармоники. Если не устраивает высокая чувствительность к отклонению частоты, есть более сложные окна, которые обеспечивают двойные нули АЧХ на первой и некоторых других гармониках. К примеру, вот такое равноамплитудное окно длительностью 30 мс:
FltWin: .DB 1, 1, 1, 1, 0, 0, 0, 0
.DB 1, 1, 1, 1, 0, 0, 0, 0
.DB 1, 1, 1, 1, 1, 1, 1, 1
.DB 1, 1, 1, 1, 1, 1, 1, 1
.DB 1, 1, 1, 1, 1, 1, 1, 1
.DB 0, 0, 0, 0, 1, 1, 1, 1
.DB 0, 0, 0, 0, 1, 1, 1, 1;Каждые 500 мкс выполнять это:
.equ FltWn = 56 ;digital filter window length
dec DigF ;DigF = DigF - 1
clr temp
ldi ZL,byte1(FltWin*2)
ldi ZH,byte2(FltWin*2)
add ZL,DigF
adc ZH,temp ;add table offset
lpm temp,Z
tst temp
breq No_Smpin ZL,ADCL ;read ADC code
in ZH,ADCH
sbi ADCSR,ADSC ;start ADC
add AdcLr,ZL
adc AdcHr,ZHNo_Smp: tst DigF ;check DigF
brne F_rdy
ldi DigF,FltWn ;new cycle
rjmp Snd_g
F_rdy: cpi DigF,FltWn-1
brne Snd_g
sts ADCm+0,AdcLr ;store ADC value
sts ADCm+1,AdcHr
clr AdcLr
clr AdcHr
E-mail: info@telesys.ru