5 #define _USE_MATH_DEFINES 39 printf(
"Подготовка DDS\n");
56 printf(
" regA=0x%.4X - Таблица уже загружена\n", regA );
60 printf(
" regA=0x%.4X - Требуется загрузка таблицы\n", regA );
64 if( flagLoadSinTable || flagIsLoaded )
66 printf(
"\n Загрузка таблицы\n" );
67 for(
int jj=0; jj<1024; jj++ )
70 for(
int ii=0; ii<16; ii++ )
72 arg = 2 * M_PI * kk / 16384;
73 v = sin( arg ) * 2047;
81 printf(
"\n Загрузка таблицы завершена\n" );
117 printf(
"DAC START\n" );
120 void TF_DDS::SetPhase(
double syntFreq,
double Freq,
double Phase, __int64& phase_start, __int64& phase_inc )
122 long double rate = syntFreq/Freq;
123 long double q = 281474976710656.0L;
124 phase_inc = q / rate;
126 phase_start = (q /360 ) * Phase;
131 void TF_DDS::SetDacFreq(
double syntFreq,
double Freq0,
double Phase0,
double Ampl0,
double Freq1,
double Phase1,
double Ampl1 )
133 __int64 start0, inc0, start1, inc1;
134 SetPhase( syntFreq, Freq0, Phase0, start0, inc0 );
135 SetPhase( syntFreq, Freq1, Phase1, start1, inc1 );
167 int inc0_0 = inc0 & 0xFFFFFFFF;
168 int inc0_1 = (inc0>>32) & 0xFFFF;
170 int inc1_0 = inc1 & 0xFFFFFFFF;
171 int inc1_1 = (inc1>>32) & 0xFFFF;
173 int start0_0 = start0 & 0xFFFFFFFF;
174 int start0_1 = (start0>>32) & 0xFFFF;
176 int start1_0 = start1 & 0xFFFFFFFF;
177 int start1_1 = (start1>>32) & 0xFFFF;
186 void TF_DDS::SetCntStart(
int regCntEnable,
int regCntDisable,
int regPeriod,
int isContinuePeriod,
int isCntEnable )
194 if( isContinuePeriod )
226 if( reg0x10 & 0x100 )
void SetCntStart(int regCntEnable, int regCntDisable, int regPeriod, int isContinuePeriod, int isCntEnable)
Установка счётчиков старта
virtual void PkgCmdRead(int dev, int adr, int *pData)
Чтение из регистра
virtual void PkgCmdStart(void)
Начало выполнения команды
void DacStart(int enable, int start)
Запуск и останов
virtual void PkgCmdExecute(void)
Выполнение команды
int isPeriodComplete(void)
Завершение вывода
virtual void PkgCmdWrite(int dev, int adr, int data)
Запись в регистр
void Prepare(int flagLoadSinTable)
Подготовка
TF_DDS_TaskData * td
Внутренние данные класса
CL_Reg * reg
Доступ к регистрам модуля
void SetPhase(double syntFreq, double Freq, double Phase, __int64 &phase_start, __int64 &phase_inc)
void SetDacFreq(double syntFreq, double Freq0, double Phase0, double Ampl0, double Freq1, double Phase1, double Ampl1)
Установка частоты