#if TIMER_HW_HPTICKS_PER_SEC > 10000000UL
return us * ((TIMER_HW_HPTICKS_PER_SEC + 500000UL) / 1000000UL);
#else
- return (us * TIMER_HW_HPTICKS_PER_SEC + 500000UL) / 1000000UL;
+ return (us * ((TIMER_HW_HPTICKS_PER_SEC + 500) / 1000UL) + 500) / 1000UL;
#endif
}
INLINE utime_t hptime_to_us(hptime_t hpticks)
{
#if TIMER_HW_HPTICKS_PER_SEC < 100000UL
- return hpticks * (1000000UL / TIMER_HW_HPTICKS_PER_SEC);
+ return hpticks * ((1000000UL + TIMER_HW_HPTICKS_PER_SEC / 2) / TIMER_HW_HPTICKS_PER_SEC);
#else
- return (hpticks * 1000000UL) / TIMER_HW_HPTICKS_PER_SEC;
+ return (hpticks * 1000UL) / ((TIMER_HW_HPTICKS_PER_SEC + 500) / 1000UL);
#endif /* TIMER_HW_HPTICKS_PER_SEC < 100000UL */
}