⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commswitch.c

📁 此程序为DP256的SPI实验程序,已经通过实验证明
💻 C
📖 第 1 页 / 共 4 页
字号:
}

/************************************
*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 + -