Hello @Sam_ECU ,
Indeed the LPTMR Set Compare Value is changing the internal compare register for the LPTMR. When you use this block, this will stop the LPTMR, update the Compare value and then Start the LPTMR counter again.
Now, you are right, I've tried the example out of the box, and seems to not work as in the description. But the issue here is that initially, the model has been developed in R2016a I think, and now I've tried in R2018a and the code was generated in a different order. See below. Basically, the new compare value as updated before computing the new one.

After changing the block's priorities, on how the Simulink should generate value, the code has been generated in the right order, and the model works as expected.

The Read compare value should work the same either if you call the block inside the interrupt or not. However, if you use this block inside the interrupt it matters if the generated code reads the value before or after you call the update to compare value.
I've understood, that Channel 0 for the LPTMR sets the Timer within Simulink.
Not quite. The LPIT channel 0 is used for the Model timer. LPIT is a different timer than LPTMR. LPIT has up to 4 channels, while LPTMR has only one channel, the one in use.
For the FreeMaster issue I cannot reproduce, can you send us the project, please?
Hope this helps,
Marius