untitled text 26:5: volatile boolean process_it;
untitled text 26:40: process_it = false;
untitled text 26:81: if (process_it)
untitled text 26:87: process_it = false;
Please post both sketches, or smaller examples that show the problem. There is not going to be discovered a problem with delay(), normally, in regular code. More likely a logic error.
And you could take a few more words to say what all is going on and how you are doing it. And what you are doing.
We don't have all night to read your code to figure it out.
In the code you did post, I don't see process_it being set true. Is it some kind of magic variable or... did you not actually post code you are running?
You kinda have to come more than halfway for us to meet you.
So the Load test() is the function that has the delays that don't work.
Could it be that calling the function during the interrup is the cause?
So the master sends the byte to initiate the the transfer, the slave receives the byte, reads voltage and runs a load test and returns the value that needs to be sent back to the master.
The transfer of data between the master and slave works fine, it's just the delays in the LoadTest() that don't seem to work
Interrupts are disabled inside of any ISR. The delay function depends on millis() and millis() depends on interrupts (as do Serial prints). So millis() can not update in an ISR so delay won't work. If you need serial prints set a flag in the ISR and, in loop(), if the flag is set do the print and clear the flag.
Any ISR should take the least time possible. Do the high priority stuff in the ISR and, like above, use a flag to signal the loop() function to do the lower priority stuff.