diff --git a/app/by_motion.c b/app/by_motion.c index d808986..1e68553 100644 --- a/app/by_motion.c +++ b/app/by_motion.c @@ -16,6 +16,7 @@ PID_TypeDef pid_m1; PID_TypeDef pid_m2; uint8_t motion_enable_flag; uint8_t motion_busy_flag; +uint8_t motion_reset_flag; int16_t time_via; float position_abs; @@ -113,6 +114,15 @@ void by_motion_set_distance2(float distance, int16_t speed) distance = distance - position_abs; position_abs += distance; + if (5.0 >= position_abs) { + position_abs = 0; + by_motion_set_speed_m1(-4); + motion_busy_flag = 1; + motion_reset_flag = 1; + LOGD("RESET position_abs = %f\r\n", position_abs); + return; + } + if (distance < 0.0f) { distance = -distance; by_motion_set_speed_m1(-1 * speed); @@ -225,6 +235,15 @@ void by_motion_tmr_handle(void) return; } + if (motion_reset_flag) { + if (!gpio_input_data_bit_read(GPIOB, GPIO_PINS_3)) { + motion_reset_flag = 0; + motion_busy_flag = 0; + by_motion_set_speed_m1(0); + } + return; + } + if (time_via > 0) { time_via--; } else {