void high_isr(void)
  {
  // High priority CAN interrupt
  if ((RXB0CONbits.RXFUL)&&(vehicle_fn_poll0 != NULL)) vehicle_fn_poll0();
  if ((RXB1CONbits.RXFUL)&&(vehicle_fn_poll1 != NULL)) vehicle_fn_poll1();
  PIR3=0;     // Clear Interrupt flags
  }
void high_isr(void)
  {
  // High priority CAN interrupt
  if ((RXB0CONbits.RXFUL)&&(vehicle_fn_poll0 != NULL))
    {
    can_id = ((unsigned int)RXB0SIDL >>5)
           + ((unsigned int)RXB0SIDH <<3);
    can_filter = RXB0CON & 0x01;
    can_datalength = RXB0DLC & 0x0F; // number of received bytes
    can_databuffer[0] = RXB0D0;
    can_databuffer[1] = RXB0D1;
    can_databuffer[2] = RXB0D2;
    can_databuffer[3] = RXB0D3;
    can_databuffer[4] = RXB0D4;
    can_databuffer[5] = RXB0D5;
    can_databuffer[6] = RXB0D6;
    can_databuffer[7] = RXB0D7;
    RXB0CONbits.RXFUL = 0; // All bytes read, Clear flag
    vehicle_fn_poll0();
    }