Ik ben bezig om een AD9833 tot leven te wekken, wat niet erg wil vlotten.
Ik heb gezocht in de diverse posts over de AD983x chips, maar daar zie ik eigenlijk nergens een oplossing. (alleen de problemen)
Heeft iemand de chip al eens aan de praat gekregen? (ik gebruik een PIC 24FJ256GA106 met de volgende (MikroBasic) code:


symbol DDS_FSYNC = LATB.14

'==================================================================================================
Sub Procedure Init_App()                                        'Initialize
'==================================================================================================
  delay_ms(100)
  TRISB         = %0000000111000000       'Init port and DDR
  LATB          = %0110000000001000                             
  AD1PCFGL      = %1111111111111111       'All pins digital
  REFOCON       = %1010010000000000       'Clock out 1MHz for DDS

  Unlock_IOLock()                         'PPS settings
  PPS_Mapping_NoLock(0,_OUTPUT,_SDO2)     'RB0 (RP0)  
  PPS_Mapping_NoLock(1,_OUTPUT,_SCK2OUT)  'RB1 (RP1)
  Lock_IOLock()

  'Init SPI2
  Spi2_Init_Advanced(_SPI_MASTER, 
                     _SPI_16_BIT,
                     _SPI_PRESCALE_SEC_4, 
                     _SPI_PRESCALE_PRI_16, 
                     _SPI_SS_DISABLE, 
                     _SPI_DATA_SAMPLE_MIDDLE, 
                     _SPI_CLK_IDLE_HIGH, 
                     _SPI_IDLE_2_ACTIVE)   'DDS SPI port

  Delay_ms(100)
  DDS_FSYNC = 0
  SPI2_Write(%0010000000000000)  'Commands
  DDS_FSYNC = 1
  DDS_FSYNC = 0
  SPI2_Write(%0100110101011111)  'Freq0 data (14 bit LSB)
  DDS_FSYNC = 1
  DDS_FSYNC = 0
  SPI2_Write(%0100000000000111)  'Freq0 data (14 bit MSB)
  DDS_FSYNC = 1
End Sub                                                         '

De MCLK is er, 1MHz. Verder lijkt het ding geheel dood...

Pagina 18 van de datasheet laat een heel duidelijk flow diagram zien voor initialisatie en operatie. Ik zou deze eens goed bestuderen.

Ik zet ze regelmatig in ontwerpen en heb de software mensen nog nooit over DDS chips van AD horen klagen m.b.t. onverklaarbaar gedrag.

Datasheets zijn niet echt het sterkste punt van AD... (ik heb ze duidelijker gezien... ;) ) Ook de interne opbouw van de chip had wat simpeler gekund.
Nu is het effect van sommige bits in het commandoregister afhankelijk van de stand van een of twee andere bits. Wat registertjes extra was handiger geweest.
Ik ga die sourcecode eens bestuderen (jammer genoeg C... :( )
Wat me er in opviel is dat er kwistig met 5uS delayloops wordt gestrooid, terwijl dat volgens de datasheet helemaal niet nodig is. (5...15nS wordt gegeven)

Ik gebruik een MCLK van 1MHz, en wil bijv een frequentie van 440Hz opwekken.
Volgens de datasheet zou de waarde voor het freq0 (of 1) register dan 440 / (1000000/268435456) = 118112 moeten zijn, met die AVR routine krijg ik heel wat anders...