From a93f21dfbe95b11632abe06ed35413b3d1dc8946 Mon Sep 17 00:00:00 2001 From: SG Date: Fri, 28 May 2021 19:38:12 +1000 Subject: [PATCH] [FL-1367] fix rfid on f6 target (#500) * RFID hal: fix gpio setup * timers hal: crutch for HAL * RFID hal: fix gpio setup --- firmware/targets/f6/api-hal/api-hal-rfid.c | 4 +-- firmware/targets/f6/api-hal/api-hal-tim.c | 33 +++++++++++----------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/firmware/targets/f6/api-hal/api-hal-rfid.c b/firmware/targets/f6/api-hal/api-hal-rfid.c index 7146b927..c120d18d 100644 --- a/firmware/targets/f6/api-hal/api-hal-rfid.c +++ b/firmware/targets/f6/api-hal/api-hal-rfid.c @@ -27,7 +27,7 @@ void api_hal_rfid_pins_emulate() { // pull pin to timer out hal_gpio_init_ex( - &gpio_rfid_pull, GpioModeOutputPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM1); + &gpio_rfid_pull, GpioModeAltFunctionPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM2); // pull rfid antenna from carrier side hal_gpio_init(&gpio_rfid_carrier_out, GpioModeOutputPushPull, GpioSpeedLow, GpioPullNo); @@ -45,7 +45,7 @@ void api_hal_rfid_pins_read() { // carrier pin to timer out hal_gpio_init_ex( - &gpio_rfid_carrier_out, GpioModeOutputPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM1); + &gpio_rfid_carrier_out, GpioModeAltFunctionPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM1); // comparator in hal_gpio_init(&gpio_rfid_data_in, GpioModeAnalog, GpioSpeedLow, GpioPullNo); diff --git a/firmware/targets/f6/api-hal/api-hal-tim.c b/firmware/targets/f6/api-hal/api-hal-tim.c index 2352e898..42f0f4eb 100644 --- a/firmware/targets/f6/api-hal/api-hal-tim.c +++ b/firmware/targets/f6/api-hal/api-hal-tim.c @@ -3,44 +3,43 @@ #include #include - -void TIM2_IRQHandler(void) -{ +void TIM2_IRQHandler(void) { bool consumed = false; if(LL_TIM_IsActiveFlag_CC1(TIM2) == 1) { - if (LL_TIM_IsEnabledIT_CC1(TIM2)) { + if(LL_TIM_IsEnabledIT_CC1(TIM2)) { LL_TIM_ClearFlag_CC1(TIM2); - if (READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC1S)) { + if(READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC1S)) { // input capture api_hal_irda_tim_isr(TimerIRQSourceCCI1); consumed = true; - } - else { + } else { // output compare - // HAL_TIM_OC_DelayElapsedCallback(htim); - // HAL_TIM_PWM_PulseFinishedCallback(htim); + // HAL_TIM_OC_DelayElapsedCallback(htim); + // HAL_TIM_PWM_PulseFinishedCallback(htim); } } } if(LL_TIM_IsActiveFlag_CC2(TIM2) == 1) { - if (LL_TIM_IsEnabledIT_CC2(TIM2)) { + if(LL_TIM_IsEnabledIT_CC2(TIM2)) { LL_TIM_ClearFlag_CC2(TIM2); - if (READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC2S)) { + if(READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC2S)) { // input capture api_hal_irda_tim_isr(TimerIRQSourceCCI2); consumed = true; - } - else { + } else { // output compare - // HAL_TIM_OC_DelayElapsedCallback(htim); - // HAL_TIM_PWM_PulseFinishedCallback(htim); + // HAL_TIM_OC_DelayElapsedCallback(htim); + // HAL_TIM_PWM_PulseFinishedCallback(htim); } } } - furi_check(consumed); + // TODO move all timers on LL hal + if(!consumed) { + // currently backed up with a crutch, we need more bicycles + HAL_TIM_IRQHandler(&htim2); + } } -