fix race on state machines
[aversive.git] / projects / microb2010 / cobboard / cs.c
index a718970..7eb186e 100644 (file)
@@ -78,9 +78,9 @@ static void do_cs(__attribute__((unused)) void *dummy)
                ls = (cobboard.left_spickle.prev - cobboard.left_spickle.cs.filtered_feedback_value);
                rs = (cobboard.right_spickle.prev - cobboard.right_spickle.cs.filtered_feedback_value);
                sh = (cobboard.shovel.prev - cobboard.shovel.cs.filtered_feedback_value);
-               if (ls < -2000 || ls > 2000 ||
-                   rs < -2000 || rs > 2000 ||
-                   sh < -2000 || sh > 2000) {
+               if (ls < -3000 || ls > 3000 ||
+                   rs < -3000 || rs > 3000 ||
+                   sh < -3000 || sh > 3000) {
                        printf_P(PSTR("left_spickle %ld "), ls);
                        printf_P(PSTR("right_spickle %ld "), rs);
                        printf_P(PSTR("shovel %ld "), sh);
@@ -102,8 +102,8 @@ static void do_cs(__attribute__((unused)) void *dummy)
 
                /* urgent case: stop power on blocking */
                if (cobboard.flags & DO_ERRBLOCKING) {
-                       if (bd_get(&cobboard.left_spickle.bd) ||
-                           bd_get(&cobboard.right_spickle.bd) ||
+                       if (/* bd_get(&cobboard.left_spickle.bd) || */
+                           /* bd_get(&cobboard.right_spickle.bd) || */
                            bd_get(&cobboard.shovel.bd)) {
                                printf_P(PSTR("MOTOR BLOCKED STOP ALL\r\n"));
                                cobboard.flags &= ~(DO_POWER | DO_ERRBLOCKING);
@@ -149,8 +149,8 @@ void microb_cs_init(void)
        /* ---- CS left_spickle */
        /* PID */
        pid_init(&cobboard.left_spickle.pid);
-       pid_set_gains(&cobboard.left_spickle.pid, 300, 10, 1500);
-       pid_set_maximums(&cobboard.left_spickle.pid, 0, 10000, 2400); /* max is 12 V */
+       pid_set_gains(&cobboard.left_spickle.pid, 400, 10, 1500);
+       pid_set_maximums(&cobboard.left_spickle.pid, 0, 25000, 4095);
        pid_set_out_shift(&cobboard.left_spickle.pid, 10);
        pid_set_derivate_filter(&cobboard.left_spickle.pid, 4);
 
@@ -169,8 +169,8 @@ void microb_cs_init(void)
        /* ---- CS right_spickle */
        /* PID */
        pid_init(&cobboard.right_spickle.pid);
-       pid_set_gains(&cobboard.right_spickle.pid, 300, 10, 1500);
-       pid_set_maximums(&cobboard.right_spickle.pid, 0, 10000, 2400); /* max is 12 V */
+       pid_set_gains(&cobboard.right_spickle.pid, 400, 10, 1500);
+       pid_set_maximums(&cobboard.right_spickle.pid, 0, 25000, 4095);
        pid_set_out_shift(&cobboard.right_spickle.pid, 10);
        pid_set_derivate_filter(&cobboard.right_spickle.pid, 4);
 
@@ -196,7 +196,7 @@ void microb_cs_init(void)
 
        /* quadramp */
        quadramp_init(&cobboard.shovel.qr);
-       quadramp_set_1st_order_vars(&cobboard.shovel.qr, 2000, 2000); /* set speed */
+       quadramp_set_1st_order_vars(&cobboard.shovel.qr, 2500, 2500); /* set speed */
        quadramp_set_2nd_order_vars(&cobboard.shovel.qr, 50, 20); /* set accel */
 
        /* CS */