From 9fd9dd85e3a157bed74f4ce4b6120433b2983be8 Mon Sep 17 00:00:00 2001 From: Skorpionm <85568270+Skorpionm@users.noreply.github.com> Date: Wed, 2 Aug 2023 08:45:39 +0400 Subject: [PATCH] =?UTF-8?q?SubGhz:=20change=20CC1101=5Fext=20TIM17=20resol?= =?UTF-8?q?ution=20to=202=C2=B5s=20(#2909)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * SubGhz: change the operation of the TIM17 timer in CC1101_ext to 2µs * SubGhz: remove special characters Co-authored-by: あく --- .../drivers/subghz/cc1101_ext/cc1101_ext.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c index 594a74a0..e9560ce5 100644 --- a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c +++ b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c @@ -37,7 +37,7 @@ #define SUBGHZ_DEVICE_CC1101_EXT_ASYNC_TX_BUFFER_FULL (256) #define SUBGHZ_DEVICE_CC1101_EXT_ASYNC_TX_BUFFER_HALF \ (SUBGHZ_DEVICE_CC1101_EXT_ASYNC_TX_BUFFER_FULL / 2) -#define SUBGHZ_DEVICE_CC1101_EXT_ASYNC_TX_GUARD_TIME 999 +#define SUBGHZ_DEVICE_CC1101_EXT_ASYNC_TX_GUARD_TIME 999 << 1 /** SubGhz state */ typedef enum { @@ -483,7 +483,7 @@ static void subghz_device_cc1101_ext_capture_ISR() { subghz_device_cc1101_ext->async_rx.capture_callback( true, - LL_TIM_GetCounter(TIM17), + LL_TIM_GetCounter(TIM17) << 1, (void*)subghz_device_cc1101_ext->async_rx.capture_callback_context); } } else { @@ -493,11 +493,11 @@ static void subghz_device_cc1101_ext_capture_ISR() { subghz_device_cc1101_ext->async_rx.capture_callback( false, - LL_TIM_GetCounter(TIM17), + LL_TIM_GetCounter(TIM17) << 1, (void*)subghz_device_cc1101_ext->async_rx.capture_callback_context); } } - LL_TIM_SetCounter(TIM17, 6); + LL_TIM_SetCounter(TIM17, 4); //8>>1 } void subghz_device_cc1101_ext_start_async_rx( @@ -512,7 +512,8 @@ void subghz_device_cc1101_ext_start_async_rx( furi_hal_bus_enable(FuriHalBusTIM17); // Configure TIM - LL_TIM_SetPrescaler(TIM17, 64 - 1); + //Set the timer resolution to 2 us + LL_TIM_SetPrescaler(TIM17, (64 << 1) - 1); LL_TIM_SetCounterMode(TIM17, LL_TIM_COUNTERMODE_UP); LL_TIM_SetAutoReload(TIM17, 0xFFFF); LL_TIM_SetClockDivision(TIM17, LL_TIM_CLOCKDIVISION_DIV1); @@ -606,7 +607,7 @@ static void subghz_device_cc1101_ext_async_tx_refill(uint32_t* buffer, size_t sa uint32_t duration = level_duration_get_duration(ld); furi_assert(duration > 0); - *buffer = duration - 1; + *buffer = duration >> 1; buffer++; samples--; } @@ -692,7 +693,8 @@ bool subghz_device_cc1101_ext_start_async_tx(SubGhzDeviceCC1101ExtCallback callb furi_hal_bus_enable(FuriHalBusTIM17); // Configure TIM - LL_TIM_SetPrescaler(TIM17, 64 - 1); + // Set the timer resolution to 2 us + LL_TIM_SetPrescaler(TIM17, (64 << 1) - 1); LL_TIM_SetCounterMode(TIM17, LL_TIM_COUNTERMODE_UP); LL_TIM_SetAutoReload(TIM17, 0xFFFF); LL_TIM_SetClockDivision(TIM17, LL_TIM_CLOCKDIVISION_DIV1);