В моем случае ДДСка программируется на линейный свип, ноудвелл.
Здесь приводится мой расчет, но Вам думаю врядли это поможет, почитайте доку:
Код
typedef struct _STData
{
unsigned int StartFreq0;
unsigned int StopFreq0;
unsigned int StartFreq1;
unsigned int StopFreq1;
unsigned int RampRate;
unsigned int DeltaFreq;
double fstep;
double calcspan;
double frspan;
} STData;
..........
double KCoeff=60;
double MCoeff=15;
unsigned int timer_reg;
double dmod32=4294967296.0;
double startfreq;
double stopfreq;
double tspan=*span;
........
timer_reg = 8;
td->RampRate = averen? (timer_reg<<avernum) : timer_reg;
td->fstep = 4.0*tspan * (double)timer_reg/((double)packlen * KCoeff * (MCoeff+1) * qmult);
td->DeltaFreq = (unsigned int)(td->fstep*dmod32/(Synt_clock_freq*qmult) + 0.5); //Delta Freq
td->calcspan = (double)td->DeltaFreq*(Synt_clock_freq*qmult)*((double)(packlen*KCoeff*(MCoeff+1)*qmult))/(4.0*dmod32*((double)timer_reg));
*span = td->calcspan;
td->frspan=td->calcspan;
startfreq = td->BaseFreq - td->calcspan/2.0;
stopfreq = td->BaseFreq + td->calcspan/2.0;
td->StartFreq0 = (unsigned int)(startfreq/(Synt_clock_freq*qmult)*dmod32+0.5);
td->StopFreq0 = (unsigned int)(stopfreq/(Synt_clock_freq*qmult)*dmod32+0.5);
td->StartFreq1 = (unsigned int)((startfreq+dfreq)/(Synt_clock_freq*qmult)*dmod32+0.5);
td->StopFreq1 = (unsigned int)((stopfreq+dfreq)/(Synt_clock_freq*qmult)*dmod32+0.5);
...........