]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
eb_lift_11: repair same bugs
authorpokormat <matous.pokorny@me.com>
Mon, 2 May 2011 21:29:39 +0000 (23:29 +0200)
committerpokormat <matous.pokorny@me.com>
Mon, 2 May 2011 21:29:39 +0000 (23:29 +0200)
src/eb_lift_11/fsm_lift.c
src/eb_lift_11/main.c

index 0a7c864fd56e30d4678c51aea84918af240d04c3..bf606e3402ea8d496a93ddd8c8189d9b92a9b127 100644 (file)
@@ -18,6 +18,7 @@
 static void wait_for_cmd(struct fsm *fsm, enum event event);
 static void move(struct fsm *fsm, enum event event);
 static void homing(struct fsm *fsm, enum event event);
+static void stop(void);
 
 
 static void homing(struct fsm *fsm, enum event event)
@@ -30,12 +31,12 @@ static void homing(struct fsm *fsm, enum event event)
                 time_start=timer_msec;
                 break;
         case EVENT_DO:
-                //homing with 3s timeout
+                //homing with 8s timeout
                 engine_A_dir(ENGINE_DIR_FW);
-                engine_A_pwm(50);
+                engine_A_pwm(20);
                 
                 if(fsm->flags & CAN_LIFT_SWITCH_DOWN){
-                  engine_A_pwm(0);
+                  stop();
                   fsm->act_pos=0;
                   fsm->current_state = wait_for_cmd;  
                   fsm->flags |= CAN_LIFT_HOMED;
@@ -43,8 +44,8 @@ static void homing(struct fsm *fsm, enum event event)
                   fsm->can_req_homing=0;
 //                   fsm->can_req_position = 0x54E2;
                 }
-                else if (timer_msec >= (time_start + 3000)) {
-                  engine_A_pwm(0);
+                else if (timer_msec >= (time_start + 8000)) {
+                  stop();
                   fsm->current_state = wait_for_cmd;
                   fsm->flags |= CAN_LIFT_TIMEOUT;
                   fsm->flags &= ~CAN_LIFT_HOMED;
@@ -66,6 +67,7 @@ void fsm_lift_init(struct fsm *fsm, enum event event)
                break;
        case EVENT_DO:
                fsm->flags &= ~CAN_LIFT_INITIALIZING;
+                fsm->current_state = wait_for_cmd;
                break;
        case EVENT_EXIT:
                break;
@@ -120,10 +122,12 @@ static void wait_for_cmd(struct fsm *fsm, enum event event)
                 //homing if push home button 
                 if (fsm->flags & CAN_LIFT_SWITCH_HOME){
                   fsm->current_state=homing;
+                  break;
                 }
                 //homing if match start, but did not homing before start
                 if ((fsm->can_req_homing) && !(fsm->flags & CAN_LIFT_HOMED)){
                   fsm->current_state=homing;
+                  break;
                 }
                do_control(fsm, 2);
                if (fsm->can_req_position != last_can_req_pos &&
index d3da1c2cff10a23933d0bd3b1ee525a83f2c00db..cb6d2235d857a27db5c8f77751bbc5daf3e50949 100644 (file)
@@ -343,22 +343,12 @@ void blink_led()
 //                 up = (up+1)%12;
                
                deb_led_change(LEDG);
-                
-                if ((IO0PIN & (1<<END_SWITCH_UP)) || (IO0PIN & (1<<END_SWITCH_DOWN)))
-                        deb_led_on(LEDR);
-                else
-                        deb_led_off(LEDR);
-                
-           
-//                 send_rs_str("UP\t");
-//             send_rs_int(IO0PIN & (1<<END_SWITCH_UP));
-//             send_rs_str("\n");
-//                 send_rs_str("DOWN\t");
-//             send_rs_int(IO0PIN & (1<<END_SWITCH_DOWN));
-//             send_rs_str("\n");
-                
+                                
                 send_rs_str("ACT_POS\t");
                 send_rs_int(fsm_lift.act_pos);
+                send_rs_str("\t");
+                send_rs_str("CAN_FLAGS\t");
+                send_rs_int(fsm_lift.flags);
                 send_rs_str("\n");
        }
 }
@@ -455,6 +445,7 @@ int main(void)
                start_button();
                color_hadler();
 
+                lift_switches_hadler();
                blink_led();
        }
 }