Skip to content

Commit 94214a7

Browse files
committed
Sync maybe works
1 parent 6ad3d05 commit 94214a7

1 file changed

Lines changed: 9 additions & 7 deletions

File tree

NetX/src/rtc.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,31 @@ UINT interrupt_save;
1313
static UINT us_to_second_ticks(ULONG us, UINT second_fractions)
1414
{
1515
// Second fraction = SS / (PREDIV_S + 1)
16-
return (uint64_t)us * (second_fractions + 1L) /
17-
1000000L; // TODO: double check overflow issues
16+
return (uint64_t)us * (second_fractions + 1) / 1000000L;
1817
}
1918

2019
static ULONG second_ticks_to_us(UINT second_ticks, UINT second_fractions)
2120
{
22-
return (uint64_t)1000000L * second_ticks /
23-
(second_fractions + 1); // TODO: double check overflow issues
21+
return (uint64_t)1000000L * second_ticks / (second_fractions + 1);
2422
}
2523

2624
static void set_subsecond(UINT rtc_sub_second_tick, UINT second_fractions)
2725
{
26+
if (~(rtc_sub_second_tick >> 15 & 0b1)) {
27+
printf("rtc SS overflow ig");
28+
}
29+
2830
UINT rtp_sub_second_tick = us_to_second_ticks(
2931
ptp_date_time->nanosecond / 1000, second_fractions);
3032

3133
UINT offset_tick = 0; // ticks to go backwards
3234
UINT offset_ahead_1s = RTC_SHIFTADD1S_RESET;
33-
if (rtc_sub_second_tick > rtp_sub_second_tick) { // local ahead
35+
if (rtc_sub_second_tick >= rtp_sub_second_tick) { // local ahead
3436
offset_tick = rtc_sub_second_tick - rtp_sub_second_tick;
3537
} else { // local behind
3638
offset_ahead_1s = RTC_SHIFTADD1S_SET;
37-
offset_tick = second_fractions + rtc_sub_second_tick -
38-
rtp_sub_second_tick;
39+
offset_tick = second_fractions -
40+
(rtc_sub_second_tick - rtp_sub_second_tick);
3941
}
4042
HAL_RTCEx_SetSynchroShift(&hrtc1, offset_tick, offset_ahead_1s);
4143
}

0 commit comments

Comments
 (0)