void IC1_ISR() iv IVT_INPUT_CAPTURE_1 ilevel 6 ics ICS_SOFT { unsigned long temp = 0; LATG.f6 = 1; sync = 1; TMR1 = 0; //reset timeout comm. temp = IC1BUF; IC1BUF = 0; if (toogle1 == 0) { ic1_start = temp; toogle1 = 1; } else { // value1 = CalculDelta(temp, ic1_start); // Calcul T2-T1, même si le timer déborde et repart à 0 if (temp<ic1_start) { // théoriquement impossible sauf en cas de débordement value1 = 4294967295-(ic1_start-temp)+1; } else value1 = temp-ic1_start; toogle1 = 0; } debug_toogle++; if (debug_toogle >= 50) { debug_toogle = 0; LATD.f1 = !PORTD.f1; } IC1IF_bit = 0; }