Monday, 8 June 2015

Handling two DDS Modules in the Library

I had an email today from Jan, pa0dmm, who has been using my library for the AD9850 DDS.

Jan wanted to know if it was possible to modify the library to control two DDS modules, such as I have done on my R(F)Duino Board...

and in the Parallel IF rig.

In answering Jan's question, I realize I've never really addressed this point before - so here's a quick post to explain how it is done.

First, I don't feel a modification to the library is justified - the present library can be used to control two instances of the DDS module, as follows...

First, the pin allocations have to be made. These are arbitrary - for example my rig uses...

Notice that the DATA and RESET lines will be shared between the two modules - only separate "W_CLK" and "FQ_UD" lines are defined, making a total of six digital lines to control the two modules.

Once the pin definitions are made, the DDS classes can be instantiated - one for each of the oscillators. Notice they're given a name associated with their intended application (Jan intends to use them in a superhet - just as I have)...

Once they are instantiated, they must each be initialized and (if you are being fussy) trimmed...

From this point on, you are ready to go, with two independent oscillators being addressable from your code with the simple frequency setting method provided by the library...

I honestly hadn't remembered that this approach wasn't one of those in the many examples shown on the Double_DDS page - evidently I was trying to preserve some simplicity there (before becoming distracted by the Si5351).

Hopefully this post makes up for my omission and will help anybody wishing to use the library with multiple DDS modules - as I have done with my own rig!

...-.- de m0xpd


  1. It`s possible to get 10 Hz with your DUEDDS library on AD9850 Module

    1. It certainly is possible to generate 10 Hz from the DDS module under the control of the equivalent DDS library (for UNO etc). I haven't checked on the Due with DUEDDS, but I see no reason why not.

  2. Hi Guys
    The best for you and family.
    You can find a AT89C52 controlling two AD985X.
    I did, it works great, maybe will interesting for you.
    73's Jc
    WJ6C ex/CO6BG