X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fstm32f1%2Fao_timer.c;h=1368ab684cb4eabf4b846154a65e8b9809085131;hb=a724a6b223229f8640740874523aee394350e9c6;hp=37c4e1df50cf9bd3e134538dcc26ab7f952fa83f;hpb=87b64a15f55ecb20a0f8bb2556e77b45a4d82b82;p=fw%2Faltos diff --git a/src/stm32f1/ao_timer.c b/src/stm32f1/ao_timer.c index 37c4e1df..1368ab68 100644 --- a/src/stm32f1/ao_timer.c +++ b/src/stm32f1/ao_timer.c @@ -47,17 +47,47 @@ ao_time_ns(void) (uint64_t) val * (1000000000ULL / AO_SYSTICK); } +#if AO_DATA_ALL +volatile uint8_t ao_data_interval = 1; +volatile uint8_t ao_data_count; +#endif + void stm_systick_isr(void) { if (stm_systick.ctrl & (1 << STM_SYSTICK_CTRL_COUNTFLAG)) { ++ao_tick_count; ao_task_check_alarm(); +#if AO_DATA_ALL + if (++ao_data_count == ao_data_interval && ao_data_interval) { + ao_data_count = 0; +#if HAS_FAKE_FLIGHT + if (ao_fake_flight_active) + ao_fake_flight_poll(); + else +#endif + ao_adc_poll(); +#if (AO_DATA_ALL & ~(AO_DATA_ADC)) + ao_wakeup((void *) &ao_data_count); +#endif + } +#endif #ifdef AO_TIMER_HOOK AO_TIMER_HOOK; #endif } } +#if HAS_ADC +void +ao_timer_set_adc_interval(uint8_t interval) +{ + ao_arch_critical( + ao_data_interval = interval; + ao_data_count = 0; + ); +} +#endif + #define SYSTICK_RELOAD (AO_SYSTICK / 100 - 1) void