AD9833 Freq 588201c5-3519-4c26-bbec-8886da7fb0f1 cca4ce4e-9ffc-4a4c-b9c6-25a405cd1504 Phase 1ffcf16a-0d0e-4237-b489-397f46c7361d e825e2ef-5bc7-46e9-8f26-568c8ffa3cf7 8eec4861-f561-48f2-a45e-3861c5ebaaf3 DDS AD9833 // ******************** Установить частоту ******************** void SetFrequency(unsigned long val) { Freq = val; unsigned long FreqData = round((float) val * 10.73741 + 0.5); WriteAD9833(FreqData & 0x3FFF | bFreq_reg0); WriteAD9833((FreqData >> 14) | bFreq_reg0); } // ******************** Установить фазу ******************** void SetPhase(int val) { Phase = val; unsigned long PhaseData = round (float(val) * 11.37777 + 0.5); WriteAD9833(PhaseData | bPhase_reg); } // ******************** Установить форму ******************** void SetForm(eWaveForm val) { WaveForm = val; int16_t CntrlData; switch (val) { case wfSin: { CntrlData = 0; break; } case wfTri: { CntrlData = bMode; break; } case wfSqr: { CntrlData = bOpbiten | bDiv2 | bSleep12; break; } case wfSqr2: { CntrlData = bOpbiten | bSleep12; break; } } WriteAD9833(CntrlData | bCntrl_reg | bB28); } // ******************** Передача 16-битного слова в AD9833 ******************** void WriteAD9833(uint16_t Data) { SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV8, MSBFIRST, SPI_MODE2)); digitalWrite(SS, LOW); delayMicroseconds(1); SPI.transfer16(Data); digitalWrite(SS, HIGH); SPI.endTransaction(); } 1305 pinMode(pin_CLK, INPUT); pinMode(pin_DT, INPUT); pinMode(pin_Btn, INPUT_PULLUP); SPI.begin(); WaveForm = wfSin; WriteAD9833(bCntrl_reg | bReset | bB28); WriteAD9833(bCntrl_reg | bB28); // Снимаем Reset 217 #include <SPI.h> ********** AD9833 ********** #define bMode 0x2 #define bDiv2 0x8 #define bOpbiten 0x20 #define bSleep12 0x40 #define bSleep1 0x80 #define bReset 0x100 #define bHLB 0x1000 #define bB28 0x2000 #define bCntrl_reg 0x0 #define bFreq_reg0 0x4000 #define bFreq_reg1 0x8000 #define bPhase_reg 0xC000 Freq ; unsigned long FreqStep ; unsigned long Phase ; int val ; unsigned long c2aa26f7-155c-4488-8ea2-653c03d35174 // ******************** Установить частоту ******************** Freq = Freq1; FreqData = round((float) Freq1 * 10.73741 + 0.5); WriteAD9833(FreqData & 0x3FFF | bFreq_reg0); WriteAD9833((FreqData >> 14) | bFreq_reg0); // ******************** Установить фазу ******************** //void SetPhase(int val) Phase = Phase1; PhaseData = round (float( Phase1 ) * 11.37777 + 0.5); WriteAD9833(PhaseData | bPhase_reg); // ******************** Установить форму ******************** CntrlData = 0; WriteAD9833(CntrlData | bCntrl_reg | bB28); // ******************** Передача 16-битного слова в AD9833 ******************** //void WriteAD9833(uint16_t Data) { SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV8, MSBFIRST, SPI_MODE2)); digitalWrite(SS, LOW); delayMicroseconds(1); SPI.transfer16(Data); digitalWrite(SS, HIGH); SPI.endTransaction(); } 870 SPI.begin(); 17 #include <SPI.h> Freq ; unsigned long Phase ; int Phase1 ; int Freg1 ; unsigned long FreqData ; unsigned long PhaseData ; unsigned long CntrlData ; int16_t Data ; uint16_t #define bMode 0x2 #define bDiv2 0x8 #define bOpbiten 0x20 #define bSleep12 0x40 #define bSleep1 0x80 #define bReset 0x100 #define bHLB 0x1000 #define bB28 0x2000 #define bCntrl_reg 0x0 #define bFreq_reg0 0x4000 #define bFreq_reg1 0x8000 #define bPhase_reg 0xC000