diff --git a/cpu/kinetis/periph/rtc.c b/cpu/kinetis/periph/rtc.c index cf89681a5bbb..d65f1f1b0c85 100644 --- a/cpu/kinetis/periph/rtc.c +++ b/cpu/kinetis/periph/rtc.c @@ -92,6 +92,11 @@ void rtc_clear_alarm(void) rtc_callback.cb = NULL; } +void rtc_set_compensation(int8_t adjust, uint8_t interval) +{ + rtt_set_compensation(adjust, interval); +} + void rtc_poweron(void) { rtt_poweron(); diff --git a/cpu/kinetis/periph/rtt.c b/cpu/kinetis/periph/rtt.c index ee22cf63f504..00dfe7951e16 100644 --- a/cpu/kinetis/periph/rtt.c +++ b/cpu/kinetis/periph/rtt.c @@ -150,6 +150,11 @@ void rtt_clear_alarm(void) bit_clear32(&RTC->IER, RTC_IER_TAIE_SHIFT); } +void rtt_set_compensation(int8_t adjust, uint8_t interval) +{ + RTC->TCR = RTC_TCR_TCR(adjust) | RTC_TCR_CIR(interval); +} + /* RTC module has independent power suply. We can not really turn it on/off. */ void rtt_poweron(void) diff --git a/drivers/include/periph/rtc.h b/drivers/include/periph/rtc.h index 03ffb7a332bd..6dd8e898337a 100644 --- a/drivers/include/periph/rtc.h +++ b/drivers/include/periph/rtc.h @@ -27,6 +27,7 @@ #define PERIPH_RTC_H #include +#include #include "periph_conf.h" #ifdef __cplusplus @@ -95,6 +96,11 @@ int rtc_get_alarm(struct tm *time); */ void rtc_clear_alarm(void); +/** + * @brief Set RTC fine tuning + */ +void rtc_set_compensation(int8_t adjust, uint8_t interval); + /** * @brief Turns the RTC hardware module on */ diff --git a/drivers/include/periph/rtt.h b/drivers/include/periph/rtt.h index 54d58022f0ab..ea09aad3de03 100644 --- a/drivers/include/periph/rtt.h +++ b/drivers/include/periph/rtt.h @@ -155,6 +155,8 @@ uint32_t rtt_get_alarm(void); */ void rtt_clear_alarm(void); +void rtt_set_compensation(int8_t adjust, uint8_t interval); + /** * @brief Turn the RTT hardware module on */