@ -1,7 +1,7 @@
 
		
	
		
			
				# include  "Periphery.h"  
		
	
		
			
				
 
		
	
		
			
				Periphery : : Periphery ( )  :   
		
	
		
			
				    _cana ( can S pace: : CANA ) , 
 
		
	
		
			
				    _cana ( can _s pace: : CANA ) , 
 
		
	
		
			
				    _digitalIO ( ) , 
 
		
	
		
			
				    _zone6_ptr ( reinterpret_cast < Uint16 * > ( 0x100000 ) ) , 
 
		
	
		
			
				    _scib ( ScibRegs ) , 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -27,22 +27,21 @@ void Periphery::config(){
 
		
	
		
			
				    _cana . config ( ) ; 
 
		
	
		
			
				
 
		
	
		
			
				    // Data Frame MBOX
 
 
		
	
		
			
				    _cana . configRxMBox ( can Space: : MODBUS_SETTINGS_MBOX ,  canSpace : : MsgID ( 0x0 ) ,  canS  pace: : MsgCtrlReg ( 0x6 ) ) ;    // Modbus settings
 
 
		
	
		
			
				    _cana . configTxMBox ( can Space: : MODBUS_DATA_COMM_TO_CPU_MBOX ,  canSpace : : MsgID ( 0x29 ) ,  canS  pace: : MsgCtrlReg ( 0x28 ) ) ;  // Send Modbus data to CPU
 
 
		
	
		
			
				    _cana . configRxMBox ( can Space: : MODBUS_DATA_CPU_TO_COMM_MBOX ,  canSpace : : MsgID ( 0x28 ) ,  canS  pace: : MsgCtrlReg ( 0x8 ) ) ;   // Receive Modbus data from CPU
 
 
		
	
		
			
				    _cana . configTxMBox ( can Space: : DIGITAL_INPUT_MBOX ,  canSpace : : MsgID ( 0x30 ) ,  canS  pace: : MsgCtrlReg ( 0x2 ) ) ;     //  Receive  DI
 
		
	
		
			
				    _cana . configRxMBox ( can Space: : DIGITAL_OUTPUT_MBOX ,  canSpace : : MsgID ( 0x31 ) ,  canS  pace: : MsgCtrlReg ( 0x2 ) ) ;    //  Send  DO
 
		
	
		
			
				    _cana . configRxMBox ( can _space: : MODBUS_SETTINGS_MBOX ,  can_space : : MsgID ( 0x0 ) ,  can_s  pace: : MsgCtrlReg ( 0x6 ) ) ;    // Modbus settings
 
 
		
	
		
			
				    _cana . configTxMBox ( can _space: : MODBUS_DATA_COMM_TO_CPU_MBOX ,  can_space : : MsgID ( 0x29 ) ,  can_s  pace: : MsgCtrlReg ( 0x28 ) ) ;  // Send Modbus data to CPU
 
 
		
	
		
			
				    _cana . configRxMBox ( can _space: : MODBUS_DATA_CPU_TO_COMM_MBOX ,  can_space : : MsgID ( 0x28 ) ,  can_s  pace: : MsgCtrlReg ( 0x8 ) ) ;   // Receive Modbus data from CPU
 
 
		
	
		
			
				    _cana . configTxMBox ( can _space: : DIGITAL_INPUT_MBOX ,  can_space : : MsgID ( 0x30 ) ,  can_s  pace: : MsgCtrlReg ( 0x2 ) ) ;     //  Send  DI
 
		
	
		
			
				    _cana . configRxMBox ( can _space: : DIGITAL_OUTPUT_MBOX ,  can_space : : MsgID ( 0x31 ) ,  can_s  pace: : MsgCtrlReg ( 0x2 ) ) ;    //  Receive  DO
 
		
	
		
			
				
 
		
	
		
			
				    // Remote frame MBOX
 
 
		
	
		
			
				    // _cana.configRxMBox(canSpace::MODBUS_SETTINGS_MBOX, canSpace::MsgID(0x0), canSpace::MsgCtrlReg(0x10));
 
 
		
	
		
			
				    _cana . configTxMBox ( canSpace : : COMM_VERSION_MBOX ,  canSpace : : MsgID ( 0x1 ,  false ,  true ) ,  canSpace : : MsgCtrlReg ( 0x4 ) ) ; 
 
		
	
		
			
				    _cana . configTxMBox ( can_space : : COMM_VERSION_MBOX ,  can_space : : MsgID ( 0x1 ,  false ,  true ) ,  can_space : : MsgCtrlReg ( 0x4 ) ) ; 
 
		
	
		
			
				
 
		
	
		
			
				    _cana . enableTimeOutControl ( can S pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				    _cana . setTimeOutValue ( can S pace: : MODBUS_SETTINGS_MBOX ,  1000 ) ; 
 
		
	
		
			
				    _cana . enableTimeOutControl ( can _s pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				    _cana . setTimeOutValue ( can _s pace: : MODBUS_SETTINGS_MBOX ,  1000 ) ; 
 
		
	
		
			
				
 
		
	
		
			
				    // Interrupts
 
 
		
	
		
			
				    _cana . configSystemIsr ( can S pace: : I0EN_ENABLE  | 
 
		
	
		
			
				                          can Space: : EPIM_ENABLE  |  canSpace : : WLIM_ENABLE  |  canS  pace: : AAIM_ENABLE ) ; 
 
		
	
		
			
				    _cana . configSystemIsr ( can _s pace: : I0EN_ENABLE  | 
 
		
	
		
			
				                          can _space: : EPIM_ENABLE  |  can_space : : WLIM_ENABLE  |  can_s  pace: : AAIM_ENABLE ) ; 
 
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				    //--------------------------------------Init XINTF interface----------------------------------------------------------
 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -76,39 +75,21 @@ void Periphery::config(){
 
		
	
		
			
				Uint16  Periphery : : getVersionFPGA ( ) {  
		
	
		
			
				    Uint16  data ; 
 
		
	
		
			
				    data  =  * _zone6_ptr  +  interface : : SOFT_VERSION_OFFSET ; 
 
		
	
		
			
				    return  data ; 
 
		
	
		
			
				    return  data  &  0x3FF  ;     // no more than 1023. (9.9.9) should be limit
  
 
		
	
		
			
				}  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				void  Periphery : : updateVersionFPGA ( ) {  
		
	
		
			
				    _softVersion . CPLD  =  getVersionFPGA ( )  &  0x3FF  ;    // no more than 1023. (9.9.9) should be limit
  
 
		
	
		
			
				    _softVersion . CPLD  =  getVersionFPGA ( ) ; 
 
		
	
		
			
				    _message . mdl . word . LOW_WORD  =  _softVersion . DSP ; 
 
		
	
		
			
				    _message . mdl . word . HI_WORD  =  _softVersion . CPLD ; 
 
		
	
		
			
				    _cana . updateTXMessage ( canSpace : : COMM_VERSION_MBOX ,  _message ) ; 
 
		
	
		
			
				}  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				void  Periphery : : initModbusTable ( ) {  
		
	
		
			
				    modbusRTU . setInputRegsAddr ( 400 ) ; 
 
		
	
		
			
				    modbusRTU . setOutputRegsAddr ( 400 ) ; 
 
		
	
		
			
				
 
		
	
		
			
				    modbusRTU . addInputReg ( 0 ,  test_hmi_float_reg_400_test ) ; 
 
		
	
		
			
				    modbusRTU . addInputReg ( 1 ,  test_hmi_float_reg_401_test ) ; 
 
		
	
		
			
				    modbusRTU . addInputReg ( 2 ,  test_hmi_float_reg_402_test ) ; 
 
		
	
		
			
				    modbusRTU . addInputReg ( 3 ,  test_hmi_float_reg_403_test ) ; 
 
		
	
		
			
				    modbusRTU . addInputReg ( 4 ,  test_hmi_float_reg_404_test ) ; 
 
		
	
		
			
				
 
		
	
		
			
				    modbusRTU . addOutputReg ( 0 ,  test_hmi_float_reg_400_test ) ; 
 
		
	
		
			
				    modbusRTU . addOutputReg ( 1 ,  test_hmi_float_reg_401_test ) ; 
 
		
	
		
			
				    modbusRTU . addOutputReg ( 2 ,  test_hmi_float_reg_402_test ) ; 
 
		
	
		
			
				    modbusRTU . addOutputReg ( 3 ,  test_hmi_float_reg_403_test ) ; 
 
		
	
		
			
				    modbusRTU . addOutputReg ( 4 ,  test_hmi_float_reg_404_test ) ; 
 
		
	
		
			
				    _cana . updateTXMessage ( can_space : : COMM_VERSION_MBOX ,  _message ) ; 
 
		
	
		
			
				}  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				void  Periphery : : receiveModbusParameters ( ) {  
		
	
		
			
				    if  ( _cana . isNewMessage ( can S pace: : MODBUS_SETTINGS_MBOX ) )  { 
 
		
	
		
			
				        _cana . receiveMsg ( can S pace: : MODBUS_SETTINGS_MBOX ,  _message ) ; 
 
		
	
		
			
				    if  ( _cana . isNewMessage ( can_space : : MODBUS_SETTINGS_MBOX ) )  { 
 
		
	
		
			
				        _cana . receiveMsg ( can_space : : MODBUS_SETTINGS_MBOX ,  _message ) ; 
 
		
	
		
			
				
 
		
	
		
			
				        MODBUSRTU : : modbusConfiguration . node_id  =  _message . mdl . byte . BYTE0 ; 
 
		
	
		
			
				        MODBUSRTU : : modbusConfiguration . config . lenght  =  static_cast < DSP28335 : : SCICharLenght > ( _message . mdl . byte . BYTE1 ) ; 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -124,31 +105,31 @@ void Periphery::receiveModbusParameters(){
 
		
	
		
			
				
 
		
	
		
			
				void  Periphery : : getModbusConfiguration ( ) {  
		
	
		
			
				    _cana . resetTimeStampCounter ( ) ; 
 
		
	
		
			
				    _cana . clearTimeOutFlag ( can S pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				    _cana . clearTimeOutFlag ( can _s pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				    bool  requestIsSent  =  false ; 
 
		
	
		
			
				
 
		
	
		
			
				    while ( ! _cana . isNewMessage ( can S pace: : MODBUS_SETTINGS_MBOX ) ) { 
 
		
	
		
			
				        if ( _cana . isTimeOut ( can S pace: : MODBUS_SETTINGS_MBOX ) ) { 
 
		
	
		
			
				    while ( ! _cana . isNewMessage ( can _s pace: : MODBUS_SETTINGS_MBOX ) ) { 
 
		
	
		
			
				        if ( _cana . isTimeOut ( can _s pace: : MODBUS_SETTINGS_MBOX ) ) { 
 
		
	
		
			
				            if  ( ! requestIsSent )  { 
 
		
	
		
			
				                _cana . resetTimeStampCounter ( ) ; 
 
		
	
		
			
				                _cana . clearTimeOutFlag ( can S pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				                _cana . clearTimeOutFlag ( can _s pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				
 
		
	
		
			
				                _message . mdl . word . LOW_WORD  =  _softVersion . DSP ; 
 
		
	
		
			
				                _message . mdl . word . HI_WORD  =  _softVersion . CPLD ; 
 
		
	
		
			
				                _cana . transmitMsg ( can S pace: : COMM_VERSION_MBOX ,  _message ) ; 
 
		
	
		
			
				                _cana . transmitMsg ( can _s pace: : COMM_VERSION_MBOX ,  _message ) ; 
 
		
	
		
			
				
 
		
	
		
			
				                requestIsSent  =  true ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				            else { 
 
		
	
		
			
				                _cana . clearTimeOutFlag ( can S pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				                _cana . disableTimeOutControl ( can S pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				                _cana . clearTimeOutFlag ( can _s pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				                _cana . disableTimeOutControl ( can _s pace: : MODBUS_SETTINGS_MBOX ) ; 
 
		
	
		
			
				                _error  =  true ; 
 
		
	
		
			
				                return ; 
 
		
	
		
			
				            } 
 
		
	
		
			
				        } 
 
		
	
		
			
				    } 
 
		
	
		
			
				
 
		
	
		
			
				    _cana . receiveMsg ( can S pace: : MODBUS_SETTINGS_MBOX ,  _message ) ; 
 
		
	
		
			
				    _cana . receiveMsg ( can _s pace: : MODBUS_SETTINGS_MBOX ,  _message ) ; 
 
		
	
		
			
				    MODBUSRTU : : modbusConfiguration . node_id  =  _message . mdl . byte . BYTE0 ; 
 
		
	
		
			
				    MODBUSRTU : : modbusConfiguration . config . lenght  =  static_cast < DSP28335 : : SCICharLenght > ( _message . mdl . byte . BYTE1 ) ; 
 
		
	
		
			
				    MODBUSRTU : : modbusConfiguration . config . baudrate  =  static_cast < DSP28335 : : SCIBaudRate > ( _message . mdl . word . LOW_WORD ) ; 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -163,13 +144,13 @@ void Periphery::getModbusConfiguration(){
 
		
	
		
			
				void  Periphery : : processDigitalInput ( ) {  
		
	
		
			
				    Uint16  data  =  0 ; 
 
		
	
		
			
				    _digitalIO . readDigitalIO ( data ) ; 
 
		
	
		
			
				    _cana . transmitMsg ( can S pace: : DIGITAL_INPUT_MBOX ,  ( data ) ) ; 
 
		
	
		
			
				    _cana . transmitMsg ( can _s pace: : DIGITAL_INPUT_MBOX ,  data ) ; 
 
		
	
		
			
				}  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				void  Periphery : : processDigitalOutput ( ) {  
		
	
		
			
				    if ( _cana . isNewMessage ( can S pace: : DIGITAL_OUTPUT_MBOX ) ) { 
 
		
	
		
			
				        _cana . receiveMsg ( can S pace: : DIGITAL_OUTPUT_MBOX ,  _message ) ; 
 
		
	
		
			
				    if ( _cana . isNewMessage ( can _s pace: : DIGITAL_OUTPUT_MBOX ) ) { 
 
		
	
		
			
				        _cana . receiveMsg ( can _s pace: : DIGITAL_OUTPUT_MBOX ,  _message ) ; 
 
		
	
		
			
				        Uint16  data  =  _message . mdl . word . LOW_WORD ; 
 
		
	
		
			
				        _digitalIO . writeDigitalIO ( data ) ; 
 
		
	
		
			
				    } 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -199,13 +180,13 @@ void Periphery::sendModbusDataToCPU(){
 
		
	
		
			
				        _modbusRegCounter + + ; 
 
		
	
		
			
				    } 
 
		
	
		
			
				
 
		
	
		
			
				    _cana . transmitMsg ( can S pace: : MODBUS_DATA_COMM_TO_CPU_MBOX ,  _message ) ; 
 
		
	
		
			
				    _cana . transmitMsg ( can _s pace: : MODBUS_DATA_COMM_TO_CPU_MBOX ,  _message ) ; 
 
		
	
		
			
				}  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				void  Periphery : : receiveCpuModbusData ( ) {  
		
	
		
			
				    if  ( _cana . isNewMessage ( can S pace: : MODBUS_DATA_CPU_TO_COMM_MBOX ) )  { 
 
		
	
		
			
				        _cana . receiveMsg ( can S pace: : MODBUS_DATA_CPU_TO_COMM_MBOX ,  _message ) ; 
 
		
	
		
			
				    if  ( _cana . isNewMessage ( can _s pace: : MODBUS_DATA_CPU_TO_COMM_MBOX ) )  { 
 
		
	
		
			
				        _cana . receiveMsg ( can _s pace: : MODBUS_DATA_CPU_TO_COMM_MBOX ,  _message ) ; 
 
		
	
		
			
				
 
		
	
		
			
				        WEINBUS : : WeinbusTableRegister  reg ;