Gast
#279720
Hallo! Das Thema wurde zwar schon oft behandelt,trotzdem mal eine Frage dazu.Ich betreibe einen Atmega 128 an einen DDS-IC AD9851.Dazu programmiere ich alles in Assembler(mit C kenne ich mich nicht aus). Laut Datenblatt AD9851 ergibt sich das FTW für den DDS zu: FTW=Ausgangsfrequenz des DDS x 2 hoch 32/Clock des DDS.Ich betreibe den AD9851 an 180MHz.2 hoch 32 ergibt 4294967296,das durch 180MHz ergibt 23,86092942.die "23"ergibt 17H.Der Rest von 23 (.86092942)wird mit 2 hoch 24 multipliziert,ergibt DC65DE hex.(nach einer Anleitung für einen PIC).Wenn ich nun eine Ausgangsfrequenz von z.B.10MHz =989680hex haben möchte,wie muß ich diesen 32Bit Wert(17DC65DE)mit10MHz multipliziern?Mit den Wert 17hex multipliziert ist der Wert zu klein(23,8609xxx).Wie muß ich also mit den Rest(DC65DE)verfahren? Der richtige Wert für das FTW ist 0E38E38Ehex.Das entnahm ich einer Applikation von Analog Device.Und mit diesen Wert in den DDS programmiert,zusammen mit Steps von 1MHz bis 1Hz,klappt auch alles prima.Der umgekehrte Weg ist,ich lege 0E38E38E in eine Tabelle ab,zusammen mit den Steps.Dann brauche ich nur add bzw. sub auszuführen.Wie komme ich dann aber bei diesen Hexwert auf meine LCD-Anzeige von 10,000 000 MHz?Es ist übrigens der Typ des DDS egal. Das kann ich auch mit 48Bitern rechnen,ich denke aber,das 32Bit ausreichen sind.Sind allemal weit weniger als 1Hz. Dieter