Hi, I built a board with this DDS and a PIC18xxx, this one only used to communicate via USB with a VB6 application running on a PC under Windows XP.
The application lets me select whether to use the DDS in single continuous frequency or in the different sweep modes.
At power up, the PIC sends all the default registers values to the AD (i.e. 10KHz, Sine, CW,...) and then toggles CTRL 0 --> 1.
Everything works fine; on the scope I see the correct wave, without any sweep.
I should be happy, but really I do not clearly understand how to use the CTRL pin.
Let's say that I set a different frequency on my App, 100KHz.
The PIC receives the command and sends to the ADD then new FSTART.
I suppose that I have to pulse again CTRL (1 --> 0 --> 1), and this is what my program does, with this 0.375 usec sequence (in assembly):
BCF CTRL 'reset Ctrl
NOP 'wait 1 cycle of 0.125 usec
BSF CTRL 'set Ctrl
This does not work.
I found that sometimes (but not everytime) a different sequence works ,:
- send the new FSTART
- send the Control Register value (even if it is not actually changed in the meantime)
- toggle CTRL
1, Is it correct that I must pulse 0>1 CTRL for every new register write ?
2. Which are the timing requirements for CTRL ?
3. Does CTRL pulsing reset all the DDS internal counters ? Or it is only the Control Register writing, as stated on DS "Note that a write to the control register automatically resets the internal state machines"
I tried unsuccesfully to find these infos on datasheet.
(by the way: this is in my opinion the worst AD DS I ever read).
Thanks to all