summaryrefslogtreecommitdiff
path: root/digital/asserv/src/asserv
diff options
context:
space:
mode:
authorNicolas Schodet2008-04-17 23:51:47 +0200
committerNicolas Schodet2008-04-17 23:51:47 +0200
commit707f39c85ea1f20f436dbcd08f9de51ffa609a03 (patch)
tree5f909dd0ca8a54ad31eac684f6a2cacb8de1bc33 /digital/asserv/src/asserv
parent8add28be0060c0e23a79128b45d4992bd66c65fd (diff)
* digital/asserv/src/assserv:
- speed will finish the movement only if the current mode is speed.
Diffstat (limited to 'digital/asserv/src/asserv')
-rw-r--r--digital/asserv/src/asserv/speed.c6
-rw-r--r--digital/asserv/src/asserv/traj.c4
2 files changed, 6 insertions, 4 deletions
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