summaryrefslogtreecommitdiff
path: root/n/asserv/src/asserv/main.c
diff options
context:
space:
mode:
authorschodet2006-05-16 19:35:51 +0000
committerschodet2006-05-16 19:35:51 +0000
commitbc5944190b7ae0af55caa84f86d63bf95e40712f (patch)
treee77a381b322871cb6048a77ecbf694dfc72b04d8 /n/asserv/src/asserv/main.c
parentcd40c9287d4b1624657ca784a640aa2678b52357 (diff)
Ajout de plein de trucs bien pour les trous.
Ajout du système de ack.
Diffstat (limited to 'n/asserv/src/asserv/main.c')
-rw-r--r--n/asserv/src/asserv/main.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/n/asserv/src/asserv/main.c b/n/asserv/src/asserv/main.c
index aec9c8e..54b9794 100644
--- a/n/asserv/src/asserv/main.c
+++ b/n/asserv/src/asserv/main.c
@@ -32,6 +32,9 @@
#include "misc.h"
+/** Motor command sequence. */
+uint8_t main_sequence, main_sequence_ack = 0xff;
+
/* This is implementation include. */
#ifndef HOST
# include "timer.avr.c"
@@ -55,8 +58,8 @@
* 3: trajectory control. */
int8_t main_mode;
-/** Motor command sequence. */
-uint8_t main_sequence;
+/** Report trajectory end. */
+uint8_t main_sequence_ack_cpt = 2;
/** Report of counters. */
uint8_t main_stat_counter, main_stat_counter_cpt;
@@ -144,6 +147,11 @@ main_loop (void)
speed_update ();
main_timer[3] = timer_read ();
/* Stats. */
+ if (main_sequence_ack == main_sequence && !--main_sequence_ack_cpt)
+ {
+ proto_send1b ('A', main_sequence);
+ main_sequence_ack_cpt = 2;
+ }
if (main_stat_counter && !--main_stat_counter_cpt)
{
proto_send2w ('C', counter_left, counter_right);
@@ -189,7 +197,7 @@ main_loop (void)
}
if (main_print_pin && !--main_print_pin_cpt)
{
- proto_send1b ('I', PINA);
+ proto_send2b ('I', PINA, PINF);
main_print_pin_cpt = main_print_pin;
}
/* Misc. */
@@ -274,6 +282,13 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
break;
main_mode = 3;
traj_mode = 10;
+ traj_holes_filter = 0;
+ main_sequence = args[0];
+ break;
+ case c ('A', 1):
+ /* Set acknoledge.
+ * - b: new sequence number (0 for example). */
+ main_sequence = args[0];
break;
/* Stats.
* - b: interval between stats. */
@@ -350,12 +365,16 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
speed_theta_acc = v8_to_v16 (args[1], args[2]);
speed_alpha_acc = v8_to_v16 (args[3], args[4]);
break;
- case c ('s', 3):
- /* Set maximum speed.
- * - b: theta.
- * - b: alpha. */
+ case c ('s', 5):
+ /* Set maximum and slow speed.
+ * - b: theta max.
+ * - b: alpha max.
+ * - b: theta slow.
+ * - b: alpha slow. */
speed_theta_max = args[1];
speed_alpha_max = args[2];
+ speed_theta_slow = args[3];
+ speed_alpha_slow = args[4];
break;
case c ('p', 3):
pos_theta_kp = pos_alpha_kp = v8_to_v16 (args[1], args[2]);