ad9833 ansteuerung mit ATMEGA32

Gast #1552091
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
Gast #1552431
Hallo,
habe heute unterm Mikroskop die antwort gefunden. In einem leiterzug war 
eine winzige unterbrechung (Ätzfehler). So kann das ja ncihts werden.
Schönen Tag noch.
Sebastian

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.