#include "MotorCtrl.h" #include "hwCtrl.h" #include "PINdef.h" #include "appTask.h" static uint8_t amCtrl_state = 0,am_state_machine = 0; static uint16_t am_state_machine_counter = 0; static void amCtrl_Act1(void); static void amCtrl_Act2(void); static void amCtrl_Act3(void); void amCtrl_Init(void) { amCtrl_state = 0; am_state_machine_counter = 0; } void amCtrl_SetState(uint8_t state) { amCtrl_state = state; am_state_machine = 0; am_state_machine_counter = 0; } void amCtrl_Task(void)//50ms { if (amCtrl_state == 0) { setPumpState(PUMP_OFF); setValveState(VALVE3,VALVE_OFF); setValveState(VALVE4,VALVE_OFF); setValveState(VALVE5,VALVE_OFF); am_state_machine = 0; am_state_machine_counter = 0; } else { setPumpState(PUMP_ON); switch (amCtrl_state) { case 1: amCtrl_Act1(); break; case 2: amCtrl_Act2(); break; case 3: amCtrl_Act3(); break; default: break; } } } static void amCtrl_Act1(void) { switch (am_state_machine) { case 0: setValveState(VALVE3,VALVE_ON); setValveState(VALVE4,VALVE_OFF); setValveState(VALVE5,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= 80) { am_state_machine_counter = 0; am_state_machine = 1; } break; case 1: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE4,VALVE_ON); setValveState(VALVE5,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= 80) { am_state_machine_counter = 0; am_state_machine = 2; } break; case 2: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE4,VALVE_OFF); setValveState(VALVE5,VALVE_ON); am_state_machine_counter++; if (am_state_machine_counter >= 90) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: break; } } static void amCtrl_Act2(void) { switch (am_state_machine) { case 0: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE4,VALVE_OFF); setValveState(VALVE5,VALVE_ON); am_state_machine_counter++; if (am_state_machine_counter >= 90) { am_state_machine_counter = 0; am_state_machine = 1; } break; case 1: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE4,VALVE_ON); setValveState(VALVE5,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= 80) { am_state_machine_counter = 0; am_state_machine = 2; } break; case 2: setValveState(VALVE3,VALVE_ON); setValveState(VALVE4,VALVE_OFF); setValveState(VALVE5,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= 80) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: break; } } static void amCtrl_Act3(void) { switch (am_state_machine) { case 0: setValveState(VALVE3,VALVE_ON); setValveState(VALVE4,VALVE_ON); setValveState(VALVE5,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= 80) { am_state_machine_counter = 0; am_state_machine = 1; } break; case 1: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE4,VALVE_ON); setValveState(VALVE5,VALVE_ON); am_state_machine_counter++; if (am_state_machine_counter >= 80) { am_state_machine_counter = 0; am_state_machine = 2; } break; case 2: setValveState(VALVE3,VALVE_ON); setValveState(VALVE4,VALVE_OFF); setValveState(VALVE5,VALVE_ON); am_state_machine_counter++; if (am_state_machine_counter >= 80) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: break; } }