📄 commswitch.c
字号:
}
/************************************
*Function Name: MC33993_GetInput
*Parameter: NONE
*Orignator: Wang junpeng
*Date: 2nd, June, 2005
*Discription: Read MC33993 input pin state
*
**************************************/
void MC33993_GetInput(void)
{
SPI_Tx_Buf[MC33993_DATA_LOW] = 0xff;
SPI_Tx_Buf[MC33993_DATA_HIGH] = 0xff;
SPI_Tx_Buf[MC33993_CMD_INDEX] = MC33993_CMD_TEST;
#if SPI_INT_SEL == MC33993_INT_ENABLE
SPI_Start(3);
#endif
#if SPI_INT_SEL == MC33993_INT_DISABLE
if(MC33993_stInitialized == MC33993_INIT_NONE)
{
if(MC33993_Pool() == MC33993_COMM_OK)
{
MC33993_Data_Initial();
MC33993_stInitialized = MC33993_INIT_OK;
}
}
else MC33993_Pool();
// MC33993_Pool();
#endif
}
/************************************
*Function Name: MC33993_Init
*Parameter: NONE
*Orignator: Wang junpeng
*Date: 2nd, June, 2005
*Discription: Read MC33993 input pin state
*
**************************************/
L_U8 MC33993_Init(void)
{
//unsigned char cmdLow, cmdHigh;
L_U16 wTime;
L_U8 uRet;
if(SPCR_SPE == 0) return 0;
// #define nSPSetting (MC33993_SP0_INT | MC33993_SP1_INT | MC33993_SP2_INT | MC33993_SP3_INT | MC33993_SP4_INT | MC33993_SP5_INT | MC33993_SP6_INT | MC33993_SP7_INT)
// #define nSGLSetting (MC33993_SG0_INT | MC33993_SG1_INT | MC33993_SG2_INT | MC33993_SG3_INT | MC33993_SG4_INT | MC33993_SG5_INT | MC33993_SG6_INT | MC33993_SG7_INT)
// #define nSGHSetting (MC33993_SG8_INT | MC33993_SG9_INT | MC33993_SG10_INT | MC33993_SG11_INT | MC33993_SG12_INT | MC33993_SG13_INT)
MC33993_stInitialized = MC33993_INIT_NONE;
MC33993_nErrCntr = 0;
wTime = LIN_GetCurrentTime();
while(MC33993_stInitialized < MC33993_INIT_OK)
{
switch(MC33993_stInitialized)
{
case MC33993_INIT_SGINT:
MC33993_SG_Interrupt(nSGLSetting,nSGHSetting );
break;
case MC33993_INIT_SGMET:
MC33993_SG_Metallic(nSGLSetting,nSGHSetting );
break;
case MC33993_INIT_SGWET:
MC33993_SG_Wet(nSGLSetting,nSGHSetting);
break;
case MC33993_INIT_SPINT:
MC33993_SP_Interrupt(nSPSetting);
break;
case MC33993_INIT_SPMET:
MC33993_SP_Metallic(nSPSetting);
break;
case MC33993_INIT_SPWET:
MC33993_SP_Wet(nSPSetting);
break;
default:
break;
}
if(LIN_CheckTimeOut(wTime, LIN_GetCurrentTime(),100)) return 0;
}
SPIBuf.mState = SPI_XMT_IDLE;
MC33993_stInitialized = MC33993_INIT_OK;
return 1;
}
/************************************
*Function Name: KeyBoard_Init
*Parameter: NONE
*Orignator: Wang junpeng
*Date: 3rd, June, 2005
*Discription: Read MC33993 input pin state
*
**************************************/
void KeyBoard_Init(void)
{
INTKBSCR_IMASKK = 1;//Disable Key Board Interrupt output
INTKBSCR_MODEK = 1;//Keyboard interrupt requests on falling edges and low levels
INTKBSCR_ACKK = 1;//CLEAR INTERRUPT FLAG
MC33993_INT_EN = 1;//Enable MC33993 Interrupt
INTKBSCR_IMASKK = 0;//Enable Keboard interrupts
}
/************************************
*Function Name: KeyBoard_INT_Enable
*Parameter: NONE
*Orignator: Wang junpeng
*Date: 3rd, June, 2005
*Discription: Read MC33993 input pin state
*
**************************************/
void KeyBoard_INT_Enable(void)
{
MC33993_INT_EN = 1;
}
/************************************
*Function Name: KeyBoard_INT_Disable
*Parameter: NONE
*Orignator: Wang junpeng
*Date: 3rd, June, 2005
*Discription: Read MC33993 input pin state
*
**************************************/
void KeyBoard_INT_Disable(void)
{
MC33993_INT_EN = 0;
}
/************************************
*Function Name: CmbSwt_Init
*Parameter: NONE
*Orignator: Wang junpeng
*Date: 6th, June, 2005
*Discription: Initialize CmbSwt Status
*
**************************************/
void CmbSwt_Init(void)
{
CmbSwt_stBrush1_mp0 = 0xff;
// CmbSwt_stBrush1_mp1 = 0xff;
CmbSwt_nBrush1ErrCntr = 0;
CmbSwt_tiBrush1 = 0;
CmbSwt_stBrush1 = 0xff;
CmbSwt_stBrush1Err = CMBSWT_STATE_UNKNOWN;
CmbSwt_stBrush2_mp0 = 0xff;
// CmbSwt_stBrush2_mp1 = 0xff;
CmbSwt_nBrush2ErrCntr = 0;
CmbSwt_tiBrush2 = 0;
CmbSwt_stBrush2 = 0xff;
CmbSwt_stBrush2Err = CMBSWT_STATE_UNKNOWN;
CmbSwt_stBrush3_mp0 = 0xff;
// CmbSwt_stBrush3_mp1 = 0xff;
CmbSwt_nBrush3ErrCntr = 0;
CmbSwt_tiBrush3 = 0;
CmbSwt_stBrush3 = 0xff;
CmbSwt_stBrush3Err = CMBSWT_STATE_UNKNOWN;
CmbSwt_stBrush4_mp0 = 0xff;
// CmbSwt_stBrush4_mp1 = 0xff;
CmbSwt_nBrush4ErrCntr = 0;
CmbSwt_tiBrush4 = 0;
CmbSwt_stBrush4 = 0xff;
CmbSwt_stBrush4Err = CMBSWT_STATE_UNKNOWN;
CmbSwt_stTurnLeft_mp0 = 0xff;
// CmbSwt_stTurnLeft_mp1 = 0xff;
CmbSwt_nTurnLeftErrCntr = 0;
CmbSwt_tiTurnLeft = 0;
CmbSwt_stTurnLeft = 0xff;
CmbSwt_stTurnLeftErr = CMBSWT_STATE_UNKNOWN;
CmbSwt_stTurnRight_mp0 = 0xff;
// CmbSwt_stTurnRight_mp1 = 0xff;
CmbSwt_nTurnRightErrCntr= 0;
CmbSwt_tiTurnRight = 0;
CmbSwt_stTurnRight = 0xff;
CmbSwt_stTurnRightErr = CMBSWT_STATE_UNKNOWN;
CmbSwt_stLamp1_mp0 = 0xff;
// CmbSwt_stLamp1_mp1 = 0xff;
CmbSwt_nLamp1ErrCntr = 0;
CmbSwt_tiLamp1 = 0;
CmbSwt_stLamp1 = 0xff;
CmbSwt_stLamp1Err = CMBSWT_STATE_UNKNOWN;
CmbSwt_stLamp2_mp0 = 0xff;
// CmbSwt_stLamp2_mp1 = 0xff;
CmbSwt_nLamp2ErrCntr = 0;
CmbSwt_tiLamp2 = 0;
CmbSwt_stLamp2 = 0xff;
CmbSwt_stLamp2Err = CMBSWT_STATE_UNKNOWN;
CmbSwt_stLamp3_mp0 = 0xff;
// CmbSwt_stLamp3_mp1 = 0xff;
CmbSwt_nLamp3ErrCntr = 0;
CmbSwt_tiLamp3 = 0;
CmbSwt_stLamp3 = 0xff;
CmbSwt_stLamp3Err = CMBSWT_STATE_UNKNOWN;
}
void GetSwitchStatus(void)
{
if((CmbSwt_stBrush1Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
{
if(LIN_CheckTimeOut(CmbSwt_tiBrush1, LIN_GetCurrentTime(), CmbSwt_tiBrush1Debounce_C))
{
/*
if((CmbSwt_stBrush1Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
{
CmbSwt_nBrush1ErrCntr++;
if(CmbSwt_nBrush1ErrCntr == CMBSWT_ERR_MAX)
{
//Switch status Restored to OK
//1. Remember the correct status
CmbSwt_stBrush1 = CmbSwt_stBrush1_mp0;
//2. Clear Error Status
CmbSwt_stBrush1Err &= ~CMBSWT_STATE_ERR;
//3. Reset Err Counter
CmbSwt_nBrush1ErrCntr = 0;
//4. Clear Debounce Flag
CmbSwt_stBrush1Err &= ~CMBSWT_STATE_DEBOUNCE;
}
// else
// {
// Start next Debounce process
//1. Set Debounce Timer
// CmbSwt_tiBrush1 = LIN_GetCurrentTime();
//2. Don't change current status
// }//if(CmbSwt_nBrush1ErrCntr == CMBSWT_ERR_MAX)
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
else
{
*/
//1. Remember the correct status
CmbSwt_stBrush1 = CmbSwt_stBrush1_mp0;
//2. Reset Err Counter
CmbSwt_nBrush1ErrCntr = 0;
//3. Clear Debounce Flag
CmbSwt_stBrush1Err &= ~CMBSWT_STATE_DEBOUNCE;
// }//if((CmbSwt_stBrush1Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
}//if(LIN_CheckTimeOut(CmbSwt_tiBrush1, LIN_GetCurrentTime(), CmbSwt_tiBrush1Debounce_C))
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
//----------------------------------------------------------------------------------------------------
if((CmbSwt_stBrush2Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
{
if(LIN_CheckTimeOut(CmbSwt_tiBrush2, LIN_GetCurrentTime(), CmbSwt_tiBrush2Debounce_C))
{
if((CmbSwt_stBrush2Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
{
CmbSwt_nBrush2ErrCntr++;
if(CmbSwt_nBrush2ErrCntr == CMBSWT_ERR_MAX)
{
//Switch status Restored to OK
//1. Remember the correct status
CmbSwt_stBrush2 = CmbSwt_stBrush2_mp0;
//2. Clear Error Status
CmbSwt_stBrush2Err &= ~CMBSWT_STATE_ERR;
//3. Reset Err Counter
CmbSwt_nBrush2ErrCntr = 0;
//4. Clear Debounce Flag
CmbSwt_stBrush2Err &= ~CMBSWT_STATE_DEBOUNCE;
}
else
{
// Start next Debounce process
//1. Set Debounce Timer
CmbSwt_tiBrush2 = LIN_GetCurrentTime();
//2. Don't change current status
}//if(CmbSwt_nBrush1ErrCntr == CMBSWT_ERR_MAX)
}
else
{
//1. Remember the correct status
CmbSwt_stBrush2 = CmbSwt_stBrush2_mp0;
//2. Reset Err Counter
CmbSwt_nBrush2ErrCntr = 0;
//3. Clear Debounce Flag
CmbSwt_stBrush2Err &= ~CMBSWT_STATE_DEBOUNCE;
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
}//if(LIN_CheckTimeOut(CmbSwt_tiBrush1, LIN_GetCurrentTime(), CmbSwt_tiBrush1Debounce_C))
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
//----------------------------------------------------------------------------------------------------
if((CmbSwt_stBrush3Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
{
if(LIN_CheckTimeOut(CmbSwt_tiBrush3, LIN_GetCurrentTime(), CmbSwt_tiBrush3Debounce_C))
{
if((CmbSwt_stBrush3Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
{
CmbSwt_nBrush3ErrCntr++;
if(CmbSwt_nBrush3ErrCntr == CMBSWT_ERR_MAX)
{
//Switch status Restored to OK
//1. Remember the correct status
CmbSwt_stBrush3 = CmbSwt_stBrush3_mp0;
//2. Clear Error Status
CmbSwt_stBrush3Err &= ~CMBSWT_STATE_ERR;
//3. Reset Err Counter
CmbSwt_nBrush3ErrCntr = 0;
//4. Clear Debounce Flag
CmbSwt_stBrush3Err &= ~CMBSWT_STATE_DEBOUNCE;
}
else
{
// Start next Debounce process
//1. Set Debounce Timer
CmbSwt_tiBrush3 = LIN_GetCurrentTime();
//2. Don't change current status
}//if(CmbSwt_nBrush1ErrCntr == CMBSWT_ERR_MAX)
}
else
{
//1. Remember the correct status
CmbSwt_stBrush3 = CmbSwt_stBrush3_mp0;
//2. Reset Err Counter
CmbSwt_nBrush3ErrCntr = 0;
//3. Clear Debounce Flag
CmbSwt_stBrush3Err &= ~CMBSWT_STATE_DEBOUNCE;
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
}//if(LIN_CheckTimeOut(CmbSwt_tiBrush1, LIN_GetCurrentTime(), CmbSwt_tiBrush1Debounce_C))
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
//----------------------------------------------------------------------------------------------------
if((CmbSwt_stBrush4Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
{
if(LIN_CheckTimeOut(CmbSwt_tiBrush4, LIN_GetCurrentTime(), CmbSwt_tiBrush4Debounce_C))
{
if((CmbSwt_stBrush4Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
{
CmbSwt_nBrush4ErrCntr++;
if(CmbSwt_nBrush4ErrCntr == CMBSWT_ERR_MAX)
{
//Switch status Restored to OK
//1. Remember the correct status
CmbSwt_stBrush4 = CmbSwt_stBrush4_mp0;
//2. Clear Error Status
CmbSwt_stBrush4Err &= ~CMBSWT_STATE_ERR;
//3. Reset Err Counter
CmbSwt_nBrush1ErrCntr = 0;
//4. Clear Debounce Flag
CmbSwt_stBrush4Err &= ~CMBSWT_STATE_DEBOUNCE;
}
else
{
// Start next Debounce process
//1. Set Debounce Timer
CmbSwt_tiBrush4 = LIN_GetCurrentTime();
//2. Don't change current status
}//if(CmbSwt_nBrush1ErrCntr == CMBSWT_ERR_MAX)
}
else
{
//1. Remember the correct status
CmbSwt_stBrush4 = CmbSwt_stBrush4_mp0;
//2. Reset Err Counter
CmbSwt_nBrush4ErrCntr = 0;
//3. Clear Debounce Flag
CmbSwt_stBrush4Err &= ~CMBSWT_STATE_DEBOUNCE;
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_ERR) == CMBSWT_STATE_ERR)
}//if(LIN_CheckTimeOut(CmbSwt_tiBrush1, LIN_GetCurrentTime(), CmbSwt_tiBrush1Debounce_C))
}//if((CmbSwt_stBrush1Err & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
//----------------------------------------------------------------------------------------------------
if((CmbSwt_stTurnLeftErr & CMBSWT_STATE_DEBOUNCE) == CMBSWT_STATE_DEBOUNCE)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -