]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
eb_lift opravene zajizdeni na nulovou pozici. Asci by t ochtelo nejak v budoucnu...
authorJiri Kubias <jiri.kubias@gmail.com>
Sat, 25 Apr 2009 01:29:14 +0000 (03:29 +0200)
committerJiri Kubias <jiri.kubias@gmail.com>
Sat, 25 Apr 2009 01:29:14 +0000 (03:29 +0200)
src/eb_lift_09/def.h
src/eb_lift_09/lift.c

index 2984dd389d079c48e3d809c563a876f464e281a0..e33d48aa219d62708e693d9dd3c26c944f1fa38a 100644 (file)
@@ -77,6 +77,7 @@
                uint8_t init_flag;                      // init status flag
                uint32_t p;                             ///< PI controller constants * 1000
                uint32_t last_move_time;                ///< Last timer_msec when act_pos changed
+               bool enable_reg;                        ///< enable regulator
        };
 
        extern volatile uint32_t timer_msec;
index 30b343aef996dd16fb06868d72ab57cfb7fc8e7b..b0d533bcf75e0e2280704691dcab22a46bbea935 100644 (file)
@@ -402,6 +402,7 @@ void fsm_move(struct fsm *fsm, events my_event){
                  }
                  
                  fsm->last_move_time = timer_msec;
+                 fsm->enable_reg = 1;          // enable re
                break;
                
                case EVENT_DO:
@@ -417,7 +418,8 @@ void fsm_move(struct fsm *fsm, events my_event){
                        fsm->current_state = &fsm_wait; // move to fsm_homing_bw
                        fsm->ans_can = fsm->req_pos;
                        can_send_status();
-                       PRINT_STR_VAL(fsm->type, "fsm_move: reached endswitch", fsm->req_pos);
+                       PRINT_STR_VAL(fsm->type, "fsm_move: reached endswitch", fsm->req_pos); 
+                       // TODO FIXME TODO FIXME TODO FIXME nastavit act_pos =0?????
                        break;
                  }     
 
@@ -432,13 +434,14 @@ void fsm_move(struct fsm *fsm, events my_event){
                  {
                    if(e <= 0 || timer_msec - fsm->last_move_time > 200)
                    {
-                     fsm->set_engine(fsm->motor_dir, 30 /*fsm->speed_normal*/);
+                     fsm->set_engine(fsm->motor_dir, 35 /*fsm->speed_normal*/);
+                     fsm->enable_reg = 0;
                      return;
                    }
                  }
                  
                  
-                 if (e > 0) {
+                 if (e > 0 && fsm->enable_reg ) {
                          /* Go there (P controller)*/
                          u = e*fsm->p/1000;
                          if (u>100) u = 100;