Fix frequency accumulation

This commit is contained in:
Miroslav Lichvar 2010-04-21 10:29:04 +02:00
parent bc29c84610
commit 99d18abf59
2 changed files with 4 additions and 6 deletions

View file

@ -378,7 +378,7 @@ LCL_SetAbsoluteFrequency(double afreq_ppm)
(*drv_set_freq)(afreq_ppm); (*drv_set_freq)(afreq_ppm);
dfreq = 1.0e-6 * (afreq_ppm - current_freq_ppm) / (1.0 - 1.0e-6 * current_freq_ppm); dfreq = (afreq_ppm - current_freq_ppm) / (1.0e6 + current_freq_ppm);
LCL_ReadRawTime(&raw); LCL_ReadRawTime(&raw);
LCL_CookTime(&raw, &cooked, NULL); LCL_CookTime(&raw, &cooked, NULL);
@ -404,8 +404,7 @@ LCL_AccumulateDeltaFrequency(double dfreq)
are handled in units of ppm, whereas the 'dfreq' argument is in are handled in units of ppm, whereas the 'dfreq' argument is in
terms of the gradient of the (offset) v (local time) function. */ terms of the gradient of the (offset) v (local time) function. */
current_freq_ppm = (1.0 - dfreq) * current_freq_ppm + current_freq_ppm = (1.0 + dfreq) * current_freq_ppm + 1.0e6 * dfreq;
(1.0e6 * dfreq);
/* Call the system-specific driver for setting the frequency */ /* Call the system-specific driver for setting the frequency */
(*drv_set_freq)(current_freq_ppm); (*drv_set_freq)(current_freq_ppm);
@ -485,8 +484,7 @@ LCL_AccumulateFrequencyAndOffset(double dfreq, double doffset)
/* Work out new absolute frequency. Note that absolute frequencies /* Work out new absolute frequency. Note that absolute frequencies
are handled in units of ppm, whereas the 'dfreq' argument is in are handled in units of ppm, whereas the 'dfreq' argument is in
terms of the gradient of the (offset) v (local time) function. */ terms of the gradient of the (offset) v (local time) function. */
current_freq_ppm = (1.0 - dfreq) * old_freq_ppm + current_freq_ppm = (1.0 + dfreq) * old_freq_ppm + 1.0e6 * dfreq;
(1.0e6 * dfreq);
#ifdef TRACEON #ifdef TRACEON
LOG(LOGS_INFO, LOGF_Local, "old_freq=%.3fppm new_freq=%.3fppm offset=%.6fsec", LOG(LOGS_INFO, LOGF_Local, "old_freq=%.3fppm new_freq=%.3fppm offset=%.6fsec",

View file

@ -314,7 +314,7 @@ slew_samples
double old_seconds_fast, old_gain_rate; double old_seconds_fast, old_gain_rate;
new_freq = 1.0e-6 * afreq_ppm; new_freq = 1.0e-6 * afreq_ppm;
old_freq = (new_freq - dfreq) / (1.0 - dfreq); old_freq = (new_freq - dfreq) / (1.0 + dfreq);
for (i=0; i<n_samples; i++) { for (i=0; i<n_samples; i++) {
UTI_DiffTimevalsToDouble(&elapsed, cooked, system_times + i); UTI_DiffTimevalsToDouble(&elapsed, cooked, system_times + i);