Atmega328P Prescaler to Microseconds
The 328P has a higher clock speed


The 328P will run at whatever speed you clock it, up to a maximum that
depends on the supply voltage. Most 328P-based Arduinos are clocked at
16&nbsp;MHz though.


  what math could I use to set my prescaler for measuring microseconds?


You can't. You would have to set the prescaler to 16 if you want the
timer to count microseconds. You can set it to 8 or to 64, but there is
no intermediate setting in between.

Maybe you could leave the prescaler at 8 and count half-microseconds
instead?



Edit: On the 328P, Timer 0 has two control registers, named
TCCR0A and TCCR0B. To set it to normal counting mode at F_CPU/8,
you have to:

TCCR0A = 0;
TCCR0B = _BV(CS01);


If you are programming in plain C, the first line is not needed (but it
won't hurt either), as the initial value of TCCR0A is zero on reset.
If you are using the Arduino core library (and you write setup() and
loop() instead of main()), then you do need this first line, as the
Arduino core configures Timer&nbsp;0 for PWM at 977&nbsp;Hz. But note
that the Arduino core also uses Timer&nbsp;0 for timekeeping
(millis(), micros() and delay()). Thus you may want to use another
timer.

You could switch to Timer&nbsp;2 by replacing every “0” with a “2” on
the register and bit names of the two lines above. Then you would also
replace every occurrence of TCNT0 in the code with TCNT2.