From 09a6c7a0583e14d254e98957ae7980d2feaaed06 Mon Sep 17 00:00:00 2001 From: Till Rosenband Date: Tue, 27 Oct 2020 13:25:57 -0400 Subject: [PATCH 1/2] Remove build date to allow easy comparison of compiled binaries. --- terminal.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/terminal.c b/terminal.c index 50e173b8..e70eb2f9 100644 --- a/terminal.c +++ b/terminal.c @@ -1033,8 +1033,6 @@ void terminal_process_string(char *str) { commands_printf("Invalid arguments\n"); } } - } else if (strcmp(argv[0], "build_date") == 0) { - commands_printf("Build date and time: %s at %s\n", __DATE__, __TIME__); } else if (strcmp(argv[0], "crc") == 0) { unsigned mc_crc0 = mc_interface_get_configuration()->crc; unsigned mc_crc1 = mc_interface_calc_crc(NULL, false); @@ -1179,9 +1177,6 @@ void terminal_process_string(char *str) { commands_printf("io_board_set_output_pwm [id] [ch] [duty]"); commands_printf(" Set pwm output of IO board."); - commands_printf("build_date"); - commands_printf(" Print build date and time."); - commands_printf("crc"); commands_printf(" Print CRC values."); From 64d913238901e7872b0b74ee9e635b08cd25694b Mon Sep 17 00:00:00 2001 From: Till Rosenband Date: Tue, 27 Oct 2020 13:44:58 -0400 Subject: [PATCH 2/2] Remove some #ifdef HAS_DUAL_MOTORS. --- mcpwm_foc.c | 71 +++++++++++++---------------------------------------- 1 file changed, 17 insertions(+), 54 deletions(-) diff --git a/mcpwm_foc.c b/mcpwm_foc.c index 7d9a7144..8013826e 100644 --- a/mcpwm_foc.c +++ b/mcpwm_foc.c @@ -293,6 +293,14 @@ static volatile bool hfi_thd_stop; TIM2->CR1 &= ~TIM_CR1_UDIS; #endif +// #define M_MOTOR: For single motor compilation, expands to &m_motor_1. +// For dual motors, expands to &m_motor_1 or _2, depending on is_second_motor. +#ifdef HW_HAS_DUAL_MOTORS +#define M_MOTOR(is_second_motor) (is_second_motor ? &m_motor_2 : &m_motor_1) +#else +#define M_MOTOR(is_second_motor) (((void)is_second_motor), &m_motor_1) +#endif + static void update_hfi_samples(foc_hfi_samples samples, volatile motor_all_state_t *motor) { utils_sys_lock_cnt(); @@ -751,12 +759,7 @@ int mcpwm_foc_isr_motor(void) { * Switch off all FETs. */ void mcpwm_foc_stop_pwm(bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1; -#else - (void)is_second_motor; - volatile motor_all_state_t *motor = &m_motor_1; -#endif + volatile motor_all_state_t *motor = M_MOTOR(is_second_motor); motor->m_control_mode = CONTROL_MODE_NONE; motor->m_state = MC_STATE_OFF; @@ -1082,69 +1085,34 @@ bool mcpwm_foc_is_using_encoder(void) { } float mcpwm_foc_get_tot_current_motor(bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1; + volatile motor_all_state_t *motor = M_MOTOR(is_second_motor); return SIGN(motor->m_motor_state.vq * motor->m_motor_state.iq) * motor->m_motor_state.i_abs; -#else - (void)is_second_motor; - return SIGN(m_motor_1.m_motor_state.vq * m_motor_1.m_motor_state.iq) * m_motor_1.m_motor_state.i_abs; -#endif } float mcpwm_foc_get_tot_current_filtered_motor(bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1; + volatile motor_all_state_t *motor = M_MOTOR(is_second_motor); return SIGN(motor->m_motor_state.vq * motor->m_motor_state.iq_filter) * motor->m_motor_state.i_abs_filter; -#else - (void)is_second_motor; - return SIGN(m_motor_1.m_motor_state.vq * m_motor_1.m_motor_state.iq_filter) * m_motor_1.m_motor_state.i_abs_filter; -#endif } float mcpwm_foc_get_tot_current_in_motor(bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - return (is_second_motor ? &m_motor_2 : &m_motor_1)->m_motor_state.i_bus; -#else - (void)is_second_motor; - return m_motor_1.m_motor_state.i_bus; -#endif + return M_MOTOR(is_second_motor)->m_motor_state.i_bus; } float mcpwm_foc_get_tot_current_in_filtered_motor(bool is_second_motor) { // TODO: Filter current? -#ifdef HW_HAS_DUAL_MOTORS - return (is_second_motor ? &m_motor_2 : &m_motor_1)->m_motor_state.i_bus; -#else - (void)is_second_motor; - return m_motor_1.m_motor_state.i_bus; -#endif + return M_MOTOR(is_second_motor)->m_motor_state.i_bus; } float mcpwm_foc_get_abs_motor_current_motor(bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - return (is_second_motor ? &m_motor_2 : &m_motor_1)->m_motor_state.i_abs; -#else - (void)is_second_motor; - return m_motor_1.m_motor_state.i_abs; -#endif + return M_MOTOR(is_second_motor)->m_motor_state.i_abs; } float mcpwm_foc_get_abs_motor_current_filtered_motor(bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - return (is_second_motor ? &m_motor_2 : &m_motor_1)->m_motor_state.i_abs_filter; -#else - (void)is_second_motor; - return m_motor_1.m_motor_state.i_abs_filter; -#endif + return M_MOTOR(is_second_motor)->m_motor_state.i_abs_filter; } mc_state mcpwm_foc_get_state_motor(bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - return (is_second_motor ? &m_motor_2 : &m_motor_1)->m_state; -#else - (void)is_second_motor; - return m_motor_1.m_state; -#endif + return M_MOTOR(is_second_motor)->m_state; } /** @@ -1418,12 +1386,7 @@ void mcpwm_foc_get_current_offsets( volatile int *curr1_offset, volatile int *curr2_offset, bool is_second_motor) { -#ifdef HW_HAS_DUAL_MOTORS - volatile motor_all_state_t *motor = is_second_motor ? &m_motor_2 : &m_motor_1; -#else - (void)is_second_motor; - volatile motor_all_state_t *motor = &m_motor_1; -#endif + volatile motor_all_state_t *motor = M_MOTOR(is_second_motor); *curr0_offset = motor->m_curr_ofs[0]; *curr1_offset = motor->m_curr_ofs[1]; *curr2_offset = motor->m_curr_ofs[2];