111 lines
2.1 KiB
C
111 lines
2.1 KiB
C
|
|
#include "MotorCtrl.h"
|
|
|
|
#include "hwCtrl.h"
|
|
#include "PINdef.h"
|
|
#include "appTask.h"
|
|
//#include "pfdl.h"
|
|
|
|
|
|
uint8_t MotorState[6],MotorStateReal[6];
|
|
|
|
|
|
|
|
void MotorValueInit(void)
|
|
{
|
|
uint8_t i = 0;
|
|
for (i = 0; i < 6; i++)
|
|
{
|
|
MotorState[i] = ACT_NOACT;
|
|
MotorStateReal[i] = ACT_NOACT;
|
|
}
|
|
}
|
|
|
|
|
|
void setMotorState(uint8_t motorid,uint8_t act)
|
|
{
|
|
//motorid-=1;
|
|
if (act <= ACT_XH && motorid < 6)
|
|
{
|
|
MotorState[motorid] = act;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#define MOTOR_DELAY_TIME_8S (800)
|
|
#define MOTOR_DELAY_TIME_6S (600)
|
|
#define MOTOR_DELAY_TIME_15S (1500)
|
|
#define MOTOR_DELAY_TIME_17S (1700)
|
|
void MotorCtrl(void)//10ms
|
|
{
|
|
static uint16_t MotorRunCount;
|
|
switch (MotorState[0])
|
|
{
|
|
case ACT_NOACT:
|
|
MotorRunCount = 0;
|
|
MotorStateReal[MOTOR1] = ACT_NOACT;
|
|
MotorStateReal[MOTOR2] = ACT_NOACT;
|
|
break;
|
|
case ACT_XQ:
|
|
MotorRunCount++;
|
|
if (MotorRunCount > MOTOR_DELAY_TIME_15S)
|
|
{
|
|
MotorRunCount = MOTOR_DELAY_TIME_15S;
|
|
MotorStateReal[MOTOR1] = ACT_NOACT;
|
|
}
|
|
else
|
|
{
|
|
MotorStateReal[MOTOR1] = ACT_XQ;
|
|
}
|
|
|
|
if (MotorRunCount > MOTOR_DELAY_TIME_6S)
|
|
{
|
|
//MotorRunCount = MOTOR_DELAY_TIME_6S;
|
|
MotorStateReal[MOTOR2] = ACT_XQ;
|
|
}
|
|
else
|
|
{
|
|
MotorStateReal[MOTOR2] = ACT_NOACT;
|
|
|
|
}
|
|
break;
|
|
|
|
case ACT_XH:
|
|
MotorRunCount++;
|
|
if (MotorRunCount > MOTOR_DELAY_TIME_17S)
|
|
{
|
|
MotorRunCount = MOTOR_DELAY_TIME_17S;
|
|
MotorStateReal[MOTOR2] = ACT_NOACT;
|
|
}
|
|
else
|
|
{
|
|
MotorStateReal[MOTOR2] = ACT_XH;
|
|
}
|
|
|
|
if (MotorRunCount > MOTOR_DELAY_TIME_8S)
|
|
{
|
|
//MotorRunCount = MOTOR_DELAY_TIME_8S;
|
|
MotorStateReal[MOTOR1] = ACT_XH;
|
|
}
|
|
else
|
|
{
|
|
MotorStateReal[MOTOR1] = ACT_NOACT;
|
|
}
|
|
break;
|
|
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
MOTOR1Ctrl(MotorStateReal[MOTOR1]);
|
|
MOTOR2Ctrl(MotorStateReal[MOTOR2]);
|
|
}
|
|
|
|
|
|
|
|
|