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


von Martin E. (mrtnernst)


Angehängte Dateien:

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

von Otto (Gast)


Lesenswert?

Pullups an SCK und SDA fehlen

von Martin E. (mrtnernst)


Lesenswert?

Hallo,

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

Martin

von Harald M. (mare_crisium)


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

von Martin E. (mrtnernst)


Angehängte Dateien:

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

von Martin E. (mrtnernst)


Angehängte Dateien:

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

von Martin E. (mrtnernst)


Angehängte Dateien:

Lesenswert?

Hir noch ein neuer SPI Screenshot

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

von Martin E. (mrtnernst)


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

von Martin E. (mrtnernst)


Angehängte Dateien:

Lesenswert?

Hier noch mein momentaner Quellcode!

Mar

von Jan H. (xmega168)


Lesenswert?

Du musst die SPI ansteuerung etwas ändern:

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.