|
|
|
|
@ -38,37 +38,37 @@ void modbusGet(void) {
|
|
|
|
|
//;
|
|
|
|
|
//uint16_t test;
|
|
|
|
|
//modbusExchangeRegisters(&test,0,1);
|
|
|
|
|
modbusExchangeRegisters((void *)outStates,0,NUMBER_OF_INPUT_BYTES/2);
|
|
|
|
|
modbusExchangeRegisters((void *)outStates,0,1);
|
|
|
|
|
break;
|
|
|
|
|
case fcReadInputRegisters:
|
|
|
|
|
if(modbusRequestedAddress() < 100)
|
|
|
|
|
modbusExchangeRegisters((void *)inStates,0,NUMBER_OF_INPUT_BYTES/2);
|
|
|
|
|
modbusExchangeRegisters((void *)inStates,0,nrOfInputs/16);
|
|
|
|
|
else if(modbusRequestedAddress() < 200)
|
|
|
|
|
modbusExchangeRegisters((void *)inStatesBothEdges,100,NUMBER_OF_INPUT_BYTES/2);
|
|
|
|
|
modbusExchangeRegisters((void *)inStatesBothEdges,100,nrOfInputs/16);
|
|
|
|
|
else if(modbusRequestedAddress() < 300)
|
|
|
|
|
modbusExchangeRegisters((void *)inStatesFallingEdge,200,NUMBER_OF_INPUT_BYTES/2);
|
|
|
|
|
modbusExchangeRegisters((void *)inStatesFallingEdge,200,nrOfInputs/16);
|
|
|
|
|
else if(modbusRequestedAddress() < 400)
|
|
|
|
|
modbusExchangeRegisters((void *)inStatesRisingEdge,300,NUMBER_OF_INPUT_BYTES/2);
|
|
|
|
|
modbusExchangeRegisters((void *)inStatesRisingEdge,300,nrOfInputs/16);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case fcReadInputStatus:
|
|
|
|
|
if(modbusRequestedAddress() < 100)
|
|
|
|
|
modbusExchangeBits(inStates,0,NUMBER_OF_INPUT_BYTES*8);
|
|
|
|
|
modbusExchangeBits(inStates,0,nrOfInputs);
|
|
|
|
|
else if(modbusRequestedAddress() < 200)
|
|
|
|
|
modbusExchangeBits(inStatesBothEdges,100,NUMBER_OF_INPUT_BYTES*8);
|
|
|
|
|
modbusExchangeBits(inStatesBothEdges,100,nrOfInputs);
|
|
|
|
|
else if(modbusRequestedAddress() < 300)
|
|
|
|
|
modbusExchangeBits(inStatesFallingEdge,200,NUMBER_OF_INPUT_BYTES*8);
|
|
|
|
|
modbusExchangeBits(inStatesFallingEdge,200,nrOfInputs);
|
|
|
|
|
else if(modbusRequestedAddress() < 400)
|
|
|
|
|
modbusExchangeBits(inStatesRisingEdge,300,NUMBER_OF_INPUT_BYTES*8);
|
|
|
|
|
modbusExchangeBits(inStatesRisingEdge,300,nrOfInputs);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case fcForceMultipleCoils:
|
|
|
|
|
case fcForceSingleCoil:
|
|
|
|
|
case fcReadCoilStatus:
|
|
|
|
|
if(modbusRequestedAddress() < 100)
|
|
|
|
|
modbusExchangeBits(outStates,0,NUMBER_OF_INPUT_BYTES*8);
|
|
|
|
|
modbusExchangeBits(outStates,0,nrOfOutputs);
|
|
|
|
|
else if(modbusRequestedAddress() < 200)
|
|
|
|
|
modbusExchangeBits(outStatesBlinking,100,NUMBER_OF_INPUT_BYTES*8);
|
|
|
|
|
modbusExchangeBits(outStatesBlinking,100,nrOfOutputs);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
@ -84,7 +84,6 @@ int main()
|
|
|
|
|
|
|
|
|
|
uart_init();
|
|
|
|
|
|
|
|
|
|
ioHelperInitBuffer();
|
|
|
|
|
ioHelperIoConf();
|
|
|
|
|
timer0_init();// Timer0 millis engine init
|
|
|
|
|
|
|
|
|
|
@ -109,10 +108,7 @@ int main()
|
|
|
|
|
|
|
|
|
|
// Toggle all outs which are set to blinking
|
|
|
|
|
if(millis() - timer_blink_outs > 500){
|
|
|
|
|
outStates[0] ^= outStatesBlinking[0];
|
|
|
|
|
outStates[1] ^= outStatesBlinking[1];
|
|
|
|
|
outStates[2] ^= outStatesBlinking[2];
|
|
|
|
|
outStates[2] ^= outStatesBlinking[3];
|
|
|
|
|
ioHelperBlinkOuts();
|
|
|
|
|
timer_blink_outs = millis();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|