From 6474f279d7d48e79407b9cf1b127cca5a13b232a Mon Sep 17 00:00:00 2001 From: Quincy Jones Date: Mon, 5 Mar 2018 19:50:33 -0600 Subject: [PATCH 1/3] Fix microsecond timer delay code. --- Firmware/Board/v3.3/Inc/main.h | 2 ++ Firmware/MotorControl/utils.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Firmware/Board/v3.3/Inc/main.h b/Firmware/Board/v3.3/Inc/main.h index a9650093..ddba7ca8 100644 --- a/Firmware/Board/v3.3/Inc/main.h +++ b/Firmware/Board/v3.3/Inc/main.h @@ -69,6 +69,8 @@ #define TIM_APB1_CLOCK_HZ 84000000 #define TIM_APB1_PERIOD_CLOCKS 4096 #define TIM_APB1_DEADTIME_CLOCKS 40 +#define TIM_BASE_TIMER TIM14 + #define M0_nCS_Pin GPIO_PIN_13 #define M0_nCS_GPIO_Port GPIOC diff --git a/Firmware/MotorControl/utils.c b/Firmware/MotorControl/utils.c index 032a996a..2782b517 100644 --- a/Firmware/MotorControl/utils.c +++ b/Firmware/MotorControl/utils.c @@ -187,13 +187,13 @@ uint32_t timeout_to_deadline(uint32_t timeout_ms) { // @brief: Returns number of microseconds since system startup uint32_t micros(void) { - uint32_t usTicks = HAL_RCC_GetSysClockFreq() / 1000000; register uint32_t ms, cycle_cnt; do { ms = HAL_GetTick(); - cycle_cnt = SysTick->VAL; - } while (ms != HAL_GetTick()); - return (ms * 1000) + (usTicks * 1000 - cycle_cnt) / usTicks; + cycle_cnt = TIM_BASE_TIMER->CNT; + } while (ms != HAL_GetTick()); + + return (ms * 1000) + cycle_cnt; } // @brief: Busy wait delay for given amount of microseconds (us) From 56c7557007321c2407e753e3e2b5e72123adf008 Mon Sep 17 00:00:00 2001 From: Oskar Weigl Date: Mon, 5 Mar 2018 18:09:54 -0800 Subject: [PATCH 2/3] Update main.h --- Firmware/Board/v3.3/Inc/main.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Board/v3.3/Inc/main.h b/Firmware/Board/v3.3/Inc/main.h index ddba7ca8..75bd2260 100644 --- a/Firmware/Board/v3.3/Inc/main.h +++ b/Firmware/Board/v3.3/Inc/main.h @@ -69,7 +69,7 @@ #define TIM_APB1_CLOCK_HZ 84000000 #define TIM_APB1_PERIOD_CLOCKS 4096 #define TIM_APB1_DEADTIME_CLOCKS 40 -#define TIM_BASE_TIMER TIM14 +#define TIM_TIME_BASE TIM14 #define M0_nCS_Pin GPIO_PIN_13 From 8d27dd443f0364c494d82631dff6845216ecc953 Mon Sep 17 00:00:00 2001 From: Oskar Weigl Date: Mon, 5 Mar 2018 18:10:23 -0800 Subject: [PATCH 3/3] Update utils.c --- Firmware/MotorControl/utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/MotorControl/utils.c b/Firmware/MotorControl/utils.c index 2782b517..a6a02a5a 100644 --- a/Firmware/MotorControl/utils.c +++ b/Firmware/MotorControl/utils.c @@ -190,7 +190,7 @@ uint32_t micros(void) { register uint32_t ms, cycle_cnt; do { ms = HAL_GetTick(); - cycle_cnt = TIM_BASE_TIMER->CNT; + cycle_cnt = TIM_TIME_BASE->CNT; } while (ms != HAL_GetTick()); return (ms * 1000) + cycle_cnt; @@ -203,4 +203,4 @@ void delay_us(uint32_t us) while (micros() - start < (uint32_t) us) { __ASM("nop"); } -} \ No newline at end of file +}