Hi,
I am trying to improve my canbus knowledge but I have a question for canbus object number.
I want to use only 0x180 - 0x18F , 0x280 - 0x28F, 0x380 - 0x38F, 0x480 - 0x48F
My problem is;
For 0x180 only one time interrupt calls and second one never
For 0x280 only one time interrupt calls and second one never
For 0x380 only one time interrupt calls and second one never
For each 0x480 always interrupt calls until 0x48F message.
Why my code acted like this?
Thanks in advance
my object identifier code is
setCANMSG.ui32MsgID = 0x180; setCANMSG.ui32MsgIDMask = 0xFF0; setCANMSG.ui32Flags= (MSG_OBJ_RX_INT_ENABLE|MSG_OBJ_USE_ID_FILTER); setCANMSG.ui32MsgLen = 8; ROM_CANMessageSet(BASE_CANBUS,5,&setCANMSG,MSG_OBJ_TYPE_RX); setCANMSG.ui32MsgID = 0x280; ROM_CANMessageSet(BASE_CANBUS,6,&setCANMSG,MSG_OBJ_TYPE_RX); setCANMSG.ui32MsgID = 0x380; ROM_CANMessageSet(BASE_CANBUS,7,&setCANMSG,MSG_OBJ_TYPE_RX); setCANMSG.ui32MsgID = 0x480; ROM_CANMessageSet(BASE_CANBUS,8,&setCANMSG,MSG_OBJ_TYPE_RX);
and my interrupt handler code is below;
tCANMsgObject canIntObj; uint8_t data[8]; canStatus = CANIntStatus(BASE_CANBUS, CAN_INT_STS_CAUSE); if( canStatus == CAN_INT_INTID_STATUS) { ROM_CANEnable(BASE_CANBUS); canStatus = ROM_CANStatusGet(BASE_CANBUS, CAN_STS_CONTROL); CANIntClear(BASE_CANBUS, canStatus); } else { canIntObj.pui8MsgData=data; objStatus = CANIntStatus(BASE_CANBUS, CAN_INT_STS_OBJECT); ROM_CANMessageGet(BASE_CANBUS, canStatus, &canIntObj, 0); CANIntClear(BASE_CANBUS, canStatus); CheckCanControl(&canIntObj); }