DKWatson:
Two things: you cannot delay for 2 microseconds or 10 microseconds.
The off-the-shelf micros() function has a resolution of 1/256th of about a millisecond, so pick 4, 8 or 12.
Nonsense. delayMicroseconds() has nothing to do with micros().
(rephrasing:)
void delayMicroseconds(unsigned int us)
{
us = calculate_number_of_loops_based_on_F_CPU(us);
__asm__ __volatile__ (
"1: sbiw %0,1" "\n\t" // 2 cycles
"brne 1b" : "=w" (us) : "0" (us) // 2 cycles
);
}