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