Kaynağa Gözat

encoder clear 不带参数

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 yıl önce
ebeveyn
işleme
9d6a57ae43

+ 3 - 3
Applications/foc/motor/encoder.c

@@ -41,7 +41,7 @@ static void _init_pll(void) {
 
 
 void encoder_init(void) {
-	encoder_init_clear(POSITIVE);
+	encoder_init_clear();
 	enc_intf_init(ENC_MAX_RES);
 }
 
@@ -54,13 +54,13 @@ void encoder_set_bandwidth(float bandwidth) {
 	g_encoder.pll_bandwidth_shadow = bandwidth;
 }
 
-void encoder_init_clear(s8 diretcion) {
+void encoder_init_clear(void) {
 	_init_pll();
 	g_encoder.cpr = ENC_MAX_RES;
 	g_encoder.enc_offset = nv_get_motor_params()->offset;
 	g_encoder.motor_poles = nv_get_motor_params()->poles;
 	g_encoder.b_index_found = false;
-	g_encoder.direction = diretcion;
+	g_encoder.direction = POSITIVE;
 	g_encoder.abi_angle = 0.0f;
 	g_encoder.pwm_angle = 0.0f;
 	g_encoder.est_angle_counts = 0;

+ 1 - 1
Applications/foc/motor/encoder.h

@@ -30,7 +30,7 @@ typedef struct {
 }encoder_t;
 
 void encoder_init(void);
-void encoder_init_clear(s8 direction);
+void encoder_init_clear(void);
 float encoder_get_theta(void);
 float encoder_get_speed(void);
 void encoder_detect_offset(float angle);

+ 3 - 3
Applications/foc/motor/hall.c

@@ -107,8 +107,8 @@ void hall_set_direction(s8 direction) {
 	hall_sensor_default(direction);
 }
 
-void hall_sensor_clear(s8 direction) {
-	hall_set_direction(direction);
+void hall_sensor_clear(void) {
+	hall_set_direction(POSITIVE);
 }
 
 static u32 _hall_detect_task(void *args) {
@@ -116,7 +116,7 @@ static u32 _hall_detect_task(void *args) {
 		u32 ticks_now = timer_count32_get();
 		if (ticks_now > _sensor_hander.hall_ticks) {
 			if (timer_count32_delta(ticks_now, _sensor_hander.hall_ticks) > 2000*1000) {
-				hall_sensor_clear(_sensor_hander.direction);
+				hall_sensor_clear();
 			}
 		}
 	}

+ 1 - 1
Applications/foc/motor/hall.h

@@ -50,7 +50,7 @@ typedef struct {
 }hall_t;
 
 void hall_sensor_init(void);
-void hall_sensor_clear(s8 direction);
+void hall_sensor_clear(void);
 float hall_sensor_get_theta(void); //return degree
 float hall_sensor_get_speed(void); //return rpm;
 int hall_offset_increase(int inc);

+ 2 - 1
Applications/foc/motor/motor.c

@@ -136,7 +136,7 @@ bool mc_start(u8 mode) {
 
 	torque_reset();
 	eCtrl_init(nv_get_foc_params()->n_acc_time, nv_get_foc_params()->n_dec_time);
-	motor_encoder_start(motor.s_direction);
+	motor_encoder_start(true);
 	PMSM_FOC_Start(mode);
 	PMSM_FOC_RT_LimInit();
 	pwm_turn_on_low_side();
@@ -181,6 +181,7 @@ bool mc_stop(void) {
 	adc_stop_convert();
 	pwm_stop();
 	PMSM_FOC_Stop();
+	motor_encoder_start(false);
 	pwm_up_enable(true);
 	cpu_exit_critical(mask);
 

+ 2 - 2
Applications/foc/motor/motor.h

@@ -112,11 +112,11 @@ static __INLINE void motor_encoder_init(void) {
 #endif
 }
 
-static __INLINE void motor_encoder_start(s8 direction) {
+static __INLINE void motor_encoder_start(bool start) {
 #ifdef USE_ENCODER_HALL
 		hall_sensor_clear(direction);
 #elif defined (USE_ENCODER_ABI)
-		encoder_init_clear(direction);
+		encoder_init_clear();
 #else
 	#error "Postion sensor ERROR"
 #endif