Articulo mencionado por jremington al que he llegado desde tu cita: HC-SR04 Value variations over time.
Verdaderamente interesante.
Para nada soy un experto.
Estudie fp electronica hace unos 30 años, ahi es nada. Soy autodidacta, y en algun momento lei sobre los timers integrados.
Con lo que tenia, de verdad que me servia, pero ya me has tocado la fibra.
Con la primera lectura ya me di cuenta que no hablamos de las entradas de interrupcion.
A por este tema. Ya comentare.
Gracias
De hecho ya uso algo sobre esto en mi código:
/////// RELOJ
ISR(TIMER1_COMPA_vect) // interrupción por igualdade de comparación en TIMER1
{
//digitalWrite(LED_BUILTIN, digitalRead(LED_BUILTIN) ^ 1); //invierte estado del LED
LEER_EX1 = !LEER_EX1;
LEER_EX2 = !LEER_EX2;
}
Setup
TCCR1A = 0; // El registro de control A queda todo en 0
TCCR1B = 0; //limpia registrador
TCNT1 = 0; //Inicializa el temporizador
OCR1A = 0x3D08; // carga el registrador de comparación: 16MHz/1024/1Hz -1 = 15624 = 0X3D08
TCCR1B |= (1 << WGM12)|(1<<CS10)|(1 << CS12); // modo CTC, prescaler de 1024: CS12 = 1 e CS10 = 1
TIMSK1 |= (1 << OCIE1A); // habilita interrupción por igualdade de comparación