Bon, chacun y va de son avis...
Une moyenne sur plusieurs battements est une bonne façon d'améliorer la précision, et sur un nombre pair pour répondre au critère initial d'un battement sur deux. Mais on doit déjà pouvoir faire une mesure précise sur 2 alternances. La programmation est meilleure si on utilise bien les périphériques du processeur, et sur les PIC, on peut faire des mesures de temps sans (quasiment) aucune ligne de code. Je suppose que c'est identique sur beaucoup de processeurs, mais je connais surtout les PIC(32) que j'utilise tous les jours, et je découvre de nouvelles façons tous les jours (ou presque) aussi. En ce moment, je refais une application de démodulation radio (pro), que j'avais faite il y a quelques mois avec l'aide d'un FPGA, cette fois juste avec un PIC32MZ, et c'est impressionnant ce qu'on peut faire avec les modules DMA bien utilisés. Car dans mon application, le moindre jitter est préjudiciable au bon fonctionnement des filtres, des DAC et ADC, et le traitement sous interruption n'est pas assez stable (même avec une horloge à 200MHz).
Et tout en C. Il ne me viendrait jamais à l'idée de conseiller de programmer une telle application (celle du post) en assembleur, cela n'a absolument aucun intérêt. Surtout que l'assembleur de ces processeurs est imbuvable. Les compilateurs sont très efficaces, et pour faire mieux en assembleur, il faut s'accrocher !
Bon, c'est vrai que les programmes Arduino que j'ai vus sont souvent mal faits et totalement inefficaces, avec des boucles d'attente partout (à bannir totalement). Mais ce n'est pas une fatalité.