From 9dfc885e5e8cfb8634099f852e0dae9adf1c2056 Mon Sep 17 00:00:00 2001 From: pokormat Date: Fri, 22 Apr 2011 23:54:02 +0200 Subject: [PATCH] eb_lift_11: add irc and end switches, homing --- src/eb_lift_11/fsm.h | 3 +++ src/eb_lift_11/fsm_lift.c | 18 ++++++++++---- src/eb_lift_11/main.c | 52 +++++++++++++++++++++++++++++++++------ 3 files changed, 61 insertions(+), 12 deletions(-) diff --git a/src/eb_lift_11/fsm.h b/src/eb_lift_11/fsm.h index 56e59de0..4dc921f9 100644 --- a/src/eb_lift_11/fsm.h +++ b/src/eb_lift_11/fsm.h @@ -31,6 +31,9 @@ struct fsm { bool trigger_can_send; }; +#define END_SWITCH_UP 9 //pin 4, exp. port on board, nc contact (rozpinaci) +#define END_SWITCH_DOWN 8 //pin 3, exp. port on board, nc contact (rozpinaci) + void init_fsm(struct fsm *fsm, state_fcn initial_state); void run_fsm(struct fsm *fsm); diff --git a/src/eb_lift_11/fsm_lift.c b/src/eb_lift_11/fsm_lift.c index cc20998a..afcc91ab 100644 --- a/src/eb_lift_11/fsm_lift.c +++ b/src/eb_lift_11/fsm_lift.c @@ -28,7 +28,12 @@ void fsm_lift_init(struct fsm *fsm, enum event event) fsm->flags |= CAN_LIFT_INITIALIZING; break; case EVENT_DO: - /* TODO: Homing */ + //homing, TODO add timeout + while(IO0PIN & (1<act_pos=0; fsm->flags &= ~CAN_LIFT_INITIALIZING; fsm->current_state = wait_for_cmd; break; @@ -58,10 +63,13 @@ static bool do_control(struct fsm *fsm, int P) action = action > 40 ? 100 : 0; #else action = action > 0 ? action : -action; -#endif - engine_A_pwm(action); - engine_A_en(ENGINE_EN_ON); - +#endif + if((IO0PIN & (1<req_target > fsm->start_pos) finished = fsm->act_pos > fsm->req_target - DEAD_ZONE; diff --git a/src/eb_lift_11/main.c b/src/eb_lift_11/main.c index e565fd62..afd130d7 100644 --- a/src/eb_lift_11/main.c +++ b/src/eb_lift_11/main.c @@ -43,13 +43,49 @@ struct fsm fsm_lift; +static int last_irc; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#define IRC_A 2 //pin 1, exp. port on board +#define IRC_B 3 //pin 2, exp. port on board +#define IRC_A_MASK (1<