Try to slow the interrupt interval. It is possible that due to several if working under isr_timer() , the main loop may be blocked. I have a suspicious suspicion that you are trying to do too much!
Be careful when trying to perform an interruption that is too complex at too high a frequency, or the processor will never be able to enter the main loop and your program will close. Link
Saying this and checking that your main loop is actually running, why not add a simple debug file to the bottom of the main loop() to enable the flash drive on board.
int onBoardLED = 13; void setup() { pinMode(onBoardLED, OUTPUT);
At least then you will find out if the main loop() is actually executing. Obviously, it starts once when you receive one SMS, but in fact, there is no other way to tell him the assumption after that ...
If everything looks good, try adding a few extra flags around the place to see what is being done and what is not. Other than this offer, I cannot find anything else, but it is interesting to know! Good luck.
Update
Just dug this link from my bookmarks. You may find this helpful. - Nick Gammon - Interrupts
source share