From 707f39c85ea1f20f436dbcd08f9de51ffa609a03 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 17 Apr 2008 23:51:47 +0200 Subject: * digital/asserv/src/assserv: - speed will finish the movement only if the current mode is speed. --- digital/asserv/src/asserv/speed.c | 6 ++++-- digital/asserv/src/asserv/traj.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'digital') diff --git a/digital/asserv/src/asserv/speed.c b/digital/asserv/src/asserv/speed.c index 39da4f14..a3bb6666 100644 --- a/digital/asserv/src/asserv/speed.c +++ b/digital/asserv/src/asserv/speed.c @@ -110,7 +110,8 @@ speed_update (void) speed_update_by (&speed_theta, &pos_theta); speed_update_by (&speed_alpha, &pos_alpha); /* Check for completion. */ - if ((speed_theta.use_pos || speed_alpha.use_pos) + if (state_main.mode == MODE_SPEED + && (speed_theta.use_pos || speed_alpha.use_pos) && (!speed_theta.use_pos || speed_theta.cur == 0) && (!speed_alpha.use_pos || speed_alpha.cur == 0)) { @@ -122,7 +123,8 @@ speed_update (void) /* Update speed. */ speed_update_by (&speed_aux0, &pos_aux0); /* Check for completion. */ - if (speed_aux0.use_pos && speed_aux0.cur == 0) + if (state_aux0.mode == MODE_SPEED + && speed_aux0.use_pos && speed_aux0.cur == 0) state_finish (&state_aux0); } } diff --git a/digital/asserv/src/asserv/traj.c b/digital/asserv/src/asserv/traj.c index 19995818..bc95b39a 100644 --- a/digital/asserv/src/asserv/traj.c +++ b/digital/asserv/src/asserv/traj.c @@ -166,8 +166,8 @@ traj_goto (void) if (UTILS_ABS (dx) < ((int32_t) traj_eps) << 8 && UTILS_ABS (dy) < ((int32_t) traj_eps) << 8) { - /* Near enough, stop. */ - state_finish (&state_main); + /* Near enough, stop, let speed terminate the movement. */ + state_main.mode = MODE_SPEED; traj_mode = TRAJ_DONE; } else -- cgit v1.2.3