|
|
@@ -126,7 +126,23 @@ static void MC_Check_MosVbusThrottle(void) {
|
|
|
sys_debug("phase vol %f, %f, %f\n", abc[0], abc[1], abc[2]);
|
|
|
}
|
|
|
|
|
|
+static int hw_brk_err_cnt = 0;
|
|
|
+static int hw_brk_no_err_cnt = 0;
|
|
|
static u32 _self_check_task(void *p) {
|
|
|
+ if (get_tick_ms() < 500) { //启动500ms内检测刹车状态是否正常,应该是没有刹车
|
|
|
+ if (mc_detect_hwbrake() && hw_brk_err_cnt++ >= 60) {
|
|
|
+ mc_set_critical_error(FOC_CRIT_BRK_Err);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ if (mc_critical_err_is_set(FOC_CRIT_BRK_Err) && !mc_detect_hwbrake()) {
|
|
|
+ if (hw_brk_no_err_cnt++ >= 100) {
|
|
|
+ mc_clr_critical_error(FOC_CRIT_BRK_Err);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ hw_brk_no_err_cnt = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (ENC_Check_error()) {
|
|
|
mc_crit_err_add_s16(FOC_CRIT_Encoder_Err, -1);
|
|
|
mc_set_critical_error(FOC_CRIT_Encoder_Err);
|