MBedder, терминатор (31.10.2008 20:16, просмотров: 351) ответил diper на Сумму синусов в количестве от 20 до 200. Выше я про 40 написал, это если частота Fo будет 50Гц.
Код собственно генератора синуса (именно генератора, а не табличного!) для dsPIC занимает 4 (четыре) ассемблерных команды, т.е. выполняется за 100 нс на отсчет: init_sin:
sin1 = 806 ; 2^15*sin(2*pi/256)
cos1 = 32758 ; 2^15*cos(2*pi/256)
clr w12 ; sin 0
mov #sin1,w5 ; 2^15*sin(2*pi/256)
mov w5,w13 ; 2-tap 16-bit delay 1st stage
mov #cos1,w4 ; 2^15*cos(2*pi/256)
singen:
mpy w4*w5,A ; AH = 0.5*sin(2*pi*N/256)
sac.r A,#-2,w5 ; w5 ~= 2*sin(2*pi*N/256)
sub w5,w12,w5 ; w5 = 2*sin(2*pi*N/256)-sin(2*pi*(N-2)/256)
mov w13,w12 ; w12 = sin(2*pi*(N-1)/256) (previous sample)