初版代码
This commit is contained in:
parent
86991acfd8
commit
9fa365cee6
File diff suppressed because one or more lines are too long
@ -10,7 +10,8 @@
|
||||
uint8_t MotorState[6],MotorStateReal[6];
|
||||
uint16_t current1;
|
||||
uint8_t OC1flag;
|
||||
uint8_t act_step;
|
||||
uint16_t OC_Count1=0;
|
||||
uint8_t act_step[6];
|
||||
|
||||
void MotorValueInit(void)
|
||||
{
|
||||
@ -28,7 +29,7 @@ void setMotorState(uint8_t motorid,uint8_t act)
|
||||
if (act <= ACT_XH && motorid < 6)
|
||||
{
|
||||
MotorState[motorid] = act;
|
||||
act_step = 0;
|
||||
act_step[motorid] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,20 +60,21 @@ void MotorCtrl(void)//10ms
|
||||
OC1flag = 0;
|
||||
break;
|
||||
case ACT_XQ://先1再2
|
||||
switch (act_step)
|
||||
switch (act_step[0])
|
||||
{
|
||||
case 0:
|
||||
MotorStateReal[MOTOR1] = ACT_XQ;
|
||||
MotorStateReal[MOTOR2] = ACT_NOACT;
|
||||
act_step = 1;
|
||||
act_step[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (OC1flag == 1)
|
||||
{
|
||||
OC1flag = 0;
|
||||
OC_Count1 = 0;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
MotorStateReal[MOTOR2] = ACT_XQ;
|
||||
act_step = 2;
|
||||
act_step[0] = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -80,9 +82,10 @@ void MotorCtrl(void)//10ms
|
||||
if (OC1flag == 1)
|
||||
{
|
||||
OC1flag = 0;
|
||||
OC_Count1 = 0;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
MotorStateReal[MOTOR2] = ACT_NOACT;
|
||||
act_step = 3;
|
||||
act_step[0] = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -95,20 +98,21 @@ void MotorCtrl(void)//10ms
|
||||
break;
|
||||
|
||||
case ACT_XH://先2再1
|
||||
switch (act_step)
|
||||
switch (act_step[0])
|
||||
{
|
||||
case 0:
|
||||
MotorStateReal[MOTOR2] = ACT_XH;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
act_step = 1;
|
||||
act_step[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (OC1flag == 1)
|
||||
{
|
||||
OC1flag = 0;
|
||||
OC_Count1 = 0;
|
||||
MotorStateReal[MOTOR2] = ACT_NOACT;
|
||||
MotorStateReal[MOTOR1] = ACT_XH;
|
||||
act_step = 2;
|
||||
act_step[0] = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -116,9 +120,10 @@ void MotorCtrl(void)//10ms
|
||||
if (OC1flag == 1)
|
||||
{
|
||||
OC1flag = 0;
|
||||
OC_Count1 = 0;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
MotorStateReal[MOTOR2] = ACT_NOACT;
|
||||
act_step = 3;
|
||||
act_step[0] = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -134,6 +139,74 @@ void MotorCtrl(void)//10ms
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (MotorState[1])
|
||||
{
|
||||
case ACT_NOACT:
|
||||
/* code */
|
||||
break;
|
||||
case ACT_XQ:
|
||||
switch (act_step[1])
|
||||
{
|
||||
case 0:
|
||||
MotorStateReal[MOTOR1] = ACT_XH;
|
||||
MotorStateReal[MOTOR2] = ACT_NOACT;
|
||||
act_step[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (OC1flag == 1)
|
||||
{
|
||||
OC1flag = 0;
|
||||
OC_Count1 = 0;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
MotorStateReal[MOTOR2] = ACT_XQ;
|
||||
act_step[1] = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (OC1flag == 1)
|
||||
{
|
||||
OC1flag = 0;
|
||||
OC_Count1 = 0;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
MotorStateReal[MOTOR2] = ACT_NOACT;
|
||||
act_step[1] = 3;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ACT_XH:
|
||||
switch (act_step[1])
|
||||
{
|
||||
case 0:
|
||||
MotorStateReal[MOTOR2] = ACT_XH;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
act_step[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (OC1flag == 1)
|
||||
{
|
||||
OC1flag = 0;
|
||||
OC_Count1 = 0;
|
||||
MotorStateReal[MOTOR2] = ACT_NOACT;
|
||||
MotorStateReal[MOTOR1] = ACT_NOACT;
|
||||
act_step[1] = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
MOTOR1Ctrl(MotorStateReal[MOTOR1]);
|
||||
MOTOR2Ctrl(MotorStateReal[MOTOR2]);
|
||||
@ -144,7 +217,7 @@ uint16_t getOC_th(void)
|
||||
{
|
||||
if (MotorStateReal[MOTOR1] != ACT_NOACT)
|
||||
{
|
||||
return 100U;
|
||||
return 60U;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -157,7 +230,7 @@ uint16_t getOC_th(void)
|
||||
void CurrentDetecte(void)
|
||||
{
|
||||
|
||||
static uint16_t OC_Count1=0;
|
||||
|
||||
uint16_t OC_th;
|
||||
current1 = getAdval(ADCH_RLY1);
|
||||
OC_th = getOC_th();
|
||||
|
@ -64,20 +64,21 @@ void keyLogicRelease(uint8_t keyno)
|
||||
}
|
||||
|
||||
}
|
||||
#define KEY_DELAY_TIME 40
|
||||
#define KEY_DELAY_TIME 60
|
||||
|
||||
void keyScan(void)//5ms
|
||||
{
|
||||
static uint16_t keydelay[9]={0,0,0,0,0,0,0,0,0};
|
||||
static uint8_t keyflag[9]={0,0,0,0,0,0,0,0,0};
|
||||
static uint8_t keep_count[9]={0,0,0,0,0,0,0,0,0};
|
||||
static uint8_t KeyShort2Counter1,KeyShort2Counter2;
|
||||
uint8_t keyval,i;
|
||||
|
||||
keyval = GetIOState(SIGID_KEY1);
|
||||
if (keyval == 1 && keyflag[KEY1] == 0)
|
||||
{
|
||||
keydelay[KEY1]++;
|
||||
if (keydelay[KEY1] > KEY_DELAY_TIME)//30ms
|
||||
if (keydelay[KEY1] > KEY_DELAY_TIME)//300ms
|
||||
{
|
||||
keyflag[KEY1] = 1;
|
||||
keydelay[KEY1] = KEY_DELAY_TIME;
|
||||
@ -90,6 +91,18 @@ void keyScan(void)//5ms
|
||||
{
|
||||
keyLogicRelease(KEY1);
|
||||
}
|
||||
if (keydelay[KEY1] > 0 && keydelay[KEY1] < KEY_DELAY_TIME)
|
||||
{
|
||||
if (KeyShort2Counter1 == 0)//第一次按下
|
||||
{
|
||||
KeyShort2Counter1 = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
setMotorState(1,ACT_XQ);
|
||||
}
|
||||
}
|
||||
|
||||
keyflag[KEY1] = 0;
|
||||
keydelay[KEY1] = 0;
|
||||
}
|
||||
@ -112,9 +125,30 @@ void keyScan(void)//5ms
|
||||
{
|
||||
keyLogicRelease(KEY2);
|
||||
}
|
||||
if (keydelay[KEY2] > 0 && keydelay[KEY2] < KEY_DELAY_TIME)
|
||||
{
|
||||
if (KeyShort2Counter2 == 0)//第一次按下
|
||||
{
|
||||
KeyShort2Counter2 = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
setMotorState(1,ACT_XH);
|
||||
}
|
||||
}
|
||||
keyflag[KEY2] = 0;
|
||||
keydelay[KEY2] = 0;
|
||||
}
|
||||
|
||||
if (KeyShort2Counter1 > 0)
|
||||
{
|
||||
KeyShort2Counter1--;
|
||||
}
|
||||
if (KeyShort2Counter2 > 0)
|
||||
{
|
||||
KeyShort2Counter2--;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user