HW02初版
This commit is contained in:
parent
a3f20dc020
commit
e9816c6dff
@ -44,7 +44,7 @@ const uint16_t g_rxrule_table[CAN_RX_RULE_NUM][6] = {
|
||||
/* IDL IDH IDL_MASK IDH_MASK Store data filter */
|
||||
{ 0x0741U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8002U, 0x8001U },
|
||||
{ 0x07DFU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8102U, 0x8002U },
|
||||
{ 0x0403U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8202U, 0x8003U },
|
||||
{ 0x0189U, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8202U, 0x8003U },
|
||||
{ 0x026DU, 0x0000U, 0xFFFFU, 0xDFFFU, 0x8302U, 0x8004U },
|
||||
{ 0x0400U, 0x0000U, 0x0000U, 0xD480U, 0x8402U, 0x8005U }, //NW PDU
|
||||
|
||||
|
@ -94,12 +94,11 @@ void __near RSCAN_INTCANGRECC_interrupt(void)
|
||||
ucNwNetIdelCheck = 1; //网络空闲检测 300ms如果没有置位 默认为空闲
|
||||
}
|
||||
|
||||
if (RxCanMessage.IDL == 0x0403)
|
||||
if (RxCanMessage.IDL == 0x0189)
|
||||
{
|
||||
|
||||
if (App28sTxRxStatus & 0x02 != 0) // Rx enable
|
||||
{
|
||||
//Copy_Array_to_Array(CAN_403.Msg_Byte, RxCanMessage.DB, 8);
|
||||
Copy_Array_to_Array(CAN_189.Msg_Byte, RxCanMessage.DB, 8);
|
||||
}
|
||||
}
|
||||
if (RxCanMessage.IDL == 0x026D)
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#define CAN_STB P1_bit.no2
|
||||
|
||||
//#define O_IND_CTRL P3_bit.no0
|
||||
|
||||
#define O_IND1_CTRL P1_bit.no5
|
||||
#define O_IND2_CTRL P1_bit.no6
|
||||
#define O_IND3_CTRL P1_bit.no7
|
||||
@ -22,7 +22,7 @@ typedef enum
|
||||
{
|
||||
SIGID_SW_LOCK_IN,
|
||||
SIGID_SW_L_IN,
|
||||
SIGID_SW_RE1,
|
||||
SIGID_SW_P_IN,
|
||||
SIGID_SW_RE2,
|
||||
SIG_NUM,
|
||||
}SIGID_type;
|
||||
|
@ -40,7 +40,7 @@ unsigned char BusoffFlag;
|
||||
uint16_t VehicleSpeedRaw,VehicleSpeed;
|
||||
|
||||
uint8_t nouse;//Relocation value is odd number
|
||||
uint8_t lock_state,lkey_state,re1key_state,re2key_state;
|
||||
uint8_t lock_state,lkey_state,Pkey_state,re2key_state;
|
||||
#define LOCK_STATE_LOCKED 0
|
||||
#define LOCK_STATE_UNLOCKED 1
|
||||
static uint8_t g_lh_state,g_fnr_state;
|
||||
@ -48,14 +48,18 @@ uint8_t g_f_op,g_n_op,g_r_op;
|
||||
static uint8_t PowerUpDetect_flag;
|
||||
static uint8_t PowerUp_FNR_Error_flag,OperationFault_flag;
|
||||
static uint8_t err_counter;
|
||||
static uint8_t P_light_rcv;
|
||||
#define FNR_ERROR_HL_POS 0
|
||||
#define FNR_ERROR_F_POS 1
|
||||
#define FNR_ERROR_N_POS 2
|
||||
#define FNR_ERROR_R_POS 3
|
||||
#define FNR_ERROR_P_POS 4
|
||||
|
||||
void IND_task(void);
|
||||
void HD_task(void);
|
||||
void PowerUpDetect(void);
|
||||
void P_light_task(void);
|
||||
|
||||
|
||||
void Apply_task(void)
|
||||
{
|
||||
@ -80,7 +84,7 @@ void Apply_task(void)
|
||||
BusOff_Detect();
|
||||
}
|
||||
KeyScan();
|
||||
|
||||
P_light_task();
|
||||
|
||||
//IGN_Detect();
|
||||
//CanNwHandle();
|
||||
@ -108,7 +112,6 @@ void Apply_task(void)
|
||||
{
|
||||
PowerUpDetect();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
if (Timer_20ms_flag == 1)
|
||||
@ -284,8 +287,11 @@ void PowerUpDetect(void)//10ms
|
||||
|
||||
PowerUp_FNR_Error_flag = 0;
|
||||
|
||||
errbit = GetIOState(SIGID_SW_L_IN);
|
||||
PowerUp_FNR_Error_flag |= errbit<<FNR_ERROR_HL_POS;
|
||||
//errbit = GetIOState(SIGID_SW_L_IN);
|
||||
//PowerUp_FNR_Error_flag |= errbit<<FNR_ERROR_HL_POS;
|
||||
|
||||
errbit = GetIOState(SIGID_SW_P_IN);
|
||||
PowerUp_FNR_Error_flag |= errbit<<FNR_ERROR_P_POS;
|
||||
|
||||
adval = getAdval(ADCH_HALL_F);
|
||||
errbit = adval<50?1:0;
|
||||
@ -315,9 +321,42 @@ void PowerUpDetect(void)//10ms
|
||||
|
||||
}
|
||||
|
||||
void P_light_task(void)
|
||||
{
|
||||
static uint8_t counter;
|
||||
switch (P_light_rcv)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
P_light_Ctrl(P_light_rcv);
|
||||
counter=0;
|
||||
break;
|
||||
case 3:
|
||||
counter++;
|
||||
if (counter<11)
|
||||
{
|
||||
P_light_Ctrl(P_LIGHT_RED);
|
||||
}
|
||||
else if (counter<23)
|
||||
{
|
||||
P_light_Ctrl(P_LIGHT_YELLOE);
|
||||
}
|
||||
else
|
||||
{
|
||||
counter = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
counter=0;
|
||||
P_light_Ctrl(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void IND_task(void)
|
||||
{
|
||||
IND_Ctrl(g_fnr_state,g_lh_state);
|
||||
IND_Ctrl(g_fnr_state);
|
||||
}
|
||||
|
||||
|
||||
@ -333,10 +372,10 @@ void KeyPro(void)
|
||||
{
|
||||
lkey_state = 1;
|
||||
}
|
||||
if (getKeyPressFlag(SIGID_SW_RE1) == KEY_PRESSED)
|
||||
if (getKeyPressFlag(SIGID_SW_P_IN) == KEY_PRESSED)
|
||||
{
|
||||
re1key_state = !re1key_state;
|
||||
RE1LED_CTRL(re1key_state);
|
||||
Pkey_state = !Pkey_state;
|
||||
//RE1LED_CTRL(Pkey_state);
|
||||
}
|
||||
if (getKeyPressFlag(SIGID_SW_RE2) == KEY_PRESSED)
|
||||
{
|
||||
@ -365,20 +404,20 @@ void Can_Msg_Change(void)
|
||||
CAN_188.Msg_Part.SL_Lswitch = (g_lh_state == LH_STATE_L)?1:0;
|
||||
CAN_188.Msg_Part.SL_Nswitch = (g_fnr_state == FNR_STATE_N)?1:0;
|
||||
CAN_188.Msg_Part.SL_Rswitch = (g_fnr_state == FNR_STATE_R)?1:0;
|
||||
CAN_188.Msg_Part.switch1 = re1key_state;
|
||||
CAN_188.Msg_Part.switch1 = Pkey_state;
|
||||
CAN_188.Msg_Part.switch2 = re2key_state;
|
||||
CAN_188.Msg_Part.Reserve_1 = 0;
|
||||
CAN_188.Msg_Part.F_OP = g_f_op;
|
||||
CAN_188.Msg_Part.N_OP = g_n_op;
|
||||
CAN_188.Msg_Part.R_OP = g_r_op;
|
||||
CAN_188.Msg_Part.err1 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_HL_POS)?1:0;
|
||||
CAN_188.Msg_Part.err1 = 0;//20240815delete
|
||||
CAN_188.Msg_Part.err2 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_F_POS)?1:0;
|
||||
CAN_188.Msg_Part.err3 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_N_POS)?1:0;
|
||||
CAN_188.Msg_Part.err4 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_R_POS)?1:0;
|
||||
CAN_188.Msg_Part.err5 = 0;
|
||||
CAN_188.Msg_Part.err5 = OperationFault_flag&(1<<FNR_ERROR_F_POS)?1:0;
|
||||
CAN_188.Msg_Part.err6 = 0;
|
||||
CAN_188.Msg_Part.err7 = 0;
|
||||
CAN_188.Msg_Part.err8 = 0;
|
||||
CAN_188.Msg_Part.err7 = OperationFault_flag&(1<<FNR_ERROR_R_POS)?1:0;
|
||||
CAN_188.Msg_Part.err8 = PowerUp_FNR_Error_flag&(1<<FNR_ERROR_P_POS)?1:0;
|
||||
CAN_188.Msg_Part.CRC = CRC_Calc_Table(CAN_188.Msg_Byte,7);
|
||||
}
|
||||
|
||||
@ -613,10 +652,11 @@ void value_init(void)
|
||||
g_fnr_state = FNR_STATE_N;
|
||||
g_lh_state = LH_STATE_H;
|
||||
PowerUpDetect_flag = 0;
|
||||
P_light_rcv = 0;
|
||||
}
|
||||
void CAN_RX_Data_Handle(void)
|
||||
{
|
||||
|
||||
P_light_rcv = CAN_189.Msg_Part.P_light;
|
||||
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@ unsigned char App28sTxRxStatus = 3;
|
||||
unsigned char Nw28sTxRxStatus = 3;
|
||||
|
||||
Can_Msg_Type_188 CAN_188;
|
||||
Can_Msg_Type_189 CAN_189;
|
||||
|
||||
can_frame_t TxCanMessage;
|
||||
can_frame_t TxCanMessage1;
|
||||
|
@ -22,13 +22,13 @@ typedef union{
|
||||
unsigned char Reserve_2:8;
|
||||
|
||||
//byte 2 16
|
||||
unsigned char err1:1;//HorL_SwitchFault
|
||||
unsigned char err1:1;//HorL_SwitchFault 20240815delete
|
||||
unsigned char err2:1;//F_SwitchFault
|
||||
unsigned char err3:1;//R_SwitchFault
|
||||
unsigned char err4:1;//F_OperationFault
|
||||
unsigned char err5:1;//N_OperationFault
|
||||
unsigned char err6:1;//R_OperationFault
|
||||
unsigned char err7:1;
|
||||
unsigned char err3:1;//N_SwitchFault
|
||||
unsigned char err4:1;//R_SwitchFault
|
||||
unsigned char err5:1;//F_OperationFault
|
||||
unsigned char err6:1;//N_OperationFault
|
||||
unsigned char err7:1;//R_OperationFault
|
||||
unsigned char err8:1;
|
||||
|
||||
//byte 3 24
|
||||
@ -48,8 +48,27 @@ typedef union{
|
||||
}Msg_Part;
|
||||
}Can_Msg_Type_188;
|
||||
|
||||
extern Can_Msg_Type_188 CAN_188;
|
||||
typedef union{
|
||||
unsigned int Msg_Word[2];
|
||||
unsigned char Msg_Byte[4];
|
||||
struct{
|
||||
//byte 0 0
|
||||
unsigned char P_light:2;
|
||||
unsigned char Reserve_0:6;
|
||||
|
||||
//byte 1-7
|
||||
unsigned char Reserve_1;
|
||||
unsigned char Reserve_2;
|
||||
unsigned char Reserve_3;
|
||||
unsigned char Reserve_4;
|
||||
unsigned char Reserve_5;
|
||||
unsigned char Reserve_6;
|
||||
unsigned char Reserve_7;
|
||||
}Msg_Part;
|
||||
}Can_Msg_Type_189;
|
||||
|
||||
extern Can_Msg_Type_188 CAN_188;
|
||||
extern Can_Msg_Type_189 CAN_189;
|
||||
|
||||
|
||||
extern can_frame_t RxCanMessage;
|
||||
|
@ -95,6 +95,27 @@ void KeyScan(void)
|
||||
|
||||
}
|
||||
|
||||
void P_light_Ctrl(uint8_t state)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case P_LIGHT_NONE:
|
||||
O_IND5_CTRL = 0;
|
||||
O_IND1_CTRL = 0;
|
||||
break;
|
||||
case P_LIGHT_RED:
|
||||
O_IND5_CTRL = 1;
|
||||
O_IND1_CTRL = 0;
|
||||
break;
|
||||
case P_LIGHT_NONE:
|
||||
O_IND5_CTRL = 0;
|
||||
O_IND1_CTRL = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint8_t GetIOState(uint8_t keyno)
|
||||
{
|
||||
@ -105,7 +126,7 @@ uint8_t GetIOState(uint8_t keyno)
|
||||
return I_SW_LOCK_IN==0?1:0;
|
||||
case SIGID_SW_L_IN:
|
||||
return I_SW_L_IN==0?1:0;
|
||||
case SIGID_SW_RE1:
|
||||
case SIGID_SW_P_IN:
|
||||
return I_SW_RE1==0?1:0;
|
||||
case SIGID_SW_RE2:
|
||||
return I_SW_RE2==0?1:0;
|
||||
@ -124,7 +145,7 @@ uint8_t GetKeyState(uint8_t keyno)
|
||||
}
|
||||
|
||||
|
||||
void IND_Ctrl(uint8_t fnr_state,uint8_t lh_state)
|
||||
void IND_Ctrl(uint8_t fnr_state)
|
||||
{
|
||||
//O_IND_CTRL = 1;
|
||||
switch (fnr_state)
|
||||
@ -148,15 +169,6 @@ void IND_Ctrl(uint8_t fnr_state,uint8_t lh_state)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (lh_state == LH_STATE_L)
|
||||
{
|
||||
O_IND1_CTRL = 1;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
O_IND1_CTRL = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void RE1LED_CTRL(uint8_t state)
|
||||
|
@ -15,7 +15,9 @@
|
||||
#define FNR_STATE_F 1
|
||||
#define FNR_STATE_R 2
|
||||
|
||||
|
||||
#define P_LIGHT_NONE 0
|
||||
#define P_LIGHT_RED 1
|
||||
#define P_LIGHT_YELLOE 2
|
||||
|
||||
uint8_t GetKeyState(uint8_t keyno);
|
||||
void KeyScan(void);
|
||||
@ -27,8 +29,8 @@ void ClearKeyState(void);
|
||||
uint8_t getKeyReleaseFlag(uint8_t id);
|
||||
uint8_t getKeyPressFlag(uint8_t id);
|
||||
void getInputStatus(unsigned char* data);
|
||||
void IND_Ctrl(uint8_t fnr_state,uint8_t lh_state);
|
||||
|
||||
void IND_Ctrl(uint8_t fnr_state);
|
||||
void P_light_Ctrl(uint8_t state);
|
||||
void RE1LED_CTRL(uint8_t state);
|
||||
void RE2LED_CTRL(uint8_t state);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user