Hallo,
seit tagen versuche den Ad9833 (DDS-Generator)zum laufen zu bringen. 
Aber irgendwie bekomme ich es nicht hin daten an ihn zu übertragen.
Ich habe versucht nach dem timingdiagramm (figure 3) aus dem Datenblatt 
eine routine zu erstellen. 
http://www.analog.com/static/imported-files/data_sheets/AD9833.pdf
Das hier ist das ergebniss:
| 1 | //PB3 - SCLK
 | 
| 2 | //PB4 - SDATA
 | 
| 3 | //PB5 - FSYNC
 | 
| 4 | #define  FSYNC PB5
 | 
| 5 | #define SDATA PB4
 | 
| 6 | #define SCLK  PB3
 | 
| 7 | 
 | 
| 8 | void wave_send ( uint16_t temp )
 | 
| 9 | 
 | 
| 10 | {
 | 
| 11 |   uint8_t  counter;
 | 
| 12 | 
 | 
| 13 |   PORTB |= (1 << SCLK);
 | 
| 14 |   _delay_us(10);
 | 
| 15 |   PORTB &= ~( 1 << FSYNC );
 | 
| 16 |   _delay_us(5);
 | 
| 17 | 
 | 
| 18 | 
 | 
| 19 |   for ( counter = 16; counter > 0; --counter )
 | 
| 20 |   {
 | 
| 21 |     if  ( temp & ( 1 << (counter-1) ) )
 | 
| 22 |       PORTB |= ( 1 << SDATA);
 | 
| 23 |     else
 | 
| 24 |       PORTB &= ~( 1 << SDATA);
 | 
| 25 |   
 | 
| 26 |     PORTB &= ~( 1 << SCLK );
 | 
| 27 |                 _delay_us(1);
 | 
| 28 |     PORTB |= ( 1 << SCLK );
 | 
| 29 |                 _delay_us(1);
 | 
| 30 |   }
 | 
| 31 | 
 | 
| 32 | 
 | 
| 33 | 
 | 
| 34 | 
 | 
| 35 | 
 | 
| 36 |   PORTB |= ( 1 << FSYNC );
 | 
| 37 |     _delay_us(5);
 | 
| 38 |   return;
 | 
| 39 | }
 | 
auf die gestalltung des layouts mit dem Hardware-SPI wurde bewust 
verzichtet (nicht von mir).
Der ausgangszustand ist: SData = Low, SCLK = low, Fsync = low
Abflauf:
-SCLK auf HIGH
-10us pause
-fsync auf LOW
-5us pause
-die 16 einzelnen bits des datenwortes an SDATA anlegen und jeweils für 
eine uS warten
-am ende FSNC wieder auf HIGH ziehen
die routine wird mit dem übergabewert 0b0010000100000000. Das sollte 
eigentlich einen reset auslösen. am ausgang kann ich jedoch permanent 
eine sinusspannung mit Uss=0,6V und ca. 300KHZ messen. Ohne das diese 
auf irgendetwas reagiert.
Ich sehe leider keinen fehler. Ich hab die Pausen extra vergrößert, war 
vielleicht gerade das der fehler?
Außerdem liegen in reihe zu den eingängen SDATA, Fsync und Sclk 4,7k 
widerstände. Ich habe in einem anderen tread zum thema gelesen das die 
die ursache sein können indem sie die flankensteilheit so weit 
verringern das der Ad9833 probleme bekommt. Aber die schaltung habe ich 
aus einer Zeitschrift entnommen (ELV).
Ich weiß leider nciht mehr wo ich noch suchen soll.
Hoffe ihr könnte mir helfen.
Sebastian