#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); static uint16_t amCtrl_counter; 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 { static uint8_t PumpDutyCounter; if (amCtrl_state == 0) { setPumpState(PUMP_OFF); setValveState(VALVE3,VALVE_OFF); setValveState(VALVE2,VALVE_OFF); setValveState(VALVE1,VALVE_OFF); am_state_machine = 0; am_state_machine_counter = 0; amCtrl_counter = 0; } else { switch (amCtrl_state) { case 1: PumpDutyCounter++; if (PumpDutyCounter >= 10) { PumpDutyCounter = 0; setPumpState(PUMP_ON); amCtrl_Act1(); } break; case 2: PumpDutyCounter++; if (PumpDutyCounter >= 10) { PumpDutyCounter = 0; setPumpState(PUMP_ON); amCtrl_Act2(); } break; case 3: PumpDutyCounter++; if (PumpDutyCounter == 9) { setPumpState(PUMP_OFF); } else { setPumpState(PUMP_ON); } if (PumpDutyCounter >= 10) { PumpDutyCounter = 0; amCtrl_Act3(); } break; default: break; } /* //20240622取消定时15分钟 amCtrl_counter++; if (amCtrl_counter > 18000) { amCtrl_state = 0; } */ } } #if CONFIG == HIGH_CONFIG //tbd #else #define CHONGQI_TIME_6S 120 #define CHONGQI_TIME_6S5 130 #define CHONGQI_TIME_7S 140 #define CHONGQI_TIME_8S 160 #define CHONGQI_TIME_9S 180 static void amCtrl_Act1(void)//50ms { switch (am_state_machine) { case 0: setValveState(VALVE1,VALVE_ON); setValveState(VALVE2,VALVE_OFF); setValveState(VALVE3,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_8S) { am_state_machine_counter = 0; am_state_machine = 1; } break; case 1: setValveState(VALVE1,VALVE_OFF); setValveState(VALVE2,VALVE_ON); setValveState(VALVE3,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_8S) { am_state_machine_counter = 0; am_state_machine = 2; } break; case 2: setValveState(VALVE1,VALVE_OFF); setValveState(VALVE2,VALVE_OFF); setValveState(VALVE3,VALVE_ON); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_8S) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: am_state_machine = 0; break; } } static void amCtrl_Act2(void) { switch (am_state_machine) { case 0: setValveState(VALVE3,VALVE_ON); setValveState(VALVE2,VALVE_OFF); setValveState(VALVE1,VALVE_ON); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_9S) { am_state_machine_counter = 0; am_state_machine = 1; } break; case 1: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE2,VALVE_ON); setValveState(VALVE1,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_8S) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: am_state_machine = 0; break; } } static void amCtrl_Act3(void) { switch (am_state_machine) { case 0: setValveState(VALVE3,VALVE_ON); setValveState(VALVE2,VALVE_OFF); setValveState(VALVE1,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_8S) { am_state_machine_counter = 0; am_state_machine = 1; } break; case 1: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE2,VALVE_ON); setValveState(VALVE1,VALVE_OFF); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_8S) { am_state_machine_counter = 0; am_state_machine = 2; } break; case 2: setValveState(VALVE3,VALVE_OFF); setValveState(VALVE2,VALVE_OFF); setValveState(VALVE1,VALVE_ON); am_state_machine_counter++; if (am_state_machine_counter >= CHONGQI_TIME_8S) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: break; } } #endif