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