Précisions : tant que le courant mesuré reste supérieur au seuil, j'attends (je laisse passer le pic), avec un maximum de 16 mesures de 50 points (soit 800 échantillons en bouche au max).
De cette manière j'évite de passer à la lecture du bit suivant du CV avant que le courant d'ACK ne soit retombé.
Il n'y a pas, dans la norme NMRA de lecture de CV qui donne une réponse contenant tous les bits du CV : il n'y a que des lectures de bits isolé (les bits 0 à 7) puis une demande de vérification de la valeur du CV (OK ou NOK) : donc chaque lecture ne concerne qu'un seul bit.
Donc tu ne risques pas de tomber dans le bit suivant, il faut le demander !
Dans LaBox, sur ESP32, les choses ne se passant pas comme sur les AVR, j'ai testé en long et en large jusqu'à m'apercevoir que la réponse du décodeur (une impulsion de 6ms) ne tombait pas toujours là où on l'attendait. J'ai donc enchainé plusieurs créneaux de lecture du dépassement de seuil et, si le bit est 1, il y a toujours un qui donne une réponse positive (sinon, aucun des créneaux ne trouve ce 1). Donc avec ta méthode, tu risques de louper une réponse, mais tu as certainement une fenêtre de tir assez bonne car les résultats sont assez bon.
Je pense que les réponses des différents décodeurs existants n'ont pas un temps de réponse équivalents.
Si tu testes un Laisdcc, tu peux finir par avoir de bons résultats.
Avec un autre, c'est peut-être différent.
Mais j'avoue que je n'ai pas étudié les autres méthodes des DCC++EX, ou Atanisoft (
https://github.com/atanisoft/ESP32CommandStation et il y en a surement d'autres.