From 21deab476ce421f04d367959110afbd85656bdde Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 29 May 2011 09:51:30 +0200 Subject: digital/io-hub: softer clamp & door control --- digital/io-hub/src/robospierre/bot.h | 28 ++++++++++++++++------------ digital/io-hub/src/robospierre/clamp.c | 13 +++++++------ digital/io-hub/src/robospierre/main.c | 12 ++++++++---- 3 files changed, 31 insertions(+), 22 deletions(-) (limited to 'digital') diff --git a/digital/io-hub/src/robospierre/bot.h b/digital/io-hub/src/robospierre/bot.h index 1ba432a8..bd7cc181 100644 --- a/digital/io-hub/src/robospierre/bot.h +++ b/digital/io-hub/src/robospierre/bot.h @@ -141,20 +141,24 @@ #define BOT_PWM_DOOR_BACK_BOTTOM 3 #define BOT_PWM_DOOR_BACK_TOP 4 -#define BOT_PWM_CLAMP_OPEN_TIME 125 -#define BOT_PWM_CLAMP_OPEN 0x1ff, 125, 0 -#define BOT_PWM_CLAMP_CLOSE_TIME 75 -#define BOT_PWM_CLAMP_CLOSE -0x3ff, 75, 0 +#define BOT_PWM_CLAMP_OPEN_TIME 150 +#define BOT_PWM_CLAMP_OPEN 0x1ff, 150, 0 +#define BOT_PWM_CLAMP_CLOSE_TIME 150 +#define BOT_PWM_CLAMP_CLOSE -0x1ff, 150, 0 #define BOT_PWM_DOOR_OPEN_TIME 12 -#define BOT_PWM_DOOR_OPEN 0x3ff, 37, 0x55 -#define BOT_PWM_DOOR_CLOSE_TIME 50 +#define BOT_PWM_DOOR_OPEN(slot) \ + 0x1ff, (((slot) == CLAMP_SLOT_FRONT_BOTTOM \ + || (slot) == CLAMP_SLOT_BACK_BOTTOM) ? 80 : 62), 0x55 +#define BOT_PWM_DOOR_CLOSE_TIME 100 #define BOT_PWM_DOOR_CLOSE(slot) \ - -0x3ff, 50, ((slot == CLAMP_SLOT_FRONT_BOTTOM \ - || slot == CLAMP_SLOT_BACK_BOTTOM) ? -0x100 : -0x180) - -#define BOT_PWM_CLAMP_INIT 0x1ff, 125, 0 -#define BOT_PWM_DOOR_INIT 0x1ff, 74, 0x55 -#define BOT_PWM_CLAMP_DOOR_INIT 125 + -0x1ff, (((slot) == CLAMP_SLOT_FRONT_BOTTOM \ + || (slot) == CLAMP_SLOT_BACK_BOTTOM) ? 80 : 62), \ + (((slot) == CLAMP_SLOT_FRONT_BOTTOM \ + || (slot) == CLAMP_SLOT_BACK_BOTTOM) ? -0x100 : -0x180) + +#define BOT_PWM_CLAMP_INIT 0x1ff, 150, 0 +#define BOT_PWM_DOOR_INIT 0x1ff, 80, 0x55 +#define BOT_PWM_CLAMP_DOOR_INIT 150 #endif /* bot_h */ diff --git a/digital/io-hub/src/robospierre/clamp.c b/digital/io-hub/src/robospierre/clamp.c index f799e7d7..4c0fc9a7 100644 --- a/digital/io-hub/src/robospierre/clamp.c +++ b/digital/io-hub/src/robospierre/clamp.c @@ -264,7 +264,7 @@ clamp_door (uint8_t pos, uint8_t open) else if (clamp_slot_door[pos] != 0xff) { if (open) - pwm_set_timed (clamp_slot_door[pos], BOT_PWM_DOOR_OPEN); + pwm_set_timed (clamp_slot_door[pos], BOT_PWM_DOOR_OPEN (pos)); else pwm_set_timed (clamp_slot_door[pos], BOT_PWM_DOOR_CLOSE (pos)); } @@ -482,8 +482,8 @@ FSM_TRANS (CLAMP_IDLE, clamp_drop, CLAMP_DROPING_DOOR_OPENING) /* If going forward, drop at back. */ uint8_t bay = ctx.drop_direction == DIRECTION_FORWARD ? CLAMP_SLOT_BACK_BOTTOM : CLAMP_SLOT_FRONT_BOTTOM; - pwm_set_timed (clamp_slot_door[bay + 0], BOT_PWM_DOOR_OPEN); - pwm_set_timed (clamp_slot_door[bay + 2], BOT_PWM_DOOR_OPEN); + pwm_set_timed (clamp_slot_door[bay + 0], BOT_PWM_DOOR_OPEN (bay + 0)); + pwm_set_timed (clamp_slot_door[bay + 2], BOT_PWM_DOOR_OPEN (bay + 2)); return FSM_NEXT (CLAMP_IDLE, clamp_drop); } @@ -599,8 +599,8 @@ FSM_TRANS (CLAMP_LOCKED, clamp_drop, CLAMP_DROPING_DOOR_OPENING) /* If going forward, drop at back. */ uint8_t bay = ctx.drop_direction == DIRECTION_FORWARD ? CLAMP_SLOT_BACK_BOTTOM : CLAMP_SLOT_FRONT_BOTTOM; - pwm_set_timed (clamp_slot_door[bay + 0], BOT_PWM_DOOR_OPEN); - pwm_set_timed (clamp_slot_door[bay + 2], BOT_PWM_DOOR_OPEN); + pwm_set_timed (clamp_slot_door[bay + 0], BOT_PWM_DOOR_OPEN (bay + 0)); + pwm_set_timed (clamp_slot_door[bay + 2], BOT_PWM_DOOR_OPEN (bay + 2)); return FSM_NEXT (CLAMP_LOCKED, clamp_drop); } @@ -673,7 +673,8 @@ FSM_TRANS_TIMEOUT (CLAMP_MOVE_SRC_CLAMP_CLOSING, BOT_PWM_CLAMP_CLOSE_TIME, { if (clamp_slot_door[ctx.pos_current] != 0xff) { - pwm_set_timed (clamp_slot_door[ctx.pos_current], BOT_PWM_DOOR_OPEN); + pwm_set_timed (clamp_slot_door[ctx.pos_current], + BOT_PWM_DOOR_OPEN (ctx.pos_current)); return FSM_NEXT_TIMEOUT (CLAMP_MOVE_SRC_CLAMP_CLOSING, open_door); } else diff --git a/digital/io-hub/src/robospierre/main.c b/digital/io-hub/src/robospierre/main.c index 7c773761..f6ef1013 100644 --- a/digital/io-hub/src/robospierre/main.c +++ b/digital/io-hub/src/robospierre/main.c @@ -288,10 +288,14 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) break; case c ('d', 0): /* Open all doors. */ - pwm_set_timed (BOT_PWM_DOOR_FRONT_BOTTOM, BOT_PWM_DOOR_OPEN); - pwm_set_timed (BOT_PWM_DOOR_FRONT_TOP, BOT_PWM_DOOR_OPEN); - pwm_set_timed (BOT_PWM_DOOR_BACK_BOTTOM, BOT_PWM_DOOR_OPEN); - pwm_set_timed (BOT_PWM_DOOR_BACK_TOP, BOT_PWM_DOOR_OPEN); + pwm_set_timed (BOT_PWM_DOOR_FRONT_BOTTOM, + BOT_PWM_DOOR_OPEN (CLAMP_SLOT_FRONT_BOTTOM)); + pwm_set_timed (BOT_PWM_DOOR_FRONT_TOP, + BOT_PWM_DOOR_OPEN (CLAMP_SLOT_FRONT_TOP)); + pwm_set_timed (BOT_PWM_DOOR_BACK_BOTTOM, + BOT_PWM_DOOR_OPEN (CLAMP_SLOT_BACK_BOTTOM)); + pwm_set_timed (BOT_PWM_DOOR_BACK_TOP, + BOT_PWM_DOOR_OPEN (CLAMP_SLOT_BACK_TOP)); break; case c ('d', 1): /* Drop elements. -- cgit v1.2.3