Quantcast
Viewing all articles
Browse latest Browse all 262198

TM4C1294KCPDT: CanBus interrupt for Object Number

Part Number:TM4C1294KCPDT

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);
    }       


Viewing all articles
Browse latest Browse all 262198

Trending Articles