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/ai/src/twi_master/asserv.c | 46 +++++++++++++++----------- digital/ai/src/twi_master/asserv.h | 12 +++---- digital/ai/src/twi_master/mimot.c | 66 +++++++++++++++++++++----------------- digital/ai/src/twi_master/mimot.h | 16 ++++----- 4 files changed, 77 insertions(+), 63 deletions(-) (limited to 'digital/ai/src/twi_master') diff --git a/digital/ai/src/twi_master/asserv.c b/digital/ai/src/twi_master/asserv.c index 76b2eb15..153997b6 100644 --- a/digital/ai/src/twi_master/asserv.c +++ b/digital/ai/src/twi_master/asserv.c @@ -339,25 +339,27 @@ asserv_push_the_wall (uint8_t backward, uint32_t init_x, uint32_t init_y, #if AC_ASSERV_AUX_NB void -asserv_move_motor0_absolute (uint16_t position, uint8_t speed) +asserv_move_motor0_absolute (uint16_t position, uint16_t speed) { uint8_t *buffer = twi_master_get_buffer (ASSERV_SLAVE); buffer[0] = 'b'; buffer[1] = v16_to_v8 (position, 1); buffer[2] = v16_to_v8 (position, 0); - buffer[3] = speed; - twi_master_send_buffer (4); + buffer[3] = v16_to_v8 (speed, 1); + buffer[4] = v16_to_v8 (speed, 0); + twi_master_send_buffer (5); } void -asserv_move_motor1_absolute (uint16_t position, uint8_t speed) +asserv_move_motor1_absolute (uint16_t position, uint16_t speed) { uint8_t *buffer = twi_master_get_buffer (ASSERV_SLAVE); buffer[0] = 'c'; buffer[1] = v16_to_v8 (position, 1); buffer[2] = v16_to_v8 (position, 0); - buffer[3] = speed; - twi_master_send_buffer (4); + buffer[3] = v16_to_v8 (speed, 1); + buffer[4] = v16_to_v8 (speed, 0); + twi_master_send_buffer (5); } #endif /* AC_ASSERV_AUX_NB */ @@ -400,17 +402,21 @@ asserv_set_angle_position (int16_t angle) } void -asserv_set_speed (uint8_t linear_high, uint8_t angular_high, - uint8_t linear_low, uint8_t angular_low) +asserv_set_speed (uint16_t linear_high, uint16_t angular_high, + uint16_t linear_low, uint16_t angular_low) { uint8_t *buffer = twi_master_get_buffer (ASSERV_SLAVE); buffer[0] = 'p'; buffer[1] = 's'; - buffer[2] = linear_high; - buffer[3] = angular_high; - buffer[4] = linear_low; - buffer[5] = angular_low; - twi_master_send_buffer (6); + buffer[2] = v16_to_v8 (linear_high, 1); + buffer[3] = v16_to_v8 (linear_high, 0); + buffer[4] = v16_to_v8 (angular_high, 1); + buffer[5] = v16_to_v8 (angular_high, 0); + buffer[6] = v16_to_v8 (linear_low, 1); + buffer[7] = v16_to_v8 (linear_low, 0); + buffer[8] = v16_to_v8 (angular_low, 1); + buffer[9] = v16_to_v8 (angular_low, 0); + twi_master_send_buffer (10); } void @@ -454,21 +460,23 @@ asserv_goto (uint32_t x, uint32_t y, uint8_t backward) #if AC_ASSERV_AUX_NB void -asserv_motor0_zero_position (int8_t speed) +asserv_motor0_zero_position (int16_t speed) { uint8_t *buffer = twi_master_get_buffer (ASSERV_SLAVE); buffer[0] = 'B'; - buffer[1] = speed; - twi_master_send_buffer (2); + buffer[1] = v16_to_v8 (speed, 1); + buffer[2] = v16_to_v8 (speed, 0); + twi_master_send_buffer (3); } void -asserv_motor1_zero_position (int8_t speed) +asserv_motor1_zero_position (int16_t speed) { uint8_t *buffer = twi_master_get_buffer (ASSERV_SLAVE); buffer[0] = 'C'; - buffer[1] = speed; - twi_master_send_buffer (2); + buffer[1] = v16_to_v8 (speed, 1); + buffer[2] = v16_to_v8 (speed, 0); + twi_master_send_buffer (3); } void diff --git a/digital/ai/src/twi_master/asserv.h b/digital/ai/src/twi_master/asserv.h index 90e3b785..ed6ed046 100644 --- a/digital/ai/src/twi_master/asserv.h +++ b/digital/ai/src/twi_master/asserv.h @@ -223,7 +223,7 @@ asserv_push_the_wall (uint8_t backward, uint32_t init_x, uint32_t init_y, * @param speed speed of the movement. */ void -asserv_move_motor0_absolute (uint16_t position, uint8_t speed); +asserv_move_motor0_absolute (uint16_t position, uint16_t speed); /** * Move the motor1. @@ -234,7 +234,7 @@ asserv_move_motor0_absolute (uint16_t position, uint8_t speed); * @param speed speed of the movement. */ void -asserv_move_motor1_absolute (uint16_t position, uint8_t speed); +asserv_move_motor1_absolute (uint16_t position, uint16_t speed); #endif /* AC_ASSERV_AUX_NB */ @@ -271,8 +271,8 @@ asserv_set_angle_position (int16_t angle); * @param angular_low angular low speed */ void -asserv_set_speed (uint8_t linear_high, uint8_t angular_high, - uint8_t linear_low, uint8_t angular_low); +asserv_set_speed (uint16_t linear_high, uint16_t angular_high, + uint16_t linear_low, uint16_t angular_low); /** * Set the complete position of the bot. @@ -300,11 +300,11 @@ asserv_goto (uint32_t x, uint32_t y, uint8_t backward); /** Reset the motor0 to the zero position. */ void -asserv_motor0_zero_position (int8_t speed); +asserv_motor0_zero_position (int16_t speed); /** Reset the motor1 to the zero position. */ void -asserv_motor1_zero_position (int8_t speed); +asserv_motor1_zero_position (int16_t speed); /** Set PWM to zero for motor0. */ void diff --git a/digital/ai/src/twi_master/mimot.c b/digital/ai/src/twi_master/mimot.c index 8df84538..cc66a280 100644 --- a/digital/ai/src/twi_master/mimot.c +++ b/digital/ai/src/twi_master/mimot.c @@ -148,89 +148,95 @@ mimot_set_motor1_position (uint16_t position) } void -mimot_move_motor0_absolute (uint16_t position, uint8_t speed) +mimot_move_motor0_absolute (uint16_t position, uint16_t speed) { uint8_t *buffer = twi_master_get_buffer (MIMOT_SLAVE); buffer[0] = 'b'; buffer[1] = v16_to_v8 (position, 1); buffer[2] = v16_to_v8 (position, 0); - buffer[3] = speed; - twi_master_send_buffer (4); + buffer[3] = v16_to_v8 (speed, 1); + buffer[4] = v16_to_v8 (speed, 0); + twi_master_send_buffer (5); } void -mimot_move_motor1_absolute (uint16_t position, uint8_t speed) +mimot_move_motor1_absolute (uint16_t position, uint16_t speed) { uint8_t *buffer = twi_master_get_buffer (MIMOT_SLAVE); buffer[0] = 'c'; buffer[1] = v16_to_v8 (position, 1); buffer[2] = v16_to_v8 (position, 0); - buffer[3] = speed; - twi_master_send_buffer (4); + buffer[3] = v16_to_v8 (speed, 1); + buffer[4] = v16_to_v8 (speed, 0); + twi_master_send_buffer (5); } void -mimot_motor0_zero_position (int8_t speed) +mimot_motor0_zero_position (int16_t speed) { mimot_motor0_find_zero (speed, 0, 0); } void -mimot_motor1_zero_position (int8_t speed) +mimot_motor1_zero_position (int16_t speed) { mimot_motor1_find_zero (speed, 0, 0); } void -mimot_motor0_find_zero (int8_t speed, uint8_t use_switch, +mimot_motor0_find_zero (int16_t speed, uint8_t use_switch, uint16_t reset_position) { uint8_t *buffer = twi_master_get_buffer (MIMOT_SLAVE); buffer[0] = 'B'; buffer[1] = 0; - buffer[2] = speed; - buffer[3] = use_switch; - buffer[4] = v16_to_v8 (reset_position, 1); - buffer[5] = v16_to_v8 (reset_position, 0); - twi_master_send_buffer (6); + buffer[2] = v16_to_v8 (speed, 1); + buffer[3] = v16_to_v8 (speed, 0); + buffer[4] = use_switch; + buffer[5] = v16_to_v8 (reset_position, 1); + buffer[6] = v16_to_v8 (reset_position, 0); + twi_master_send_buffer (7); } void -mimot_motor1_find_zero (int8_t speed, uint8_t use_switch, +mimot_motor1_find_zero (int16_t speed, uint8_t use_switch, uint16_t reset_position) { uint8_t *buffer = twi_master_get_buffer (MIMOT_SLAVE); buffer[0] = 'B'; buffer[1] = 1; - buffer[2] = speed; - buffer[3] = use_switch; - buffer[4] = v16_to_v8 (reset_position, 1); - buffer[5] = v16_to_v8 (reset_position, 0); - twi_master_send_buffer (6); + buffer[2] = v16_to_v8 (speed, 1); + buffer[3] = v16_to_v8 (speed, 0); + buffer[4] = use_switch; + buffer[5] = v16_to_v8 (reset_position, 1); + buffer[6] = v16_to_v8 (reset_position, 0); + twi_master_send_buffer (7); } void -mimot_motor0_clamp (int8_t speed, int16_t pwm) +mimot_motor0_clamp (int16_t speed, int16_t pwm) { uint8_t *buffer = twi_master_get_buffer (MIMOT_SLAVE); buffer[0] = 'l'; buffer[1] = 0; - buffer[2] = speed; - buffer[3] = v16_to_v8 (pwm, 1); - buffer[4] = v16_to_v8 (pwm, 0); - twi_master_send_buffer (5); + buffer[2] = v16_to_v8 (speed, 1); + buffer[3] = v16_to_v8 (speed, 0); + buffer[4] = v16_to_v8 (pwm, 1); + buffer[5] = v16_to_v8 (pwm, 0); + twi_master_send_buffer (6); } void -mimot_motor1_clamp (int8_t speed, int16_t pwm) +mimot_motor1_clamp (int16_t speed, int16_t pwm) { uint8_t *buffer = twi_master_get_buffer (MIMOT_SLAVE); buffer[0] = 'l'; buffer[1] = 1; - buffer[2] = speed; - buffer[3] = v16_to_v8 (pwm, 1); - buffer[4] = v16_to_v8 (pwm, 0); - twi_master_send_buffer (5); + buffer[2] = v16_to_v8 (speed, 1); + buffer[3] = v16_to_v8 (speed, 0); + buffer[4] = v16_to_v8 (pwm, 1); + buffer[5] = v16_to_v8 (pwm, 0); + twi_master_send_buffer (6); } void diff --git a/digital/ai/src/twi_master/mimot.h b/digital/ai/src/twi_master/mimot.h index c9de7090..35b2dfbe 100644 --- a/digital/ai/src/twi_master/mimot.h +++ b/digital/ai/src/twi_master/mimot.h @@ -82,37 +82,37 @@ mimot_set_motor1_position (uint16_t position); /** Move motor0 to absolute position in steps. */ void -mimot_move_motor0_absolute (uint16_t position, uint8_t speed); +mimot_move_motor0_absolute (uint16_t position, uint16_t speed); /** Move motor1 to absolute position in steps. */ void -mimot_move_motor1_absolute (uint16_t position, uint8_t speed); +mimot_move_motor1_absolute (uint16_t position, uint16_t speed); /** Reset motor0 to zero position. */ void -mimot_motor0_zero_position (int8_t speed); +mimot_motor0_zero_position (int16_t speed); /** Reset motor1 to zero position. */ void -mimot_motor1_zero_position (int8_t speed); +mimot_motor1_zero_position (int16_t speed); /** Find zero position. */ void -mimot_motor0_find_zero (int8_t speed, uint8_t use_switch, +mimot_motor0_find_zero (int16_t speed, uint8_t use_switch, uint16_t reset_position); /** Find zero position. */ void -mimot_motor1_find_zero (int8_t speed, uint8_t use_switch, +mimot_motor1_find_zero (int16_t speed, uint8_t use_switch, uint16_t reset_position); /** Clamp motor0. */ void -mimot_motor0_clamp (int8_t speed, int16_t pwm); +mimot_motor0_clamp (int16_t speed, int16_t pwm); /** Clamp motor1. */ void -mimot_motor1_clamp (int8_t speed, int16_t pwm); +mimot_motor1_clamp (int16_t speed, int16_t pwm); /** Free motor0. */ void -- cgit v1.2.3