Gast
#174781
Ich möchte mit einem MSP430 das Frequency Tuning Word eines DDS berechnen. Die Formel dafür ist einfach: FTW = (f*2^48)/Sysclk. Das Problem: "long" Zahlen sind ja beim IAR nur 32 Bits breit. Die Genauigkeit davon reicht mir; die letzten 2 Bytes des 48Bit - Wortes werde ich also auf Null setzen. Die Formel sieht dann so aus: FTW = ((f*2^32)/Sysclk) << 16 (nehmen wir mal an, FTW ist 48Bit breit) Trotztem ist die Berechnung schwierig: f nutzt max. 28Bit, Sysclk 29Bit, das Ergebnis vor dem Shift also 31Bit. Blöderweise ist das Zwischenergebnis f*2^32 arg groß und damit nicht mehr verarbeitbar. Teile ich hingegen erst f/Sysclk, bleibt wegen der Rundung nichts mehr übrig. Ich bräuchte also eine Funktion, die mir gleichzeitig die Division und die Multiplikation durchführt, und zwar abwechselnd schrittweise. Bevor ich mir darüber jetzt den Kopf zerbreche, wollte ich mal fragen, ob jemand von Euch das schonmal gemacht hat oder ein Konzept kennt... Johannes