@ -169,24 +169,43 @@ void Periphery::processDigitalOutput(){
 
		
	
		
			
				
 
		
	
		
			
				# pragma CODE_SECTION("ramfuncs");  
		
	
		
			
				void  Periphery : : sendModbusDataToCPU ( ) {  
		
	
		
			
				    _message . mdl . all  =  0 ;    // TODO delete maybe?
 
 
		
	
		
			
				    _message . mdh . all  =  0 ; 
 
		
	
		
			
				
 
		
	
		
			
				    WEINBUS : : WeinbusTableRegister  reg ; 
 
		
	
		
			
				    reg  =  modbusRTU . dataHandler . outputRegisters . get_register_cursor ( _modbusRegCounter ) ; 
 
		
	
		
			
				
 
		
	
		
			
				    if ( modbusRTU . dataHandler . outputRegisters . address_range ( reg . get_address ( ) ) ) { 
 
		
	
		
			
				        _message . mdl . all  =  reg . get_address ( ) ; 
 
		
	
		
			
				        reg . read ( _message . mdh . all ) ; 
 
		
	
		
			
				    _message . mdl . all  =  reg . get_address ( ) ; 
 
		
	
		
			
				    switch ( reg . get_type ( ) ) { 
 
		
	
		
			
				        case  WEINBUS : : DATA_UINT16 : 
 
		
	
		
			
				        { 
 
		
	
		
			
				            reg . read ( reinterpret_cast < uint16_t & > ( _message . mdh . all ) ) ; 
 
		
	
		
			
				            break ; 
 
		
	
		
			
				        } 
 
		
	
		
			
				        case  WEINBUS : : DATA_INT16 : 
 
		
	
		
			
				        { 
 
		
	
		
			
				            reg . read ( reinterpret_cast < int16_t & > ( _message . mdh . all ) ) ; 
 
		
	
		
			
				            break ; 
 
		
	
		
			
				        } 
 
		
	
		
			
				        case  WEINBUS : : DATA_UINT32 : 
 
		
	
		
			
				        { 
 
		
	
		
			
				            reg . read ( reinterpret_cast < uint32_t & > ( _message . mdh . all ) ) ; 
 
		
	
		
			
				            break ; 
 
		
	
		
			
				        } 
 
		
	
		
			
				        case  WEINBUS : : DATA_INT32 : 
 
		
	
		
			
				        { 
 
		
	
		
			
				            reg . read ( reinterpret_cast < int32_t & > ( _message . mdh . all ) ) ; 
 
		
	
		
			
				            break ; 
 
		
	
		
			
				        } 
 
		
	
		
			
				        case  WEINBUS : : DATA_FLOAT : 
 
		
	
		
			
				        { 
 
		
	
		
			
				            reg . read ( reinterpret_cast < float & > ( _message . mdh . all ) ) ; 
 
		
	
		
			
				            break ; 
 
		
	
		
			
				        } 
 
		
	
		
			
				        default : { } 
 
		
	
		
			
				    } 
 
		
	
		
			
				    else  { 
 
		
	
		
			
				        _modbusRegCounter  =  0 ; 
 
		
	
		
			
				        reg  =  modbusRTU . dataHandler . outputRegisters . get_register_cursor ( _modbusRegCounter ) ; 
 
		
	
		
			
				
 
		
	
		
			
				        _message . mdl . all  =  reg . get_address ( ) ; 
 
		
	
		
			
				        reg . read ( _message . mdh . all ) ; 
 
		
	
		
			
				    } 
 
		
	
		
			
				    _modbusRegCounter + + ; 
 
		
	
		
			
				    if  ( _modbusRegCounter  > =  modbusRTU . dataHandler . outputRegisters . get_quantity ( ) ) { 
 
		
	
		
			
				        _modbusRegCounter  =  0 ; 
 
		
	
		
			
				    } 
 
		
	
		
			
				
 
		
	
		
			
				    _cana . transmitMsg ( can_space : : MODBUS_DATA_COMM_TO_CPU_MBOX ,  _message ) ; 
 
		
	
		
			
				}  
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -200,7 +219,8 @@ void Periphery::receiveCpuModbusData(){
 
		
	
		
			
				        WEINBUS : : WeinbusTableRegister  reg ; 
 
		
	
		
			
				
 
		
	
		
			
				        uint32_t  addr  =  _message . mdl . all ; 
 
		
	
		
			
				        reg  =  modbusRTU . dataHandler . inputRegisters . get_register_cursor ( addr  -  modbusRTU . dataHandler . inputRegisters . get_start_address ( ) ) ; 
 
		
	
		
			
				        if ( modbusRTU . dataHandler . inputRegisters . is_address_exists ( addr ) )  return ; 
 
		
	
		
			
				        reg  =  modbusRTU . dataHandler . inputRegisters . get_register_address ( addr ) ; 
 
		
	
		
			
				        reg . write_data ( _message . mdh . all ) ; 
 
		
	
		
			
				    } 
 
		
	
		
			
				}