|
@@ -195,18 +195,19 @@ static void encoder_detect_error(s16 cnt) {
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
if (g_encoder.last_delta_cnt == MAX_S16) {
|
|
if (g_encoder.last_delta_cnt == MAX_S16) {
|
|
|
- g_encoder.last_delta_cnt = delta_cnt;
|
|
|
|
|
skip = true;
|
|
skip = true;
|
|
|
}
|
|
}
|
|
|
float ab_thr = CONFIG_ENC_DIANOSTIC_MIN_CNT*1.2f;
|
|
float ab_thr = CONFIG_ENC_DIANOSTIC_MIN_CNT*1.2f;
|
|
|
- if (g_encoder.last_delta_cnt <= ab_thr) {
|
|
|
|
|
|
|
+ if (g_encoder.last_delta_cnt < ab_thr) {
|
|
|
if (get_delta_ms(g_encoder.pwm_time_ms) >= 8) {
|
|
if (get_delta_ms(g_encoder.pwm_time_ms) >= 8) {
|
|
|
g_encoder.enc_maybe_err = ENCODER_PWM_ERR;
|
|
g_encoder.enc_maybe_err = ENCODER_PWM_ERR;
|
|
|
enc_pwm_err_ms = get_delta_ms(g_encoder.pwm_time_ms);
|
|
enc_pwm_err_ms = get_delta_ms(g_encoder.pwm_time_ms);
|
|
|
enc_delta_err2 = (s16)((g_encoder.est_vel_counts/g_encoder.cpr) * 60.0f);
|
|
enc_delta_err2 = (s16)((g_encoder.est_vel_counts/g_encoder.cpr) * 60.0f);
|
|
|
}
|
|
}
|
|
|
- skip = true;
|
|
|
|
|
- g_encoder.start_dianostic_cnt = 0;
|
|
|
|
|
|
|
+ if (!_mayerr_cnt) {
|
|
|
|
|
+ skip = true;
|
|
|
|
|
+ g_encoder.start_dianostic_cnt = 0;
|
|
|
|
|
+ }
|
|
|
}else if (g_encoder.start_dianostic_cnt < 0xFFFFFF) {
|
|
}else if (g_encoder.start_dianostic_cnt < 0xFFFFFF) {
|
|
|
g_encoder.start_dianostic_cnt ++;
|
|
g_encoder.start_dianostic_cnt ++;
|
|
|
}
|
|
}
|