Hi,
Generally speaking, use as much resolution as you can and then manipulate your results after capturing. The reason for this is that you say you want 256 units or better. If you use as much resolution as you can then it's easy to tweak the result to whatever is needed later on - instead of changing the frequency again. The obvious drawback is that it needs calculations done to it aftwerwards which, depending on the application, may or may not be an issue.

If you want 500us divided into a byte variable, ie 0-255, then each bit is "worth" 1.953125us which equals a frequency of 512kHz so clocking TMR1 with 512kHz will give a TMR1 value of 255 for 500us.

TMR1 is 16bits wide, clocking it with Fosc/4 (using your 8MHz oscillator) and a prescaler of 1:1 means it overflows after 65536/2000000=32.768ms so it's MORE than enough for your 500us period. It'll give you a resolution of 1000 units since each timer tick is 0.5us.

Again, the drawback here would be that if you really need 256 units then it'll be a "tricky" calculation since 255 doesn't divide evenly into 1000 but I think TimerValue**16712 should get you close.

Too bad you can't use capture mode, it would have been ideal. Now you're going to have to use IOC since that's what's available on GP3 and then account for the interrupt latency when you grab the timer value.

Only my $0.02 of course.

/Henrik.