This commit is contained in:
sunbeam 2024-06-04 07:31:17 +08:00
parent 718e09e192
commit 81cbf5d41b
4 changed files with 79 additions and 28 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,11 @@

#include "MotorCtrl.h" #include "MotorCtrl.h"
#include "hwCtrl.h" #include "hwCtrl.h"
#include "PINdef.h" #include "PINdef.h"
#include "appTask.h" #include "appTask.h"
#include "pfdl.h" #include "pfdl.h"
#include "buzzer.h"
uint8_t MotorState[6],MotorStateReal[6]; uint8_t MotorState[6],MotorStateReal[6];
@ -12,7 +13,7 @@ uint16_t MotorHallLoc[6],MotorHardStop1[6],MotorHardStop2[6];
uint8_t MotorLearnState[6]; uint8_t MotorLearnState[6];
uint8_t MotorErr[6]; uint8_t MotorErr[6];
uint16_t current1,current2,current3; uint16_t current1,current2,current3;
uint16_t MotorTarget[6] = {0};
static uint8_t AutoCalState; static uint8_t AutoCalState;
uint8_t EEL_SAVE_REQUIRE_FLAG; uint8_t EEL_SAVE_REQUIRE_FLAG;
@ -133,12 +134,21 @@ void MotorValueInit(void)
void setMotorState(uint8_t motorid,uint8_t act) void setMotorState(uint8_t motorid,uint8_t act)
{ {
//motorid-=1; //motorid-=1;
uint8_t i;
if (act <= ACT_XH && motorid < 6) if (act <= ACT_XH && motorid < 6)
{ {
MotorState[motorid] = act; MotorState[motorid] = act;
if (act!=ACT_NOACT)
{
for (i = 0; i < 4; i++)
{
MotorTarget[i] = 0;
}
}
} }
} }
uint16_t MotorTarget[6] = {0};
void setMotorTarget(uint8_t motorid,uint16_t target) void setMotorTarget(uint8_t motorid,uint16_t target)
{ {
@ -156,7 +166,15 @@ void setMotorTarget(uint8_t motorid,uint16_t target)
void StartAutoCal(void) void StartAutoCal(void)
{ {
AutoCalState = AUTOCAL_START; //AutoCalState = AUTOCAL_START;
uint8_t i;
for (i = 0; i < 4; i++)
{
MotorHardStop1[i] = 0;
MotorHardStop2[i] = 0;
}
} }
void StopAutoCal(void) void StopAutoCal(void)
@ -173,6 +191,22 @@ void StopAutoCal(void)
} }
} }
void FW_act(void)
{
setMotorTarget(MOTOR1,MotorHardStop1[MOTOR1]-100);
setMotorTarget(MOTOR2,MotorHardStop1[MOTOR2]-100);
setMotorTarget(MOTOR3,MotorHardStop2[MOTOR3]+100);
setMotorTarget(MOTOR4,MotorHardStop1[MOTOR4]-100);
}
void TP_act(void)
{
setMotorTarget(MOTOR1,MotorHardStop2[MOTOR1]+500);//kb
setMotorTarget(MOTOR2,MotorHardStop2[MOTOR2]+100);//hg
setMotorTarget(MOTOR3,MotorHardStop1[MOTOR3]-100);//zd
setMotorTarget(MOTOR4,MotorHardStop2[MOTOR4]+100);//tt
}
void AutoCalCtrl(void) void AutoCalCtrl(void)
@ -464,7 +498,7 @@ void MotorMemoryKeyM1Release(void)
flagMotorMemoryKeyStart = 0; flagMotorMemoryKeyStart = 0;
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
{ {
buzzer_start();
if (MotorHardStop1[i]!=0 && MotorHardStop2[i]!=0) if (MotorHardStop1[i]!=0 && MotorHardStop2[i]!=0)
{ {
MemoryLoc[0][i] = MotorHallLoc[i]; MemoryLoc[0][i] = MotorHallLoc[i];
@ -492,6 +526,7 @@ void MotorMemoryKeyM2Release(void)
if (flagMotorMemoryKeyStart == 1) if (flagMotorMemoryKeyStart == 1)
{ {
flagMotorMemoryKeyStart = 0; flagMotorMemoryKeyStart = 0;
buzzer_start();
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
{ {
if (MotorHardStop1[i]!=0 && MotorHardStop2[i]!=0) if (MotorHardStop1[i]!=0 && MotorHardStop2[i]!=0)
@ -521,6 +556,7 @@ void MotorMemoryKeyM3Release(void)
if (flagMotorMemoryKeyStart == 1) if (flagMotorMemoryKeyStart == 1)
{ {
flagMotorMemoryKeyStart = 0; flagMotorMemoryKeyStart = 0;
buzzer_start();
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
{ {
if (MotorHardStop1[i]!=0 && MotorHardStop2[i]!=0) if (MotorHardStop1[i]!=0 && MotorHardStop2[i]!=0)
@ -575,19 +611,19 @@ void MotorCtrl(void)//10ms
if (OC1flag == 1) if (OC1flag == 1)
{ {
OC1flag = 0; OC1flag = 0;
if (MotorState[0] == ACT_XQ) if (MotorState[0] == ACT_XQ && MotorState[1] == ACT_NOACT && MotorErr[0] == 0)
{ {
MotorHardStop1[0] = MotorHallLoc[0]; MotorHardStop1[0] = MotorHallLoc[0];
} }
else if (MotorState[0] == ACT_XH) else if (MotorState[0] == ACT_XH && MotorState[1] == ACT_NOACT && MotorErr[0] == 0)
{ {
MotorHardStop2[0] = MotorHallLoc[0]; MotorHardStop2[0] = MotorHallLoc[0];
} }
else if (MotorState[1] == ACT_XQ) else if (MotorState[1] == ACT_XQ && MotorState[0] == ACT_NOACT && MotorErr[1] == 0)
{ {
MotorHardStop1[1] = MotorHallLoc[1]; MotorHardStop1[1] = MotorHallLoc[1];
} }
else if (MotorState[1] == ACT_XH) else if (MotorState[1] == ACT_XH && MotorState[0] == ACT_NOACT && MotorErr[1] == 0)
{ {
MotorHardStop2[1] = MotorHallLoc[1]; MotorHardStop2[1] = MotorHallLoc[1];
} }
@ -597,19 +633,19 @@ void MotorCtrl(void)//10ms
if (OC2flag == 1) if (OC2flag == 1)
{ {
OC2flag = 0; OC2flag = 0;
if (MotorState[2] == ACT_XQ) if (MotorState[2] == ACT_XQ && MotorState[3] == ACT_NOACT && MotorErr[2] == 0)
{ {
MotorHardStop1[2] = MotorHallLoc[2]; MotorHardStop1[2] = MotorHallLoc[2];
} }
else if (MotorState[2] == ACT_XH) else if (MotorState[2] == ACT_XH && MotorState[3] == ACT_NOACT && MotorErr[2] == 0)
{ {
MotorHardStop2[2] = MotorHallLoc[2]; MotorHardStop2[2] = MotorHallLoc[2];
} }
else if (MotorState[3] == ACT_XQ) else if (MotorState[3] == ACT_XQ && MotorState[2] == ACT_NOACT && MotorErr[3] == 0)
{ {
MotorHardStop1[3] = MotorHallLoc[3]; MotorHardStop1[3] = MotorHallLoc[3];
} }
else if (MotorState[3] == ACT_XH) else if (MotorState[3] == ACT_XH && MotorState[2] == ACT_NOACT && MotorErr[3] == 0)
{ {
MotorHardStop2[3] = MotorHallLoc[3]; MotorHardStop2[3] = MotorHallLoc[3];
} }
@ -683,10 +719,10 @@ void CurrentDetecte(void)
current2 = getAdval(ADCH_RLY1); current2 = getAdval(ADCH_RLY1);
if (current1 > 30U && OC1flag == 0) if (current1 > 160U && OC1flag == 0)
{ {
OC_Count1++; OC_Count1++;
if (OC_Count1 >= 100) if (OC_Count1 >= 300)
{ {
OC_Count1 = 0; OC_Count1 = 0;
OC1flag = 1; OC1flag = 1;
@ -697,10 +733,10 @@ void CurrentDetecte(void)
OC_Count1 = 0; OC_Count1 = 0;
} }
if (current2 > 30U && OC2flag == 0) if (current2 > 160U && OC2flag == 0)
{ {
OC_Count2++; OC_Count2++;
if (OC_Count2 >= 100) if (OC_Count2 >= 300)
{ {
OC_Count2 = 0; OC_Count2 = 0;
OC2flag = 1; OC2flag = 1;

View File

@ -19,7 +19,8 @@ void MotorValueInit(void);
void StartAutoCal(void); void StartAutoCal(void);
void StopAutoCal(void); void StopAutoCal(void);
void FW_act(void);
void TP_act(void);

View File

@ -125,10 +125,12 @@ void KeyPressLogic(uint8_t keyid)
setMotorState(MOTOR4,ACT_XH); setMotorState(MOTOR4,ACT_XH);
break; break;
case KEYID_FW: case KEYID_FW:
buzzer_start(); //buzzer_start();
TP_act();
break; break;
case KEYID_TP: case KEYID_TP:
buzzer_start(); //buzzer_start();
FW_act();
break; break;
case KEYID_JY_SET: case KEYID_JY_SET:
MotorMemoryKeyMMPress(); MotorMemoryKeyMMPress();