From c93861c733ced9c6659241cea69c7feed56afcce Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Wed, 20 Feb 2019 02:39:38 +0000 Subject: use OCXO, and auto fail-over between different clock sources --- app/msf.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'app/msf.c') diff --git a/app/msf.c b/app/msf.c index 96c3afe..4b3c350 100644 --- a/app/msf.c +++ b/app/msf.c @@ -8,7 +8,9 @@ static Event_ring msf_ring; -uint64_t msf_last_second; +static uint64_t msf_last_second; +uint64_t msf_last_happy; + void exti0_isr (void) @@ -25,6 +27,19 @@ void exti0_isr (void) msf_ring.events[msf_ring.tx_ptr].value = v; msf_ring.tx_ptr = (msf_ring.tx_ptr + 1) & ERING_MASK; +#if 0 + + if (time_known) { + uint64_t abs = abs_extend (now); + EPOCH e = pll_decompose (abs); + UTC u = time_epoch_to_utc (e); + + printf ("QRR %d.%09d %d\r\n", (u.minute * 60) + u.second, u.nanosecond, (int) !v); + printf ("QRR %d.%09d %d\r\n", (u.minute * 60) + u.second, u.nanosecond, (int) v); + } + +#endif + nvic_enable_irq (NVIC_EXTI0_IRQ); } @@ -89,9 +104,10 @@ static void process_bits (uint64_t abs) msf_time = time_utc_to_epoch (u); + msf_last_happy = abs - (int64_t) 120 * (int64_t) HZ; + pll_set_offset (msf_time, abs); - stats_stamp (u, abs); dump_bits ("msfa", bitsa); dump_bits ("msfb", bitsb); @@ -170,7 +186,7 @@ void msf_dispatch (void) abs = abs_extend (now); msf_last_second = abs; - //pll_dispatch (abs); + pll_dispatch (msf_last_happy, abs, "MSF"); -- cgit v1.2.3