📄 msp430f169_fir.s43
字号:
join mov.w &UP,&DMA1SA ; store DMA1 source address
mov.w &DN,&DMA2SA ; store DMA2 destination address
add.w &FREQINC,&BASE ; Sine wave input frequency control
clr.w R4 ; clear R4
mov.w &BASE,R4 ; set time base for DAC o/p generation
bic.w #0c000h,R4 ; 8192 samples sine table
add.w #SINE8192,R4 ; add address offset for sine table
mov.w 0(R4),R4 ; get new value to filter input
mov.w R4,&INPUT ; Store to sample buffer
mov.w R4,&DAC12_0DAT ; Output to DAC0 for scope
mov.w R4,&INPUT ; Store to sample buffer
inc.w &SWCNTR ; Sweep test frequency
cmp.w #SWRATE,&SWCNTR ; check if max frequency reached
jl finish ; if not reached continue
incfreq clr.w &SWCNTR ; clear sweep counter
add.w #0x2, &FREQINC ; increase freq
cmp.w #(2*FREQMAX),&FREQINC ; check if max end frequency is reached
jl finish ; if not reached continue
setfreqmin mov.w #(2*FREQMIN),&FREQINC ; set start frequency
finish reti ; Return from ISR
datamov mov.w &PUP_INIT,&UP ; reassign up pointer
mov.w PUP_INIT,R4 ; move for address pointer
mov.w &INPUT,0(R4) ; store input sampe to circular up buffer
mov.w &PDN_INIT,&DN ; reassign down pointer
jmp join ; join FIR algorithm
;-------------------------------------------------------------------------------
; Filter Coeffecients
;-------------------------------------------------------------------------------
FILTER
; 40 tap lowpass 3.4kHz running 27kHz sample rate at 8MHz MCLK
DW 300 ; sample period data
DW 40 ; 40 taps
DW 0013Fh
DW 000E7h
DW 0FF2Eh
DW 0FC7Ah
DW 0FAFBh
DW 0FC72h
DW 0000Ah
DW 00287h
DW 00161h
DW 0FDCAh
DW 0FC03h
DW 0FEE1h
DW 003FFh
DW 00559h
DW 0FFC0h
DW 0F7D5h
DW 0F77Ah
DW 004CEh
DW 01ADCh
DW 02BD4h
;FILTER
; 224 tap bandpass 2.5kHz running 5kHz sample rate at 8MHz MCLK
DW 1500 ; sample period data
DW 224 ; 224 taps
DW 00012h
DW 0FFFDh
DW 0FFF8h
DW 0FFEEh
DW 0FFE0h
DW 0FFD4h
DW 0FFD1h
DW 0FFDDh
DW 0FFF8h
DW 0001Eh
DW 00044h
DW 0005Eh
DW 00062h
DW 0004Fh
DW 00028h
DW 0FFF7h
DW 0FFC9h
DW 0FFAAh
DW 0FFA2h
DW 0FFB0h
DW 0FFCEh
DW 0FFF1h
DW 0000Ah
DW 00012h
DW 00008h
DW 0FFF3h
DW 0FFE3h
DW 0FFE3h
DW 0FFFAh
DW 00024h
DW 00054h
DW 00078h
DW 00081h
DW 00069h
DW 00035h
DW 0FFF5h
DW 0FFBCh
DW 0FF9Ch
DW 0FF9Bh
DW 0FFB6h
DW 0FFDCh
DW 0FFFAh
DW 0FFFFh
DW 0FFE7h
DW 0FFBDh
DW 0FF96h
DW 0FF8Ah
DW 0FFA9h
DW 0FFF1h
DW 00051h
DW 000ACh
DW 000E4h
DW 000E3h
DW 000ABh
DW 00050h
DW 0FFF1h
DW 0FFB0h
DW 0FF9Fh
DW 0FFBCh
DW 0FFF0h
DW 00018h
DW 00016h
DW 0FFDDh
DW 0FF7Ah
DW 0FF11h
DW 0FED0h
DW 0FEDAh
DW 0FF3Ch
DW 0FFE1h
DW 0009Ah
DW 0012Ch
DW 0016Dh
DW 0014Bh
DW 000DEh
DW 00058h
DW 0FFF4h
DW 0FFDBh
DW 00013h
DW 0007Ah
DW 000D1h
DW 000D6h
DW 00064h
DW 0FF86h
DW 0FE75h
DW 0FD8Eh
DW 0FD28h
DW 0FD77h
DW 0FE6Eh
DW 0FFC5h
DW 0010Eh
DW 001E0h
DW 001FFh
DW 0017Bh
DW 000AAh
DW 0000Ch
DW 0000Fh
DW 000E2h
DW 00251h
DW 003CBh
DW 00490h
DW 003F5h
DW 001B2h
DW 0FE0Ah
DW 0F9D3h
DW 0F63Fh
DW 0F482h
DW 0F56Eh
DW 0F921h
DW 0FEEBh
DW 00574h
DW 00B15h
DW 00E54h
;FILTER
; 101 tap bandstop 5kHz running 11kHz sample rate at 8MHz MCLK
DW 750 ; sample period data
DW 101 ; 101 taps
DW 0FFFCh
DW 0FF7Bh
DW 00054h
DW 0010Ah
DW 0FFB9h
DW 00007h
DW 0002Fh
DW 00039h
DW 0FFEFh
DW 00019h
DW 0FF99h
DW 00021h
DW 000BDh
DW 0FF92h
DW 0FF0Dh
DW 000EAh
DW 000C7h
DW 0FED3h
DW 0FF9Dh
DW 0010Ch
DW 00000h
DW 0FF8Fh
DW 00002h
DW 0FF9Bh
DW 00090h
DW 0010Eh
DW 0FE60h
DW 0FEE0h
DW 002BCh
DW 0007Fh
DW 0FCB2h
DW 00083h
DW 002E9h
DW 0FECEh
DW 0FE65h
DW 000C9h
DW 00003h
DW 00122h
DW 000D9h
DW 0FBB2h
DW 00000h
DW 007C2h
DW 0FD05h
DW 0F5DBh
DW 007A9h
DW 00A45h
DW 0F333h
DW 0F856h
DW 010CCh
DW 002D6h
DW 036D9h
;-------------------------------------------------------------------------------
COMMON INTVEC ; MSP430F16x interrupt vectors
;-------------------------------------------------------------------------------
ORG TIMERB0_VECTOR ; Timer_B0 interrupt vector
DW Timer_B0_ISR
ORG RESET_VECTOR
DW Main ; POR, ext. reset
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -