CAN send error - CAN bus shield with Arduino

I am using a CAN bus shield which uses MCP2515 CAN controller and respective CAN driver which i downloaded from internet.

when i continuously send CAN messages, i see TEC incrementing and finally goes to bus off state. But somehow the recovery happens automatically. I also receive messages from a product .

I show the code. I have serial routing portion which i have conveniently removed just for the code to look more readable for others in the forum.

void setup()
{

START_INIT:
CAN_OK = CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k

}

attachInterrupt(0, Receive_CAN, LOW);
Timer1.initialize(10000);
Timer1.attachInterrupt( TimerIsr_10 );

}

void loop()
{

}

void TimerIsr_10()
{
if(CAN.checkError())
{
Serial.println(":");
}

CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
if(0==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x2C6,0,6,HALMO_CANHS_R_01_2C6);//20
CAN.sendMsgBuf(0x3F7,0,3,MMI_AT_CANHS_RNr_01_3F7);//60
Msg_10_MilliSec_Counter++;
}
else if(1==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x217,0,7,ECM_CANHS_R_03_217);//20
CAN.sendMsgBuf(0x5de, 0, 8, MMI_BCM_CANHS_R_01_5DE);
Msg_10_MilliSec_Counter++;
}
else if(2==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x2C6,0,6,HALMO_CANHS_R_01_2C6);//20
CAN.sendMsgBuf(0x350, 0, 8, BCM_CANHS_R_04_350);//100
Msg_10_MilliSec_Counter++;
}
else if(3==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x217,0,7,ECM_CANHS_R_03_217);//20
CAN.sendMsgBuf(0x653, 0, 4, AIRBAG_CANHS_R_01_653);
Msg_10_MilliSec_Counter++;
}
else if(4==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x2C6,0,6,HALMO_CANHS_R_01_2C6);//20
CAN.sendMsgBuf(0x5D7,0,7,BRAKE_CANHS_R_01_5D7);
Msg_10_MilliSec_Counter++;
}
else if(5==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x217,0,7,ECM_CANHS_R_03_217);//20
CAN.sendMsgBuf(0x671,0,1,MMI_EMM_CANHS_R_01_671);
Msg_10_MilliSec_Counter++;
CAN.sendMsgBuf(0x3F7,0,3,MMI_AT_CANHS_RNr_01_3F7);//60
}
else if(6==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x2C6,0,6,HALMO_CANHS_R_01_2C6);//20
CAN.sendMsgBuf(0x62B,0,2,HEPS_CANHS_R_01_62B);
Msg_10_MilliSec_Counter++;
}
else if(7==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x217,0,7,ECM_CANHS_R_03_217);//20
CAN.sendMsgBuf(0x5DA,0,8,ECM_CANHS_RnR_02_5DA);
Msg_10_MilliSec_Counter++;
}
else if(8==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x2C6,0,6,HALMO_CANHS_R_01_2C6);//20
CAN.sendMsgBuf(0x666,0,4,MMI_BRAKE_CANHS_RNr_01_666);
Msg_10_MilliSec_Counter++;
}
else if(9==Msg_10_MilliSec_Counter)
{
CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
CAN.sendMsgBuf(0x217,0,7,ECM_CANHS_R_03_217);//20
CAN.sendMsgBuf(0x66A,0,8,MMI_ECM_CANHS_RNr_01_66A);
Msg_10_MilliSec_Counter=0;
}
Msg_10_MilliSec_ToSerialPending=1;
}

void Receive_CAN()
{
int val;

CAN.readMsgBuf(&RecvMsgLen1,Recvbuf1);
RecvMsgId1 = CAN.getCanId();
}

Arduino Mega2560 & Seeduino CAN bus shield

thanks
jis

void TimerIsr_10()
{
  if(CAN.checkError())
  {
    Serial.println(":");
  }

In an interrupt handler? You're kidding, right?

   CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
   if(0==Msg_10_MilliSec_Counter)
   {
                CAN.sendMsgBuf(0x186,0,7,TORQUE_ECM_CANHS_RNr_01_186);
      CAN.sendMsgBuf(0x2C6,0,6,HALMO_CANHS_R_01_2C6);//20
                CAN.sendMsgBuf(0x3F7,0,3,MMI_AT_CANHS_RNr_01_3F7);//60

In an interrupt handler? You're kidding, right?