Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cpu/atmega_common: implement periph_timer_query_freqs #20142

Merged
merged 1 commit into from
Dec 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion cpu/atmega_common/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@ config CPU_COMMON_ATMEGA
select HAS_PERIPH_GPIO_LL_IRQ_UNMASK
select HAS_PERIPH_PM
select HAS_PERIPH_RTC_MS
select HAS_PERIPH_RTT_OVERFLOW
select HAS_PERIPH_RTT_SET_COUNTER
select HAS_PERIPH_TIMER_PERIODIC
select HAS_PERIPH_RTT_OVERFLOW
select HAS_PERIPH_TIMER_QUERY_FREQS
select HAS_PERIPH_WDT
select HAS_PUF_SRAM

Expand Down
3 changes: 2 additions & 1 deletion cpu/atmega_common/Makefile.features
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ FEATURES_PROVIDED += periph_gpio_ll_irq_level_triggered_low
FEATURES_PROVIDED += periph_gpio_ll_irq_unmask
FEATURES_PROVIDED += periph_pm
FEATURES_PROVIDED += periph_rtc_ms
FEATURES_PROVIDED += periph_rtt_overflow
FEATURES_PROVIDED += periph_rtt_set_counter
FEATURES_PROVIDED += periph_timer_periodic
FEATURES_PROVIDED += periph_rtt_overflow
FEATURES_PROVIDED += periph_timer_query_freqs
FEATURES_PROVIDED += periph_wdt
FEATURES_PROVIDED += puf_sram
ifneq (atmega8, $(CPU_FAM))
Expand Down
18 changes: 18 additions & 0 deletions cpu/atmega_common/periph/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,24 @@ void timer_start(tim_t tim)
ctx[tim].dev->CRB = ctx[tim].mode;
}

uword_t timer_query_freqs_numof(tim_t dev)
{
(void) dev;

return ARRAY_SIZE(prescalers);
}

uint32_t timer_query_freqs(tim_t dev, uword_t index)
{
(void)dev;

if (index >= ARRAY_SIZE(prescalers)) {
return 0;
}

return CLOCK_CORECLOCK >> prescalers[index];
}

#ifdef TIMER_NUMOF
static inline void _isr(tim_t tim, int chan)
{
Expand Down