Interrupt: Need to keep track of time spent in routine or ... ?

I was wondering, why the need for an interrupt? If I understand the program, you are testing a number of devices, and then controlling them (on/off) based on timing. If so, why not place digitalreads() in the loop(), and use millis() for timing of each? Then your program becomes a simple test, then turn on/off - no interrupts needed. Unless you are doing a huge amount of processing, a digitalread runs in about 4 microseconds (~60 cycles), so you could do a hundred or so every millisecond, including processing overhead - plenty of time to test a lot of devices.