Leider habe ich kein Beispiel gefunden,in dem ich den meine Berechnung
überprüfen kann. Ich möchte die Berechnung des Steuerwortes an einem
Beispiel testen, bevor ich den Schaltkreis anschließe .
Ist bei einen Quarz von 125 MHz das Steuerwort:
LSB: 1010 0001 1101 1100 1100 1100 1100 1100 MSB
Anders herum in HEX
0x3333 3b85
für 25,000062 MHz richtig?
Habe deine Zahlen mal in die Formeln meines Beispielcodes eingetragen,
und komme auch auf 0x33333b85.
Wenn du willst, kann ich dir den Quellcode auch schicken, ist aber
nicht gerade so druckreif, dass ich ihn irgendwo veröffentlichen
würde.
Vielen Dank, ich werde in den nächsten Tagen das Board anschließen.
wenn alles spielt, stelle ich das Projekt hier ein.
Ich habe meinen Code auch mehr zum Lernen geschrieben.
Hallo zusammen.
@ Lutz:
Warum nutzt du nicht den DDS-Rechner von AD?
http://designtools.analog.com/dtDDSWeb/dtDDSMain.aspx
Der erzeugt dir das Steuerwort in Hex, Bin und Dez; je nachdem,
wie es dir am Liebsten ist.
0x3333 3b85 ist richtig bis auf die letzte Stelle:
ADISimDDS erzeugt ...86.
Bei der Programmierung hat mir die Seite von DJ7OO sehr geholfen.
http://www.kh-gps.de/simple-dds.htm
Da gibt es auch einen Bascom-Code, der auf einem Code von
JA9TTT beruht. Der Link ist in der Linkliste angegeben.
Bestechend einfach und - zumindest für mich - endlich mal verständlich.
Wenn man es dann erst mal begriffen hat, ist es gar nicht so
schwierig.
73
Wilhelm
Ich bin gerade dabei mich in die COOCOx Umgebung mit dem stm32F429I
DISCO
einzuarbeiten. Als Opfer habe ich mit den AD9850 ausgesucht.
Noch ist das Projekt nicht im lauffähigen Zustand, das heißt, der
AD9850 gibt noch keine Frequenz von sich.
Ich kann auf den Bildschirm eine Frequenz eingeben, die Werte werden
richtig berechnet und an den Port ausgegeben und kommen auf der
Leiterplatte des AD9850 an.
in der Funktion TD_Test wird die Frequenz eingegeben, Frequenz_LC
in AD9850_ticksCalculate wird das Steuerwort berechnet. w_AD9850[]
in AD985_enable die Ports initialisiert.
in S_AD9850init wird die Bitfolge zum Programmieren in
S_AD9850[][]abgelegt.
void AD9850_ticksSend_D(int AD9850_ticks) ist für eine Debugausgabe an
LEDs vorgesehen
Und mit
void AD9850_ticksSend_R(int AD9850_ticks) soll die richtige Ausgabe
erfolgen.
Mit Beginn eines jeden Taktes werden die neuen Daten ausgegeben.
in der Hälfte der Zeit der Daten kommt eine 0-1 Flanke des Taktes.
Deshalb werde ich als nächstes etwas anderes versuchen:
Im Beitrag
www.mikrocontroller.net/attachment/6642/Programmcode_DDS.doc
//* Funktion zur Übertragung einer Frequenz in den DDS-Chip */
wurde ein Kompletter Taktimpuls während eines gültigen Datenwertes
gesendet.
Dafür werde ich aber jetzt die System Ticks nutzen, mit Warteschleifen
war es nur eine Behelfslösung.
Ist also nichts geheimnissvolles dabei.
Hallo Lutz,
hast Du Dein Problem gelöst?
Falls nicht, hier mein (getesteter) Code für einen ARM3- Controller
PSoC3 bzw. PSoC5.
Mit AD9850_Init() wird der AD9850 initialisiert,
mit SetFrequency(double frequenz) wird die Frequenz eingestellt,
Phase=0;.
Die Zeitschleife muss angepasst werden...
Wolfgang, danke für den Code,
leider geht dieser Code bei mir auch nicht. Ich glaube, ich habe den
AD9850 zuschossen.
Die Ausgangspegel des AD9850 ändern sich nie, obwohl die
Programmiersignale anliegen. Wenigstens die analogen Ausgänge müssten
sich bemerkbar ändern, auch wenn die Frequenz sehr klein ist. Ich habe
mir jetzt einen neuen Schaltkreis bestellt, und hoffe mit dem geht es
dann.
Gruß Lutz
lutz h. schrieb:> Ich glaube, ich habe den AD9850 zuschossen.
Bist du dir denn sicher, dass die Schaltung OK ist? Insbesondere,
hast du eine brauchbare Last dran? Die Analogausgänge treiben ja
einen Strom gegen Masse, da muss ein Widerstand in den Gleichstrompfad,
an dem die Ausgangsspannung abfällt.
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