Hallo zusammen
Ich bin seit mehreren Wochen nun am Fehler suchen und komme einfach
nicht mehr weiter.
Ich versuche einen Sinus Signalgenerator von 10-ca 500 Hz mithilfe eines
AD9833 zu realisieren.
Der MSP430 läuft auf mit einem 4MHz Resonator und gibt dann den
Mainclock auf den AD9833 MCLK.
Die Signale kommen beim IC an, dies habe ich an den Beinen Nachgemessen.
Über den MSP430F233 wird der AD9833 per SPI angesteuert, dazu folgende
Funktionen:
1 | void AD9833_SetRegisterValue(unsigned short regValue)
|
2 | {
|
3 | SPI_Write( regValue >> 8, (unsigned char)regValue);
|
4 | }
|
1 | void SPI_Write(unsigned char data1, unsigned char data2)
|
2 | {
|
3 | ADI_CS_LOW; //Ich bleibe solange in der Funktion wie die übertragung läuft, darum kann ich hier direkt mit dem übertragen beginnen
|
4 | UCB0TXBUF = data1;
|
5 |
|
6 | //while (UCB0STAT & UCBUSY); //Braucht zulange darum mit cycles
|
7 | __delay_cycles(3);
|
8 | UCB0TXBUF = data2;
|
9 | //while (UCB0STAT & UCBUSY);
|
10 | __delay_cycles(6); //Warten bis fertig
|
11 | ADI_CS_HIGH;
|
12 | }
|
Im Main ist dann nach dem Datenblatt AN-621 die folgenden Daten
übermittelt worden:
1 | AD9833_SetRegisterValue(0xF800); //Einstellungen
|
2 | AD9833_SetRegisterValue(0x3333); //H MSBs
|
3 | AD9833_SetRegisterValue(0x2233); //L MSBs
|
4 | AD9833_SetRegisterValue(0x3133); //H LSBs
|
5 | AD9833_SetRegisterValue(0x2033); //L LSBs
|
6 | AD9833_SetRegisterValue(0xC000); //Out of Sleep
|
Der AD9833 bringt am Ausgang nichts. Speisung ist kontrolliert und liegt
bei ca 3.3V (+- 0.2V). So wie ich das sehe kann ich FSYNC zwischen den
einzelnen 2 Bytes ohne bedenkte auf HIGH setzten oder liege ich falsch?
Im Anhang habe ich euch noch mehrere Screenshots angehängt von der
Messung.
Ich hoffe sehr das mir jemand helfen kann, denn ich bin langsam ratlos.
Grüsse
Benjamin