What Biff (our electrical mentor) said.
The estimated
maximum rate is 700 Hz. It's a sprocket (not a gear).
I was asking in the programming forum because I'm pretty sure it's programming.
We managed to get it working for a bit (turned out I had forgotten to set the "use prescalar" bit on TMR0

). But when I restored the code that revealed this, it ceased to count at all. (PWM value ~120.)
The basic idea of the code is that at the end of the slow loop, it starts TMR0 and enables the counters. When TMR0 goes off, it disables the counters and the timer, then copies the counts and clears them.
I'm using 0 printf()'s.
I'm pretty sure it's not the sizes because it's always 0 (not sometimes 1 or something), and I also used bytes 1-3 to display a different part of the count.