Mercurial > hg > fxanalyse
changeset 45:b47b97cfd050
Fix output frequency read back in DDS Fox driver
The FTW registry value was read back wrong due to an integer overflow in the
conversion from bytes string to double. This should fix the "jumps" seen in the
application of the frequency dedrifting.
author | Daniele Nicolodi <daniele.nicolodi@obspm.fr> |
---|---|
date | Wed, 10 Oct 2012 12:14:01 +0200 |
parents | 2e37910b28bc |
children | 6503feae1809 |
files | DDS_Fox.c |
diffstat | 1 files changed, 2 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/DDS_Fox.c Tue Oct 09 14:36:10 2012 +0200 +++ b/DDS_Fox.c Wed Oct 10 12:14:01 2012 +0200 @@ -289,9 +289,8 @@ OctetD=atoi(Rd.value3); OctetE=atoi(Rd.value4); OctetF=atoi(Rd.value5); - FreqRead=(double)(1099511627776*OctetA +4294967296*OctetB +16777216*OctetC +65536*OctetD +256*OctetE +OctetF); - FreqRead=(FreqRead*Param->Clock)/ pow(2,48); - //sprintf(parsebuf,"%fMHz",FreqRead/1000000); + FreqRead = 1099511627776.0 * OctetA + 4294967296.0 * OctetB + 16777216.0 * OctetC + 65536.0 * OctetD + 256.0 * OctetE + 1.0 * OctetF; + FreqRead = FreqRead * Param->Clock / pow(2,48); return(FreqRead); }