1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-17 18:43:50 +01:00

Merge pull request #17393 from fjmolinas/pr_kinetis_fix_rtt

cpu/kinetis/include: fix xtimer backend timer selection
This commit is contained in:
Kaspar Schleiser 2021-12-15 00:01:52 +01:00 committed by GitHub
commit 29ed101405
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 11 deletions

View File

@ -500,7 +500,7 @@ enum {
#ifndef RTT_FREQUENCY #ifndef RTT_FREQUENCY
#define RTT_FREQUENCY RTT_MAX_FREQUENCY #define RTT_FREQUENCY RTT_MAX_FREQUENCY
#endif #endif
#if IS_USED(PERIPH_RTT) #if IS_USED(MODULE_PERIPH_RTT)
/* On kinetis periph_rtt is built on top on an LPTIMER so if used it /* On kinetis periph_rtt is built on top on an LPTIMER so if used it
will conflict with xtimer, if a LPTIMER backend and RTT are needed will conflict with xtimer, if a LPTIMER backend and RTT are needed
consider using ztimer */ consider using ztimer */

View File

@ -31,7 +31,7 @@
#include "debug.h" #include "debug.h"
static rtt_cb_t alarm_cb = NULL; /**< callback called from RTC alarm */ static rtt_cb_t alarm_cb = NULL; /**< callback called from RTC alarm */
static void *alarm_arg; /**< argument passed to the callback */ static void *alarm_arg = NULL; /**< argument passed to the callback */
static uint32_t alarm_value = 0; static uint32_t alarm_value = 0;
static void _rtt_cb(void *arg, int channel) static void _rtt_cb(void *arg, int channel)
@ -46,7 +46,6 @@ static void _rtt_cb(void *arg, int channel)
void rtt_init(void) void rtt_init(void)
{ {
timer_init(RTT_DEV, RTT_FREQUENCY, _rtt_cb, NULL); timer_init(RTT_DEV, RTT_FREQUENCY, _rtt_cb, NULL);
alarm_value = 0;
} }
uint32_t rtt_get_counter(void) uint32_t rtt_get_counter(void)
@ -60,7 +59,7 @@ void rtt_set_alarm(uint32_t alarm, rtt_cb_t cb, void *arg)
alarm_arg = arg; alarm_arg = arg;
alarm_cb = cb; alarm_cb = cb;
alarm_value = alarm; alarm_value = alarm;
timer_set_absolute(RTT_DEV, 0, alarm % RTT_MAX_VALUE); timer_set_absolute(RTT_DEV, 0, alarm & RTT_MAX_VALUE);
irq_restore(state); irq_restore(state);
} }
@ -71,7 +70,11 @@ uint32_t rtt_get_alarm(void)
void rtt_clear_alarm(void) void rtt_clear_alarm(void)
{ {
unsigned state = irq_disable();
alarm_cb = NULL;
alarm_arg = NULL;
timer_clear(RTT_DEV, 0); timer_clear(RTT_DEV, 0);
irq_restore(state);
} }
void rtt_poweron(void) void rtt_poweron(void)

View File

@ -11,15 +11,10 @@ RIOT_TERMINAL ?= socat
include $(RIOTBASE)/Makefile.include include $(RIOTBASE)/Makefile.include
# use highest possible RTT_FREQUENCY for boards that allow it # use highest possible RTT_FREQUENCY for boards that allow it
ifneq (,$(filter stm32 nrf5%,$(CPU))) ifneq (,$(filter stm32 nrf5% sam% kinetis efm32 fe310,$(CPU)))
RTT_FREQUENCY ?= RTT_MAX_FREQUENCY RTT_FREQUENCY ?= RTT_MAX_FREQUENCY
CFLAGS += -DRTT_FREQUENCY=$(RTT_FREQUENCY) CFLAGS += -DRTT_FREQUENCY=$(RTT_FREQUENCY)
endif endif
# kinetis rtt runs at 1Hz, reduce samples to speed up the test SAMPLES ?= 1024
ifneq (,$(filter kinetis,$(CPU)))
SAMPLES ?= 64
else
SAMPLES ?= 1024
endif
CFLAGS += -DSAMPLES=$(SAMPLES) CFLAGS += -DSAMPLES=$(SAMPLES)