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;
}
fsm->last_move_time = timer_msec;
+ fsm->enable_reg = 1; // enable re
break;
case EVENT_DO:
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;
}
{
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;