summaryrefslogtreecommitdiff
path: root/digital/ai/src
diff options
context:
space:
mode:
Diffstat (limited to 'digital/ai/src')
-rw-r--r--digital/ai/src/twi_master/asserv.c46
-rw-r--r--digital/ai/src/twi_master/asserv.h12
-rw-r--r--digital/ai/src/twi_master/mimot.c66
-rw-r--r--digital/ai/src/twi_master/mimot.h16
4 files changed, 77 insertions, 63 deletions
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