Skip to content

Commit 4db7d01

Browse files
authored
Merge pull request #21553 from aabadie/ztimer_500k
sys/ztimer: add support for timers running at a 500kHz frequency
2 parents 734c570 + bc24172 commit 4db7d01

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

sys/ztimer/init.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
#define WIDTH_TO_MAXVAL(width) (UINT32_MAX >> (32 - width))
6565

6666
#define FREQ_1MHZ 1000000LU
67+
#define FREQ_500KHZ 500000LU
6768
#define FREQ_250KHZ 250000LU
6869
#define FREQ_1KHZ 1000LU
6970
#define FREQ_1HZ 1LU
@@ -219,6 +220,9 @@ ztimer_clock_t *const ZTIMER_USEC = &ZTIMER_TIMER_CLK;
219220
# elif (ZTIMER_TIMER_FREQ == 250000LU) && !(CONFIG_ZTIMER_PERIPH_TIMER_FORCE_CONVERSION)
220221
static ztimer_convert_shift_t _ztimer_convert_shift_usec;
221222
ztimer_clock_t *const ZTIMER_USEC = &_ztimer_convert_shift_usec.super.super;
223+
# elif (ZTIMER_TIMER_FREQ == 500000LU) && !(CONFIG_ZTIMER_PERIPH_TIMER_FORCE_CONVERSION)
224+
static ztimer_convert_shift_t _ztimer_convert_shift_usec;
225+
ztimer_clock_t *const ZTIMER_USEC = &_ztimer_convert_shift_usec.super.super;
222226
# else
223227
static ztimer_convert_frac_t _ztimer_convert_frac_usec;
224228
ztimer_clock_t *const ZTIMER_USEC = &_ztimer_convert_frac_usec.super.super;
@@ -353,6 +357,15 @@ void ztimer_init(void)
353357
periph_timer_freq);
354358
ztimer_convert_shift_up_init(&_ztimer_convert_shift_usec,
355359
ZTIMER_USEC_BASE, 2);
360+
# elif (ZTIMER_TIMER_FREQ == FREQ_500KHZ) && !(CONFIG_ZTIMER_PERIPH_TIMER_FORCE_CONVERSION)
361+
if (IS_ACTIVE(DEVELHELP) && ((periph_timer_freq < 487500) || (periph_timer_freq > 512500))) {
362+
LOG_WARNING("ZTIMER_USEC from %" PRIu32 " Hz clock with \"left-shift by 1\" frequency conversion\n",
363+
periph_timer_freq);
364+
}
365+
LOG_DEBUG("ztimer_init(): ZTIMER_USEC convert_shift %lu to 1000000\n",
366+
periph_timer_freq);
367+
ztimer_convert_shift_up_init(&_ztimer_convert_shift_usec,
368+
ZTIMER_USEC_BASE, 1);
356369
# else
357370
LOG_DEBUG("ztimer_init(): ZTIMER_USEC convert_frac %lu to 1000000\n",
358371
ZTIMER_TIMER_FREQ);

0 commit comments

Comments
 (0)