How to read TTL sensor every exact time interval?

RandallR:
and his calculations will totally stop if interrupted

If his calculations get interrupted in the middle of accessing ISRValue (which is entirely possible since it is a 16 bit variable), then the value that gets used in his calculations will be completely invalid, and thus result in an invalid calculation. The canCheck variable does nothing to prevent this.