Public feed #377746

Vex ultrasonic filte

public c v1 · immutable
Raw Edit
·published 2007-03-02 00:00 UTC
rendered paste body
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;      }    }  }}