Fix frequency accumulation
This commit is contained in:
parent
bc29c84610
commit
99d18abf59
2 changed files with 4 additions and 6 deletions
8
local.c
8
local.c
|
@ -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",
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue