Grazie mille, si con la parola callback mi riferivo proprio alla ISR
No, la callback è proprio la funzione utente attaccata alla ISR.
Nel codice interno di arduino c'è qualcosa di simile a:
ISR(INT0)
{
int0userFunction();
}
Senza usare attachInterrupt, non c'è costo di chiamata a userFuction.
Il codice sarebbe simile a:
ISR(INT0)
{ // Fotocellula Iniziale
start = micros ( );
}
Solo che devi configurare gli interrupt manipolando i registri interni dell'atmega, non è molto complesso
ma richiede comunque una lettura del datasheet.
Io lascerei tutto così, visto che funziona e che il costo della chiamata a funzione è una costante, più in la ti documenti sulla ISR nuda e cruda e apporti la modifica. Il costo della chimata a micros non puoi eliminarla e comunque visto che non prende parametri e ridotto al minimo indispensabile a restituire un valore sullo stack, in ogni caso non si può fare di meglio. Ora non posso controllare, ma millis() resistuisce unsigned long, micros() forse anche controlla e se il caso modifica il tipo di start e end.
Visto che ci sono, io preferirei calcolare il valore indipendentemente dalla volontà di stamparlo.
Ciao.