Zeke,

I think you're on the right track. But, a couple changes might help the accuracy.

Let the timer "Free-Run" between each pulse, then at each overflow simply increment a variable and don't reload the timer. That variable then becomes the upper word of a 32-bit timer count, with a resolution of 1us or better (depending on FOSC and prescaler).

Since you are already planning to use interrupts to capture the pulses, you can use the Timer interrupt to increment the variable instead of sitting in a loop doing nothing.

On each pulse, stop the timer, copy the 32-bit result, reset the timer and upper word variable, then turn the timer back on.

Now you've got almost 1/4 second (at highest rate) to calulate and send the results. If you're sitting in a "tight loop" waiting for overflows, it doesn't leave any time to send the results, and you'll end up missing every other beat.

The math is a little harder this way, but it's not that bad if you use a DIV32 routine from the Code Examples forum. (PutMulResult?D)
http://www.picbasic.co.uk/forum/showthread.php?t=24
<br>