From 037f715dc2626f592edb7f33b99762180c3aa430 Mon Sep 17 00:00:00 2001 From: Oskar Weigl Date: Sun, 25 Feb 2018 23:54:17 -0800 Subject: [PATCH] elec_rad_per_enc also evaluated in check CPR --- Firmware/MotorControl/low_level.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Firmware/MotorControl/low_level.c b/Firmware/MotorControl/low_level.c index 3bd65cc4..ad06623f 100644 --- a/Firmware/MotorControl/low_level.c +++ b/Firmware/MotorControl/low_level.c @@ -805,6 +805,8 @@ bool calib_enc_offset(Motor_t* motor, float voltage_magnitude) { encvaluesum += (int16_t)motor->encoder.encoder_timer->Instance->CNT; } + //TODO avoid recomputing elec_rad_per_enc every time + float elec_rad_per_enc = motor->pole_pairs * 2 * M_PI * (1.0f / (float)(motor->encoder.encoder_cpr)); float expected_encoder_delta = scan_range / elec_rad_per_enc; float actual_encoder_delta_abs = fabsf((int16_t)motor->encoder.encoder_timer->Instance->CNT-init_enc_val); if(fabsf(actual_encoder_delta_abs - expected_encoder_delta)/expected_encoder_delta > motor->encoder.encoder_calib_range) @@ -975,6 +977,7 @@ void update_rotor(Motor_t* motor) { int corrected_enc = encoder->encoder_state % motor->encoder.encoder_cpr; corrected_enc -= encoder->encoder_offset; corrected_enc *= encoder->motor_dir; + //TODO avoid recomputing elec_rad_per_enc every time float elec_rad_per_enc = motor->pole_pairs * 2 * M_PI * (1.0f / (float)(motor->encoder.encoder_cpr)); float ph = elec_rad_per_enc * (float)corrected_enc; // ph = fmodf(ph, 2*M_PI);