Public feed
#377746
void Handle_EchoPulse_From_Sonar_Device(void){ if (INTCON2bits.INTEDG2) /* rising edge ? */ { /* Yes */ T0CONbits.T0PS0 = 1; /* Change scale to DIV 8 (204us delay)*/ TMR0H = TMR0L = 0; /* reset timer registers */ INTCONbits.TMR0IF = 0; /* make sure int flag is clear */ INTCONbits.TMR0IE = 1; /* Enable TMR0 Int */ INTCON2bits.INTEDG2 = 0; /* trigger of falling edge */ HiResCounter = LowResCounter = 0; } else { INTCON3bits.INT2IE = 0; /* disable rc_dig_int1 for now */ LowResCounter = TMR0L; INTCONbits.TMR0IE = 0; /* disable TMR0 Int */ /* Now apply a filter to data */ if (HiResCounter < 50) { if (fltHiResCounter == HiResCounter) { SonarDataValid = 1; fltCounter = 0; Delta = fltLowResCounter - LowResCounter; if (Delta & 0x80) /* If negative then negate it */ Delta = !Delta; if (Delta > 20) fltCounter++; } else { fltCounter++; } if (fltCounter > 3) { SonarDataValid = 1; fltHiResCounter = HiResCounter; fltLowResCounter = LowResCounter; } } }}