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
Danke für die Links, hatte übersehen das das Reset vom AD9850 auf Low muss. Ist jetzt wichtig, da ich die Platinen zusammenstecken will.
@ Lutz, was werkelst du da so geheimnisvolles..? 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.
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.