From bc5944190b7ae0af55caa84f86d63bf95e40712f Mon Sep 17 00:00:00 2001 From: schodet Date: Tue, 16 May 2006 19:35:51 +0000 Subject: Ajout de plein de trucs bien pour les trous. Ajout du système de ack. --- n/asserv/src/asserv/main.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'n/asserv/src/asserv/main.c') 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]); -- cgit v1.2.3