diff options
Diffstat (limited to 'app/dcf77.c')
-rw-r--r-- | app/dcf77.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/app/dcf77.c b/app/dcf77.c index 71c227c..30cfd26 100644 --- a/app/dcf77.c +++ b/app/dcf77.c @@ -43,6 +43,7 @@ void exti_t_isr (void) exti_reset_request (EXTI_T); dcf77_ring.events[dcf77_ring.tx_ptr].when = now; + dcf77_ring.events[dcf77_ring.tx_ptr].ptp = ptp_get(); dcf77_ring.events[dcf77_ring.tx_ptr].value = v; dcf77_ring.tx_ptr = (dcf77_ring.tx_ptr + 1) & ERING_MASK; @@ -53,7 +54,7 @@ void exti_t_isr (void) static uint8_t bits[60]; -static void process_bits (uint64_t abs) +static void process_bits (uint64_t abs, uint64_t ptp) { UTC u; EPOCH e; @@ -95,7 +96,7 @@ static void process_bits (uint64_t abs) dcf77_last_happy = make_happy (abs, 60); - pll_set_offset (e, abs); + pll_set_offset (e, abs, ptp); @@ -107,7 +108,7 @@ static void process_bits (uint64_t abs) } -static void report_bit (uint64_t abs, int second, int b) +static void report_bit (uint64_t abs, uint64_t ptp, int second, int b) { if ((second < 0) || (second > 58)) return; @@ -115,7 +116,7 @@ static void report_bit (uint64_t abs, int second, int b) // printf("DCF77: bits[%d]=%d\r\n",second,b); - if (second == 58) process_bits (abs); + if (second == 58) process_bits (abs, ptp); } @@ -129,6 +130,7 @@ void dcf77_dispatch (void) int is_s = 0; uint32_t now; + uint64_t ptp; int v; led2_set (!!gpio_get (T_PORT, T)); @@ -139,6 +141,7 @@ void dcf77_dispatch (void) v = dcf77_ring.events[dcf77_ring.rx_ptr].value; now = dcf77_ring.events[dcf77_ring.rx_ptr].when; + ptp = dcf77_ring.events[dcf77_ring.rx_ptr].ptp; //led2_set(v); @@ -176,7 +179,7 @@ void dcf77_dispatch (void) sprintf (dcf77_info, "m=%d s=%02d b=%d", had_m, second, bit); if (had_m) - report_bit (abs, second, bit); + report_bit (abs, ptp, second, bit); last_0 = now; } @@ -185,10 +188,10 @@ void dcf77_dispatch (void) offset /= (HW_CLOCK_HZ / 1000); if (is_s) { - abs = abs_extend (now); + abs = ref_extend (now); dcf77_last_second = abs; - pll_dispatch (dcf77_last_happy, abs, "DCF77"); + pll_dispatch (dcf77_last_happy, abs, ptp, "DCF77"); report_time ("DCF", dcf77_time, abs, dcf77_info); } |