|  |  |  | @ -1,5 +1,6 @@ | 
		
	
		
			
				|  |  |  |  | #include "CAN.h" | 
		
	
		
			
				|  |  |  |  | #include "DSP2833x_Device.h" | 
		
	
		
			
				|  |  |  |  | #include "DSP2833x_ECan.h" | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | namespace canSpace { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -25,13 +26,13 @@ void CAN::transmitMsg(Uint16 boxNumber, const CANMessage& message){ | 
		
	
		
			
				|  |  |  |  |     p_CanRegs_->CANTRS.all = CanShadow_.CANTRS.all; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     // Wait for TA bit to be set
 | 
		
	
		
			
				|  |  |  |  |     do { CanShadow_.CANTA.all = p_CanRegs_->CANTA.all; } | 
		
	
		
			
				|  |  |  |  |     while((CanShadow_.CANTA.all & mboxControl) == 0 ); | 
		
	
		
			
				|  |  |  |  |     // do { CanShadow_.CANTA.all = p_CanRegs_->CANTA.all; }
 | 
		
	
		
			
				|  |  |  |  |     // while((CanShadow_.CANTA.all & mboxControl) == 0 );
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     // Clear TA (transmit acknowledge bit)
 | 
		
	
		
			
				|  |  |  |  |     CanShadow_.CANTA.all = 0; | 
		
	
		
			
				|  |  |  |  |     CanShadow_.CANTA.all |= mboxControl; | 
		
	
		
			
				|  |  |  |  |     p_CanRegs_->CANTA.all = CanShadow_.CANTA.all; | 
		
	
		
			
				|  |  |  |  |     // // Clear TA (transmit acknowledge bit)
 | 
		
	
		
			
				|  |  |  |  |     // CanShadow_.CANTA.all = 0;
 | 
		
	
		
			
				|  |  |  |  |     // CanShadow_.CANTA.all |= mboxControl;
 | 
		
	
		
			
				|  |  |  |  |     // p_CanRegs_->CANTA.all = CanShadow_.CANTA.all;
 | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -250,4 +251,35 @@ bool CAN::isNewMessage(Uint16 boxNumber){ | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void CAN::resetTimeStampCounter(){ | 
		
	
		
			
				|  |  |  |  |     EALLOW; | 
		
	
		
			
				|  |  |  |  |     ECanbRegs.CANTSC = 0; | 
		
	
		
			
				|  |  |  |  |     EDIS; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void CAN::setTimeOutValue(Uint16 boxNumber, Uint32 canBitsNumber){ | 
		
	
		
			
				|  |  |  |  |     if (boxNumber > 31) { return; } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     volatile Uint32* p_MailBox(0); | 
		
	
		
			
				|  |  |  |  |     p_MailBox = &(p_CanMotoRegs_->MOTO0) + boxNumber; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     *p_MailBox = canBitsNumber; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | bool CAN::isTimeOut(Uint16 boxNumber){ | 
		
	
		
			
				|  |  |  |  |     bool mBOXTimeOut = false; | 
		
	
		
			
				|  |  |  |  |     mBOXTimeOut = p_CanRegs_->CANTOS.all & (1ul << boxNumber); | 
		
	
		
			
				|  |  |  |  |     return mBOXTimeOut; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | void CAN::clearTimeOutFlag(Uint16 boxNumber){ | 
		
	
		
			
				|  |  |  |  |     Uint32 clearFlag = 0; | 
		
	
		
			
				|  |  |  |  |     clearFlag = 1ul << boxNumber; | 
		
	
		
			
				|  |  |  |  |     p_CanRegs_->CANTOS.all = clearFlag; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | }   // canSpace
 | 
		
	
	
		
			
				
					|  |  |  | 
 |