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!