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
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
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ß.
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.