Comment débuter un décodage au bon moment?

Bonjour,

J'aurai bien besoin d'un coup de main car je bloque sur un problème :
J'ai une trame (de télécommande 433) encodé en manchester diff. (1 pulse long == 0, 2 pulse court == 1).

Comme on peut le voir ici, j'ai utilisé une broche en sortie pour débug, et c'est bon (ligne 1 : signal, ligne 2 : débug) :

Pour ça, j'utilise un "attachInterrupt (x,y,CHANGE)".

Mon problème est que je ne sais pas comment faire pour démarrer mon décodage au bon moment, sachant que ma trame commence comme ça :
-une suite de sept 0x00 puis (j'ai laissé le dernier 0x00 sur le screenshot):

J'espère avoir été assez clair dans l'explication de mon problème.

Voici ma routine de décodage actuelle :

/**
   ISR RF frame decoding routine
*/

void isr_decoding_routine(void) {

  relative_time = micros() - microseconds;

  if (bit_complet) {
    bit_complet = true;
  }
  else {
    bit_complet = false;

    if (last == true && relative_time < 45 && relative_time > 250) {
      last = false;
    }
    if (relative_time < 150 && last == true) {
      digitalWrite(DEBUG, HIGH);
      //bitWrite(rf_data[bits_counter / 8], (7 - bits_counter % 8), 1);
      rf_data[bits_counter / 8] |= 1 << (bits_counter & 7);
      last = false;
    }
    else {
      last = true;
    }
    if (relative_time > 150) {
      digitalWrite(DEBUG, LOW);
      //bitWrite(rf_data[bits_counter / 8], (7 - bits_counter % 8), 0);
      rf_data[bits_counter / 8] &= ~(1 << (bits_counter & 7));
      last = false;
    }
    microseconds = micros();
    if (++bits_counter == 192) { //192
      data_decoded = true;
      bits_counter = 0;
      return;
    }
  }
}

Merci!

J'ai omis de précisé que le début de message que je souhaite exploiter est, comme sur le 2ème screenshot, 0x19.

Merci !

il vous faut maintenir un petit buffer de 7 octets - les 7 derniers reçus - et voir s'ils correspondent au signal de début et si oui mettre un drapeau qui vous dit que vous avez alors un message entrant

Bonjour pepe !

Merci pour tes remarques concernant mon code, je vais corriger ça.

Et OK pour compter 64 bits nuls avant de démarrer à "retenir" mes octets de données.

Je vais travailler là dessus et vous tiens au courant.

PS: Ca risque de me prendre du temps, mais je reviendrai donner des news ou à défaut, demander une nouvelle aide !