CAN message filters
I have the CAN controller working and im recieving massages. however they appear to only be picked up by one message filter. The idea was to set up two filters to read the two ID's i am expecting.
setup as follows:
| Code: |
// RPM + TPOS
g_MsgObjectRx1.ulMsgID = 0x100;
g_MsgObjectRx1.ulMsgIDMask = 0;
g_MsgObjectRx1.ulFlags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;
g_MsgObjectRx1.ulMsgLen = 8;
g_MsgObjectRx1.pucMsgData = (unsigned char *)0xffffffff;
CANMessageSet(CAN0_BASE, MSGOBJ_NUM_DATA_RX1, &g_MsgObjectRx1, MSG_OBJ_TYPE_RX);
// PRES + TEMPS
g_MsgObjectRx2.ulMsgID = 0x101;
g_MsgObjectRx2.ulMsgIDMask = 0;
g_MsgObjectRx2.ulFlags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER;
g_MsgObjectRx2.ulMsgLen = 8;
g_MsgObjectRx2.pucMsgData = (unsigned char *)0xffffffff;
CANMessageSet(CAN0_BASE, MSGOBJ_NUM_DATA_RX2, &g_MsgObjectRx2, MSG_OBJ_TYPE_RX);
|
then in my ISR i am checking which one caused the interrupt:
| Code: |
ulStatus = CANIntStatus(CAN0_BASE, CAN_INT_STS_CAUSE);
// clear inturrupts
switch(ulStatus)
{
case MSGOBJ_NUM_DATA_RX2:
g_MsgObjectRx1.pucMsgData = g_101;
g_MsgObjectRx1.ulMsgLen = 8;
CANMessageGet(CAN0_BASE, MSGOBJ_NUM_DATA_RX2, &g_MsgObjectRx2, 1);
g_flag_101 = 1;
break;
case MSGOBJ_NUM_DATA_RX1:
g_MsgObjectRx1.pucMsgData = g_100;
g_MsgObjectRx1.ulMsgLen = 8;
CANMessageGet(CAN0_BASE, MSGOBJ_NUM_DATA_RX1, &g_MsgObjectRx1, 1);
g_flag_100 = 1;
break;
|
unfortunatly, g_flag_101 never gets set.
AND
if i read the messages that cause the g_flag_100 flag, it contains messages with varying ID's.
any ideas?
Tim
login or register to reply
|