vt100: include pgmspace.h as we use PROGMEM macro
[aversive.git] / projects / microb2010 / cobboard / shovel.c
index 56efa96..e06638d 100644 (file)
@@ -1,6 +1,6 @@
-/*  
+/*
  *  Copyright Droids Corporation (2010)
- * 
+ *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2 of the License, or
@@ -45,7 +45,9 @@
 
 #define SHOVEL_DOWN 100
 #define SHOVEL_MID  4500
-#define SHOVEL_UP   11000
+#define SHOVEL_UP   11300
+#define SHOVEL_KICKSTAND_UP   13400
+#define SHOVEL_KICKSTAND_DOWN 10400
 
 static int32_t shovel_k1 = 1000;
 static int32_t shovel_k2 = 20;
@@ -120,6 +122,7 @@ void shovel_set(void *mot, int32_t cmd)
 
 void shovel_down(void)
 {
+       shovel_current_limit_enable(0);
        quadramp_set_1st_order_vars(&cobboard.shovel.qr, 2500, 2500);
        quadramp_set_2nd_order_vars(&cobboard.shovel.qr, 50, 80);
        cs_set_consign(&cobboard.shovel.cs, SHOVEL_DOWN);
@@ -127,6 +130,7 @@ void shovel_down(void)
 
 void shovel_mid(void)
 {
+       shovel_current_limit_enable(0);
        quadramp_set_1st_order_vars(&cobboard.shovel.qr, 2500, 2500);
        quadramp_set_2nd_order_vars(&cobboard.shovel.qr, 80, 80);
        cs_set_consign(&cobboard.shovel.cs, SHOVEL_MID);
@@ -134,14 +138,33 @@ void shovel_mid(void)
 
 void shovel_up(void)
 {
+       shovel_current_limit_enable(0);
        if (state_get_cob_count() <= 1)
-               quadramp_set_1st_order_vars(&cobboard.shovel.qr, 1000, 2500);
+               quadramp_set_1st_order_vars(&cobboard.shovel.qr, 700, 2500);
        else
-               quadramp_set_1st_order_vars(&cobboard.shovel.qr, 2000, 2500);
+               quadramp_set_1st_order_vars(&cobboard.shovel.qr, 1000, 2500);
        quadramp_set_2nd_order_vars(&cobboard.shovel.qr, 80, 15);
        cs_set_consign(&cobboard.shovel.cs, SHOVEL_UP);
 }
 
+void shovel_kickstand_up(void)
+{
+       shovel_set_current_limit_coefs(1000, 20);
+       shovel_current_limit_enable(1);
+       quadramp_set_1st_order_vars(&cobboard.shovel.qr, 200, 200);
+       quadramp_set_2nd_order_vars(&cobboard.shovel.qr, 10, 10);
+       cs_set_consign(&cobboard.shovel.cs, SHOVEL_KICKSTAND_UP);
+}
+
+void shovel_kickstand_down(void)
+{
+       shovel_set_current_limit_coefs(500, 0);
+       shovel_current_limit_enable(1);
+       quadramp_set_1st_order_vars(&cobboard.shovel.qr, 200, 200);
+       quadramp_set_2nd_order_vars(&cobboard.shovel.qr, 10, 10);
+       cs_set_consign(&cobboard.shovel.cs, SHOVEL_KICKSTAND_DOWN);
+}
+
 uint8_t shovel_is_up(void)
 {
        return shovel_is_at_pos(SHOVEL_UP);
@@ -152,6 +175,11 @@ uint8_t shovel_is_down(void)
        return shovel_is_at_pos(SHOVEL_DOWN);
 }
 
+uint8_t shovel_is_mid(void)
+{
+       return shovel_is_at_pos(SHOVEL_MID);
+}
+
 void shovel_init(void)
 {
        shovel_autopos();