M20/APP/user/MotorCtrl.c

82 lines
2.0 KiB
C
Raw Normal View History

2024-05-19 17:07:18 +08:00
#include "MotorCtrl.h"
#include "hwCtrl.h"
#include "PINdef.h"
#include "appTask.h"
2024-05-19 20:26:03 +08:00
static uint8_t amCtrl_state = 0,am_state_machine = 0;
static uint16_t am_state_machine_counter = 0;
const uint8_t am_state_machine_arr[3][3] = {
//0,1,2
{1,2,0},
{2,0,1},
{1,2,0},
};
2024-05-19 17:07:18 +08:00
2024-05-19 20:26:03 +08:00
void amCtrl_Init(void)
{
amCtrl_state = 0;
am_state_machine_counter = 0;
}
void amCtrl_SetState(uint8_t state)
{
amCtrl_state = state;
}
void amCtrl_Task(void)//50ms
{
if (amCtrl_state == 0)
{
setPumpState(PUMP_OFF);
am_state_machine = 0;
am_state_machine_counter = 0;
}
else
{
setPumpState(PUMP_ON);
switch (am_state_machine)
{
case 0:
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 20)
{
am_state_machine_counter = 0;
am_state_machine = am_state_machine_arr[amCtrl_state][am_state_machine];
}
break;
case 1:
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_ON);
setValveState(VALVE6,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 20)
{
am_state_machine_counter = 0;
am_state_machine = am_state_machine_arr[amCtrl_state][am_state_machine];
}
break;
case 2:
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 20)
{
am_state_machine_counter = 0;
am_state_machine = am_state_machine_arr[amCtrl_state][am_state_machine];
}
default:
break;
}
}
}