From cf8fbdbfb994576b6f3278602c25e84795deac11 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sat, 14 Apr 2012 20:18:16 +0200 Subject: digital: use 16bit speed --- digital/asserv/src/asserv/main.c | 53 +++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 25 deletions(-) (limited to 'digital/asserv/src/asserv/main.c') diff --git a/digital/asserv/src/asserv/main.c b/digital/asserv/src/asserv/main.c index 36cd2219..97d0b1c7 100644 --- a/digital/asserv/src/asserv/main.c +++ b/digital/asserv/src/asserv/main.c @@ -181,10 +181,10 @@ main_loop (void) #endif if (main_stat_speed && !--main_stat_speed_cpt) { - proto_sendb ('S', cs_main.speed_theta.cur >> 8, - cs_main.speed_alpha.cur >> 8 - AUX_IF (, cs_aux[0].speed.cur >> 8, - cs_aux[1].speed.cur >> 8)); + proto_sendw ('S', cs_main.speed_theta.cur_f >> 8, + cs_main.speed_alpha.cur_f >> 8 + AUX_IF (, cs_aux[0].speed.cur_f >> 8, + cs_aux[1].speed.cur_f >> 8)); main_stat_speed_cpt = main_stat_speed; } if (main_stat_pos && !--main_stat_pos_cpt) @@ -327,21 +327,23 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) speed_control_set_speed (&cs_main.speed_alpha, 0); control_state_set_mode (&cs_main.state, CS_MODE_SPEED_CONTROL, 0); break; - case c ('s', 2): + case c ('s', 4): /* Set speed. - * - b: theta speed. - * - b: alpha speed. */ - speed_control_set_speed (&cs_main.speed_theta, args[0]); - speed_control_set_speed (&cs_main.speed_alpha, args[1]); + * - w: theta speed. + * - w: alpha speed. */ + speed_control_set_speed (&cs_main.speed_theta, + v8_to_v16 (args[0], args[1])); + speed_control_set_speed (&cs_main.speed_alpha, + v8_to_v16 (args[2], args[3])); control_state_set_mode (&cs_main.state, CS_MODE_SPEED_CONTROL, 0); break; #if AC_ASSERV_AUX_NB - case c ('S', 2): + case c ('S', 3): /* Set auxiliary speed. * - b: aux index. - * - b: speed. */ + * - w: speed. */ if (!auxp) { proto_send0 ('?'); return; } - speed_control_set_speed (speed, args[1]); + speed_control_set_speed (speed, v8_to_v16 (args[1], args[2])); control_state_set_mode (state, CS_MODE_SPEED_CONTROL, 0); break; #endif @@ -484,18 +486,19 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) break; aux_traj_goto_start (auxp, v8_to_v16 (args[1], args[2])); break; - case c ('y', 3): + case c ('Y', 4): /* Auxiliary find zero. * - b: aux index. - * - b: speed. + * - w: speed. * - b: sequence number. */ if (!auxp) { proto_send0 ('?'); return; } - if (!seq_start (seq, args[2])) + if (!seq_start (seq, args[3])) break; if (args[0] == 0) - aux_traj_find_limit_start (auxp, args[1]); + aux_traj_find_limit_start (auxp, v8_to_v16 (args[1], args[2])); else - aux_traj_find_zero_reverse_start (auxp, args[1]); + aux_traj_find_zero_reverse_start (auxp, + v8_to_v16 (args[1], args[2])); break; case c ('a', 3): /* Set all acknoledge. @@ -634,16 +637,16 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) * - b: index. * - w: acceleration. */ if (!speed) { proto_send0 ('?'); return; } - speed->acc = v8_to_v16 (args[2], args[3]); + speed->acc_f = v8_to_v16 (args[2], args[3]); break; - case c ('s', 4): + case c ('s', 6): /* Set maximum and slow speed. * - b: index. - * - b: max speed. - * - b: slow speed. */ + * - w: max speed. + * - w: slow speed. */ if (!speed) { proto_send0 ('?'); return; } - speed->max = args[2]; - speed->slow = args[3]; + speed->max = v8_to_v16 (args[2], args[3]); + speed->slow = v8_to_v16 (args[4], args[5]); break; case c ('p', 4): /* Set proportional coefficient. @@ -746,8 +749,8 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) * - b: index. */ if (!pos) { proto_send0 ('?'); return; } proto_send2b ('E', EEPROM_KEY, eeprom_loaded); - proto_send1w ('a', speed->acc); - proto_send2b ('s', speed->max, speed->slow); + proto_send1w ('a', speed->acc_f); + proto_send2w ('s', speed->max, speed->slow); proto_send3w ('b', bd->error_limit, bd->speed_limit, bd->counter_limit); proto_send1w ('p', pos->kp); -- cgit v1.2.3