| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -1,7 +1,7 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#include "Periphery.h"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				Periphery::Periphery() : 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb(canSpace::CANA),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana(canSpace::CANA),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _digitalIO(),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _zone6_ptr(reinterpret_cast<Uint16*>(0x100000)),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _scib(ScibRegs),
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -23,25 +23,25 @@ Periphery::Periphery() :
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Periphery::config(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //--------------------------------------Init CAN interface----------------------------------------------------------
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.initGpio();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.config();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.initGpio();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.config();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Data Frame MBOX
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.configRxMBox(canSpace::MODBUS_SETTINGS_MBOX, canSpace::MsgID(0x0), canSpace::MsgCtrlReg(0x6));   // Modbus settings
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.configTxMBox(canSpace::MODBUS_DATA_COMM_TO_CPU_MBOX, canSpace::MsgID(0x29), canSpace::MsgCtrlReg(0x28)); // Send Modbus data to CPU
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.configRxMBox(canSpace::MODBUS_DATA_CPU_TO_COMM_MBOX, canSpace::MsgID(0x28), canSpace::MsgCtrlReg(0x8));  // Receive Modbus data from CPU
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.configTxMBox(canSpace::DIGITAL_INPUT_MBOX, canSpace::MsgID(0x30), canSpace::MsgCtrlReg(0x2));    // Receive DI
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.configRxMBox(canSpace::DIGITAL_OUTPUT_MBOX, canSpace::MsgID(0x31), canSpace::MsgCtrlReg(0x2));   // Send DO
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.configRxMBox(canSpace::MODBUS_SETTINGS_MBOX, canSpace::MsgID(0x0), canSpace::MsgCtrlReg(0x6));   // Modbus settings
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.configTxMBox(canSpace::MODBUS_DATA_COMM_TO_CPU_MBOX, canSpace::MsgID(0x29), canSpace::MsgCtrlReg(0x28)); // Send Modbus data to CPU
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.configRxMBox(canSpace::MODBUS_DATA_CPU_TO_COMM_MBOX, canSpace::MsgID(0x28), canSpace::MsgCtrlReg(0x8));  // Receive Modbus data from CPU
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.configTxMBox(canSpace::DIGITAL_INPUT_MBOX, canSpace::MsgID(0x30), canSpace::MsgCtrlReg(0x2));    // Receive DI
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.configRxMBox(canSpace::DIGITAL_OUTPUT_MBOX, canSpace::MsgID(0x31), canSpace::MsgCtrlReg(0x2));   // Send DO
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Remote frame MBOX
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // _canb.configRxMBox(canSpace::MODBUS_SETTINGS_MBOX, canSpace::MsgID(0x0), canSpace::MsgCtrlReg(0x10));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.configTxMBox(canSpace::COMM_VERSION_MBOX, canSpace::MsgID(0x1, false, true), canSpace::MsgCtrlReg(0x4));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // _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));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.enableTimeOutControl(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.setTimeOutValue(canSpace::MODBUS_SETTINGS_MBOX, 1000);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.enableTimeOutControl(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.setTimeOutValue(canSpace::MODBUS_SETTINGS_MBOX, 1000);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // Interrupts
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.configSystemIsr(canSpace::I0EN_ENABLE |
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.configSystemIsr(canSpace::I0EN_ENABLE |
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                          canSpace::EPIM_ENABLE | canSpace::WLIM_ENABLE | canSpace::AAIM_ENABLE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -84,7 +84,7 @@ void Periphery::updateVersionFPGA(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _softVersion.CPLD = getVersionFPGA() & 0x3FF;   // no more than 1023. (9.9.9) should be limit
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _message.mdl.word.LOW_WORD = _softVersion.DSP;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _message.mdl.word.HI_WORD = _softVersion.CPLD;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.updateTXMessage(canSpace::COMM_VERSION_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.updateTXMessage(canSpace::COMM_VERSION_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -107,8 +107,8 @@ void Periphery::initModbusTable(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Periphery::receiveModbusParameters(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (_canb.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX)) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _canb.receiveMsg(canSpace::MODBUS_SETTINGS_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (_cana.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX)) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _cana.receiveMsg(canSpace::MODBUS_SETTINGS_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        MODBUSRTU::modbusConfiguration.node_id = _message.mdl.byte.BYTE0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        MODBUSRTU::modbusConfiguration.config.lenght = static_cast<DSP28335::SCICharLenght>(_message.mdl.byte.BYTE1);
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -123,32 +123,32 @@ void Periphery::receiveModbusParameters(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Periphery::getModbusConfiguration(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.resetTimeStampCounter();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.resetTimeStampCounter();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    bool requestIsSent = false;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    while(!_canb.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if(_canb.isTimeOut(canSpace::MODBUS_SETTINGS_MBOX)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    while(!_cana.isNewMessage(canSpace::MODBUS_SETTINGS_MBOX)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if(_cana.isTimeOut(canSpace::MODBUS_SETTINGS_MBOX)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (!requestIsSent) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _canb.resetTimeStampCounter();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _canb.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _cana.resetTimeStampCounter();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _cana.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _message.mdl.word.LOW_WORD = _softVersion.DSP;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _message.mdl.word.HI_WORD = _softVersion.CPLD;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _canb.transmitMsg(canSpace::COMM_VERSION_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _cana.transmitMsg(canSpace::COMM_VERSION_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                requestIsSent = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            else{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _canb.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _canb.disableTimeOutControl(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _cana.clearTimeOutFlag(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _cana.disableTimeOutControl(canSpace::MODBUS_SETTINGS_MBOX);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                _error = true;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                return;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.receiveMsg(canSpace::MODBUS_SETTINGS_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.receiveMsg(canSpace::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 +163,13 @@ void Periphery::getModbusConfiguration(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Periphery::processDigitalInput(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Uint16 data = 0;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _digitalIO.readDigitalIO(data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.transmitMsg(canSpace::DIGITAL_INPUT_MBOX, (data));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.transmitMsg(canSpace::DIGITAL_INPUT_MBOX, (data));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Periphery::processDigitalOutput(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(_canb.isNewMessage(canSpace::DIGITAL_OUTPUT_MBOX)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _canb.receiveMsg(canSpace::DIGITAL_OUTPUT_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if(_cana.isNewMessage(canSpace::DIGITAL_OUTPUT_MBOX)){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _cana.receiveMsg(canSpace::DIGITAL_OUTPUT_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        Uint16 data = _message.mdl.word.LOW_WORD;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _digitalIO.writeDigitalIO(data);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -199,13 +199,13 @@ void Periphery::sendModbusDataToCPU(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _modbusRegCounter++;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _canb.transmitMsg(canSpace::MODBUS_DATA_COMM_TO_CPU_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    _cana.transmitMsg(canSpace::MODBUS_DATA_COMM_TO_CPU_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				void Periphery::receiveCpuModbusData(){
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (_canb.isNewMessage(canSpace::MODBUS_DATA_CPU_TO_COMM_MBOX)) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _canb.receiveMsg(canSpace::MODBUS_DATA_CPU_TO_COMM_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if (_cana.isNewMessage(canSpace::MODBUS_DATA_CPU_TO_COMM_MBOX)) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        _cana.receiveMsg(canSpace::MODBUS_DATA_CPU_TO_COMM_MBOX, _message);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        WEINBUS::WeinbusTableRegister reg;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |