I enable the interrupts in start_timer (). I copied the code to this post in the "wrong" state when I was debugging it.
With it enabled, I still get the same kind of behavior. It is as if the Arduino were resetting at some point during the execution of the "reset_cap" function, since it seems like the setup () code is executing again. I repeatedly see "in setup_comp" and "leaving setup_comp", followed by "in reset_cap", but I don't see "Timer Started...." nor "Waiting". I will be checking the signals with an oscilloscope tomorrow when I have some time. In the meantime, if anyone sees something blatantly wrong with the code, please let me know.
Thanks!