AnsweredAssumed Answered

AD9910 load RAM and make it working

Question asked by carloalberto1976 on Oct 10, 2011
Latest reply on Jun 10, 2016 by jm6492

Hi All,

 

I am facing some throubles in programming the AD9910. I am not using evaluation software, but I used it to check that what I am writing is correct.

I would make working the AD9910 in RAM mode and switching through the profiles to change its behavior. I do want make a frequency modulation.

In the follow you can find the way I preset the chip before starting.

A complete instruction is divide in the instruction byte + the writing containg register data.

 

    Master_Reset();

//******** Set Internal divider

     Select_Chip(3);                           
        Wr_S8(0x02, 8);
        Wr_S32(0x1F3FC000, 32);
    Select_Chip(0);                           
      IO_UPDATE();   
//***** RAM enabling ON   
    Select_Chip(3);
        Wr_SDIO8(0x00, 8);
        Wr_SDIO32(0x80000000, 32);
    Select_Chip(0);                           
    IO_UPDATE();

//****** Write Register Profile 0
    Select_Chip(3);      
        Wr_SDIO8(0x0E, 8);        
        Wr_SDIO64(0x00FFFF1000000004, 64);   
    Select_Chip(0);                           
     IO_UPDATE();     
//****** RAM Load
    Select_Chip(3);
        Wr_SDIO8(0x16, 8);                                       
        for (int j=0; j<256; j++){
            int64 Word = 640907675 + j*(1249451);
            Wr_SDIO32(Word, 32);                 
        }                                        
    Select_Chip(0); 
     IO_UPDATE();

//***** Writing Profile Registers
    Select_Chip(3);
        res = DAQmxWriteDigitalLines (Task_CSn_Handle, 1, 1, 10.0, DAQmx_Val_GroupByChannel, A03, NULL, NULL);
        Wr_SDIO8(0x0F, 8);        
        Wr_SDIO64(0x00FFFF0E80000004, 64);
        Wr_SDIO8(0x10, 8);        
        Wr_SDIO64(0x00FFFF0EC00E7001, 64);
    Select_Chip(0);                           
   IO_UPDATE ();

//****** External Profile Controls pointing to Prof 2
    Select_Chip(6);     //  6: dedicated to Profile enabling                      
        Wr_Profile(2);   // from 0 to 7
     Select_Chip(0);

 

1) When I launch the software after turning on the power supply the DDS seems to acquire properly the instruction sequence, and it works. But when I close the software and I make some modification (neither regarding the DDS) it does not work again as it should, after compiling. I need than to turn off the power supply!!! The Master Reset I send in the pre-setting Phase should put to default all the register, but what about RAM?

 

In loading RAM the datasheet suggest that RAM enable bit @ 0.

Do you find anything wrong in my procedure?

Kind regards

Carlo

Outcomes