mikrocontroller.net

Forum: Projekte & Code Beispielprogramm AD9833 (DDS) mit atmega8


Autor: Daniel Nöthen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
da ich fast eine halbe Ewigkeit gebraucht habe, den AD9833 ans laufen
zu bekommen. Möchte ich diesen Zeitaufwand den anderen ersparen.
Ich habe mal ein kleines Beispielprogramm geschrieben.
Dieses demonstiert wie man mit dem Ad9833 richtig kommuniziert.


Gruß,
Daniel

Autor: Steffen Finger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich arbeite auch mit einem DDS-Chip. Allerdings mit dem AD9835. Der
macht nur ne höhere Frequenz ansonsten is er gleich. Anbei mein
Kommunikationsbeispiel laut AN-621. Das Problem, welches ich habe ist
folgendes:
Die Ausgabefrequenz des DDS errechnet sich :
f_out = (32Bit Frequenzwort / 0xFFFFFFFF ) * DDS-Takt
Wie schaffe ich es f_out, also meine wirkliche Frequenz, auch auf dem
Display darzustellen. Hierzu ,muß ich die oben genannte Formel in
Assembler umsetzten. Leider kommen da Kommastellen vor wenn ich das
Frequenzwort umrechnen will. Die Routine um ein 32Bit Binärwort in
ASCII umrzuwandeln habe ich schon. Mir gent es ur darum, wie ich bei
einem DDS-Takt von 24MHz vom Frequenzwort auf den Takt_out komme. Hat
mir hierzu jemand eine Idee?

Gruß
Steffen

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmier das ganze doch in C und baue den erzeugten Assemblercode in
dein Programm ein.

Übrigens stimmt deine Formel nicht ganz, denn 2^32 ist nicht
0xFFFFFFFF. Also richtig lautet es: f_out = Frequenzwort / 2^32 *
DDS-Takt. Wobei DDS-Takt / 2^32 immer konstant ist und somit nicht
ständig berechnet werden muß.

Autor: Steffen Finger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Jens. Das mit dem 0xFFFFFFFF stand so in der App-Note AN621, zu
2^32 unterscheidet es sich nur in eriner Stelle. Richtig, DDS-Takt/2^32
ist eine Konstante. Aber leider ist auch die wieder mit Komma behaftet
und kleiner 1. Ich würde es ja gerne in C schreiben, aber leider kann
ich noch weniger C als Assembler. Wenn Du vielleicht diese Formel coden
könntest und den Assemblercode hier ins Forum stellen? Ich wäre dir sehr
dankbar.

Gruß
Steffen

Autor: Rage-Empire (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind die 9833 und 9835 von der Ansteuerung wirklich gleich? Der 9835 und
9832, sind nahe zu indentisch. Aber der 9833 hat doch nur 28Bit, wärend
der 9832, bzw. 9835 32Bits hat. Oder irre ich mich jetzt?
Zu dem kann der 9833 glaub ich auch noch Dreieckspannung ertzeugen.

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Den AD9835 hab ich auch schon mal angesteuert, aber zu den krummen
Frequenzschritten gibt es nur die Lösung, eine krumme Quarzfrequenz zu
verwenden, die dann zu ganzzahligen Hertz-Stufen führt, oder die
Frequenzanzeige zu runden, was dann zu ungleichmäßigen Schritten in der
Anzeige führt, wenn man z.B. mit einem Drehgeber die Frequenz
einstellt.
73
Christoph

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist immer auch die Frage, für welchen Zweck der DDS gedacht ist. Bei
vielen Anwendungen wird ein Oszillator verwendet, der bei weitem nicht
die Genauigkeit der DDS-Auflösung erreicht. Bei 28 Bit sind das
immerhin ca. 0,004 ppm....Ein sehr guter Oszillator ist einer, der 1ppm
Abweichung hat. Also sollte es z.B. reichen die Anzeige in dezimalen
Schritten einzustellen und daraus dann das Frequenzwort zu berechnen,
was sicherlich mit einer entsprechenden Arithmetik möglich sein sollte.
Wenn ein Compiler "echte" double Typen unterstützt...um so besser. Bei
"single" floats sind es immer noch 24 bit, was immer noch ca. 0.12 ppm
sind....

Gruß Thomas

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.