summaryrefslogtreecommitdiffhomepage
path: root/digital/io-hub
diff options
context:
space:
mode:
authorNicolas Schodet2011-05-29 09:51:30 +0200
committerNicolas Schodet2011-05-29 09:57:32 +0200
commit21deab476ce421f04d367959110afbd85656bdde (patch)
treed3812e1da8269dc676a01ccc1ae6781ed649553c /digital/io-hub
parent4042e67d5aed51502538b96c959d88fd3cc1779a (diff)
digital/io-hub: softer clamp & door control
Diffstat (limited to 'digital/io-hub')
-rw-r--r--digital/io-hub/src/robospierre/bot.h28
-rw-r--r--digital/io-hub/src/robospierre/clamp.c13
-rw-r--r--digital/io-hub/src/robospierre/main.c12
3 files changed, 31 insertions, 22 deletions
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.