www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP DDS-Singalgenerator mit ATmega88 und DDS AD5932


Autor: Martin Ernst (mrtnernst)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich brauche mal dringend Hilfe. Ich möchte einen Signalgenerator mit de 
AD 5932 und einem Atmega88 realisieren. Jetzt hapert es aber bei mir 
schon an der SPI-Kommunikation. Hat jemand vielleicht für so einen 
Baustein eine funktionierende Kommunikation? Ich programmiere in C.

Mein Schaltplan hänge ich mal an. Vielleicht ist auch ein Fehler in der 
Hardware zwischen dem Atmega 88 und dem AD5932 (DDS).

Martin

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pullups an SCK und SDA fehlen

Autor: Martin Ernst (mrtnernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wozu sollen die Pullups nötig sein? Und wo ist SDA?

Martin

Autor: Harald M. (mare_crisium)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin,

vergiss das mit dem SCL und SDA - Otto meint, Du benutztest den TWI-Bus. 
Es geht Dir aber um SPI; das schreibst Du ja deutlich und am Schaltplan 
sieht man's auch.

Funktion und Einstellmöglichkeiten des SPI-Busses sind sehr gut und 
ausführlich im Datenblatt des ATmega88 erklärt. Das Datenblatt findest 
Du hier

http://www.atmel.com/dyn/resources/prod_documents/8271.pdf

Kapitel 18 beschäftigt sich mit dem SPI, auf Seite 170 und 171 findest 
Du auch Programmbeispiele. Damit kannst Du alles Notwendige erledigen.

Ciao,

mare_crisium

Autor: Martin Ernst (mrtnernst)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es scheint nun was zu kommunizieren, aber ich bekomme nichts sinnwolles 
raus. Ich wollte zunächst mal nur einen Sinus oder Dreieck erahlten was 
z.B. 50Hz hat. Ich habe folgenden Code geschrieben!

Kann da jemand einen Schnitzer entdecken warum ich zwar was raus bekomme 
aber nicht was ich wünsche. Von Sinus auf Dreieck lässt sich auch nicht 
umstellen.

Martin

Autor: Martin Ernst (mrtnernst)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir jemand sagen wie für die Ansteuerung des AD5932 über die SPI 
des ATmega88 eine funktionierende funktionierende SPI-Routine aussieht 
mit der eine richtige Kommunikation statt finden kann? Ich habe es wie 
im Datenblatt vom Atmega versucht und auch versucht damit die ganzen 
Bits im Controllregisster usw. zu setzen. Der Baustein spuckt zwar auch 
was aus aber nicht definiertes. Einen meiner Versuche habe ich mal 
angehängt. Die Idee hinter der Routine meines Versuches ist eine Version 
von Herrn Skibowski aus Stuttgart!

Wäre toll, wenn mir jemand helfen könnte. Ich probiere schon längere 
Zeit rum und verstehe nicht das Problem.

Martin

Autor: Martin Ernst (mrtnernst)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hir noch ein neuer SPI Screenshot

D0 = FSYNC
D1 = SCLK
D2 = SDATA (SPI)

Autor: Martin Ernst (mrtnernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

jetzt scheint die SPI richtig zu kommunizieren. Ich kann auch über das 
Bit D9 im Controlregister von Sinus auf Dreieck umschalten. Woran kann 
es nun liegen, dass ich mehrmals programmieren muss bis ein sauberes 
Signal raus kommt? Nach mehrmaligem programmieren ist am MSBout ein 
Rechteck und am Vout ein Dreieck oder Sinus am Oszi zu beobachten, aber 
was ich hierbei auch nicht verstehe warum es nicht die von mir 
übermittelte Frequenz z.B. von 50 Hz hat. Wie kann ich am besten 
feststellen ob das Frequenzwort richtig übertragen wird?
Ich teile es auf ad Register Fstart_low und Fstart_high und setze dann 
den Pin CTRL von Null auf high und ändere ihn nicht mehr. Laut 
Datenblatt soll so die in Fstart stehende Frequenz am Vout und MSBout 
ausgegeben werden. Woran könnte es liegen, dass die Frequenz nie der von 
mir gewünschten Frequenz stimmt?

Vielen Dank schon für die Hilfe!

Mar

Autor: Martin Ernst (mrtnernst)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch mein momentaner Quellcode!

Mar

Autor: Jan H. (xmega168)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst die SPI ansteuerung etwas ändern:

Setze im SPCR Register CPOL auf 1 und CPHA auf 0.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.