@@ -160,17 +160,13 @@ static void main_freq_update_reconfigure(float frequency) {
160160 Data * d = (Data * ) ARG ;
161161
162162 motor_data_configure (& d -> motor , d -> float_conf .atr_filter , frequency );
163- pid_configure (& d -> pid , frequency );
164163 motor_control_configure (& d -> motor_control , & d -> float_conf , frequency );
165164
166165 torque_tilt_configure (& d -> torque_tilt , & d -> float_conf , frequency );
167166 atr_configure (& d -> atr , & d -> float_conf , frequency );
168167 brake_tilt_configure (& d -> brake_tilt , & d -> float_conf , frequency );
169168 turn_tilt_configure (& d -> turn_tilt , & d -> float_conf , frequency );
170169 remote_configure (& d -> remote , & d -> float_conf , frequency );
171- booster_configure (& d -> booster , frequency );
172-
173- ema_configure (& d -> balance_current , 25.0f , frequency );
174170
175171 log_msg (
176172 "Main freq reconfgure old: %dHz new: %dHz" ,
@@ -183,6 +179,10 @@ static void main_freq_update_reconfigure(float frequency) {
183179static void imu_freq_update_reconfigure (float frequency ) {
184180 Data * d = (Data * ) ARG ;
185181
182+ pid_configure (& d -> pid , frequency );
183+ booster_configure (& d -> booster , frequency );
184+ ema_configure (& d -> balance_current , 25.0f , frequency );
185+
186186 log_msg (
187187 "IMU freq reconfgure old: %dHz new: %dHz" ,
188188 (int32_t ) d -> imu_t .filter_current_frequency ,
@@ -822,11 +822,22 @@ static void imu_ref_callback(float *acc, float *gyro, float *mag, float dt) {
822822 Data * d = (Data * ) ARG ;
823823
824824 time_t time = VESC_IF -> system_time_ticks ();
825- unused (time );
826825
827826 balance_filter_update (& d -> balance_filter , gyro , acc , dt );
828827
829828 frequency_tracker_update (& d -> imu_t , dt );
829+
830+ imu_update (& d -> imu , & d -> balance_filter , & d -> state );
831+
832+ if (d -> state .state == STATE_RUNNING ) {
833+ pid_control (d , dt );
834+ }
835+
836+ motor_control_apply (
837+ & d -> motor_control , d -> motor .abs_erpm_smooth .value , d -> state .state , & d -> time
838+ );
839+
840+ data_recorder_sample (& d -> data_record , d , time );
830841}
831842
832843static void refloat_thd (void * arg ) {
@@ -850,8 +861,6 @@ static void refloat_thd(void *arg) {
850861
851862 time_update (& d -> time , d -> state .state );
852863
853- imu_update (& d -> imu , & d -> balance_filter , & d -> state );
854-
855864 beeper_update (d );
856865
857866 charging_timeout (& d -> charging , & d -> state );
@@ -992,8 +1001,6 @@ static void refloat_thd(void *arg) {
9921001 }
9931002 }
9941003
995- pid_control (d , dt );
996-
9971004 break ;
9981005 case (STATE_READY ):
9991006 if (d -> state .mode == MODE_FLYWHEEL ) {
@@ -1113,12 +1120,6 @@ static void refloat_thd(void *arg) {
11131120 break ;
11141121 }
11151122
1116- motor_control_apply (
1117- & d -> motor_control , d -> motor .abs_erpm_smooth .value , d -> state .state , & d -> time
1118- );
1119-
1120- data_recorder_sample (& d -> data_record , d , d -> time .now );
1121-
11221123 systime_t remaining = start_time - VESC_IF -> system_time_ticks () + d -> main_loop_ticks ;
11231124 if (remaining > 0 && remaining <= d -> main_loop_ticks ) {
11241125 sleep_ticks = remaining ;
0 commit comments