M20/APP/user/MotorCtrl.c

189 lines
4.3 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;
static void amCtrl_Act1(void);
static void amCtrl_Act2(void);
static void amCtrl_Act3(void);
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;
am_state_machine = 0;
am_state_machine_counter = 0;
2024-05-19 20:26:03 +08:00
}
void amCtrl_Task(void)//50ms
{
if (amCtrl_state == 0)
{
setPumpState(PUMP_OFF);
2024-05-19 21:15:43 +08:00
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
2024-05-19 20:26:03 +08:00
am_state_machine = 0;
am_state_machine_counter = 0;
}
else
{
setPumpState(PUMP_ON);
switch (amCtrl_state)
2024-05-19 20:26:03 +08:00
{
case 1:
amCtrl_Act1();
2024-05-19 20:26:03 +08:00
break;
case 2:
amCtrl_Act2();
break;
case 3:
amCtrl_Act3();
break;
2024-05-19 20:26:03 +08:00
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;
2024-05-19 20:26:03 +08:00
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;
2024-05-19 20:26:03 +08:00
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;
}
2024-05-19 20:26:03 +08:00
}