Hi Joe,
First, just to be sure, are you squaring-up the tone with a input buffer with hysteresis (like a 7414 or a comparator)? I found the input capture to be unreliable for any signal with a slow rise/fall time.
OK, assuming you have a nice square wave that represents your tone, I would initialize the timer as follows:
1) Set the counter to free-run with its maximum (default 65,536) modulus,
2) Set the prescaler of the timer such that it overflows no faster than half of 67 hertz,
3) Set the input capture to trigger on either the rising or falling edge (it will not matter which), and
4) create a 16-bit variable which will be the "previous-capture time".
I would then have an ISR that:
1) Reads the captured-time from the capture register,
2) subtract the "previous-capture time" from it, to get a 16-bit "delta time", and
3) save the captured-time as the new "previous-capture time".
I would then, outside of the ISR, lookup the delta-time in a table to find the frequency. If you wished to save code space rather than time, you could simply take the reciprocal of the delta-time to calculate the frequency.
A table could just be a table of reciprocals, but if I were to use a table, I would put minimum and maximum delta-time values, with gaps in between, to reject out-of-bound frequencies.
Also, you may want to wait for multiple time samples to be sure they are consistent. I would not average them, as that would make the system susceptible to noise. What I would do it make sure some number of them, like 4 out of 5, are within the same "range" to qualify as a valid frequency.