]> rtime.felk.cvut.cz Git - fpga/rpi-motor-control.git/blobdiff - pmsm-control/test_sw/cmd_proc.c
Regulation function now implemented with use of polymorphism.
[fpga/rpi-motor-control.git] / pmsm-control / test_sw / cmd_proc.c
index 6846df594e5a57eb4ed02931d4565dcb72e8b2cb..66e9be804b321c4540db865cc353f8072d094e57 100644 (file)
@@ -62,8 +62,7 @@ static void start(struct rpi_state* state){
 static void stop(struct rpi_state* state){
        sem_wait(&state->thd_par_sem);
        setCommutationOff(state);
-       state->pos_reg_ena=0;
-       state->spd_reg_ena=0;
+       setRegulationOff(state);
        state->duty=0;
        state->pwm1=0;
        state->pwm2=0;
@@ -80,8 +79,7 @@ static void dutySet(struct rpi_state* state, int duty){
        if (duty>MAX_DUTY) duty=MAX_DUTY;
        if (duty<-MAX_DUTY) duty=-MAX_DUTY;/*paranoia*/
        state->duty=duty;
-       state->pos_reg_ena=0;
-       state->spd_reg_ena=0;
+       setRegulationOff(state);
        setCommutationOn(state);
        sem_post(&state->thd_par_sem);
 }
@@ -92,8 +90,7 @@ static void dutySet(struct rpi_state* state, int duty){
  */
 static void goAbsolute(struct rpi_state* state, int pos){
        sem_wait(&state->thd_par_sem);
-       state->spd_reg_ena=0;
-       state->pos_reg_ena=1;
+       setRegulationPos(state);
        setCommutationOn(state);
        state->desired_pos=pos;
        sem_post(&state->thd_par_sem);
@@ -124,8 +121,7 @@ static void setSpeed(struct rpi_state* state, int speed){
        if (speed>MAX_SPEED) speed=MAX_SPEED;
        if (speed<-MAX_SPEED) speed=-MAX_SPEED;/*paranoia*/
        sem_wait(&state->thd_par_sem);
-       state->pos_reg_ena=0;
-       state->spd_reg_ena=1;
+       setRegulationSpeed(state);
        setCommutationOn(state);
        state->desired_spd=speed;
        sem_post(&state->thd_par_sem);