ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
140202 Топик полностью
MBedder, терминатор (27.11.2008 13:04, просмотров: 220) ответил Alex B. на неа, не получится. sin() - ~2000 тактов.
Бугага :)) dsPIC = 8(!) тактов на 16-битный отсчет синуса (разумеется, не табличного). На PIC32 наверняка тоже уложится тактов в 6..10, но уже для 32 бит (т.е. шаг синуса можно будет иметь мелкий, типа 16К-32К сэмплов на период)  ; IIR based 16-bit sinewave sample generator (256 samples per sine period) ; Output: w5 ; 8 clocks per sample (5 MHz sinewawe can be generated with dsPIC33F @40 MIPS) sin1 = 806 ; 2^15*sin(2*pi/256) cos1 = 32758 ; 2^15*cos(2*pi/256) dacport = LATB ; External DAC connected to this port 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) 1: 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) mov w5,w13 ; w13 = w5 (current sample) mov w5,dacport ; Write a next sinewave sample to a DAC port bra 1b ; Loop forever