GolamMostafa:
3. If you want that the MCU should resume MLP execution from top of loop() function (at label ML1), you have to manipulate the stack space to force the MCU to take ML1 as the return address rather than ML4. Manipulation of stack is easy when programming in assembly; but, I have no idea how difficlt it would be in high level environment.
That’s ridiculous. If you want the non-ISR code to do something different based on conditions detected in the ISR, then you set a flag which will be picked up by the main code. The main code should monitor the flag on every pass through loop() and act accordingly.
The flag needs to be of at least file-global scope and declared volatile.