From af2a4f47fbe4673934cdeb019a3782a1b9ae8152 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Mon, 14 Jan 2013 17:09:10 +0100 Subject: [PATCH] Modify PI servo to set frequency when jumping. Similarly to the servo in phc2sys, when clock is stepped, set immediately also its frequency. This significantly improves the initial convergence with large frequency offsets. Signed-off-by: Miroslav Lichvar --- clock.c | 1 + pi.c | 1 + 2 files changed, 2 insertions(+) diff --git a/clock.c b/clock.c index 5a475f2..b0a4de6 100644 --- a/clock.c +++ b/clock.c @@ -867,6 +867,7 @@ enum servo_state clock_synchronize(struct clock *c, case SERVO_UNLOCKED: break; case SERVO_JUMP: + clock_ppb(c->clkid, -adj); clock_step(c->clkid, -c->master_offset); c->t1 = tmv_zero(); c->t2 = tmv_zero(); diff --git a/pi.c b/pi.c index 5fbce38..934fff6 100644 --- a/pi.c +++ b/pi.c @@ -87,6 +87,7 @@ static double pi_sample(struct servo *servo, break; case 3: *state = SERVO_JUMP; + ppb = s->drift; s->count = 4; break; case 4: