Es diferencia entre el valor teórico y el valor que has medido viene determinado por:
- el tiempo que tarda el AVR en invocar a la rutina para leer el tiempo.
- el tiempo que tarda el código digitalWrite hasta que realmente se pone el pin a 1 o a 0.
- error de cuantización del contador de micros. Es decir, tu mejor resolución es 1 micro segundo.
Por otro lado, las rutinas digitalWrite y microseconds son deterministas, e.d. constantes. Por eso puedes añadir ese offset, que realmente debería ser un offset en vez de una constante por la que multiplicas.
Resumiendo:
- cuando la constante RC sea inferior a 1us o de unos poco microsegundos, el error será mayúsculo.
- tendrías que calibrar cuanto tiempo se tarda, desde que invocas a microseconds y se pone el pin a 1 y restar este valor al tiempo que estás midiendo a modo de offset.