I forgot to mention that the Send function is on a 20 ms timer.
The program is small, but I checked to make sure MI 30 isn't being written anywhere else and it is not.
I tried replacing the CAN data received (MB 3) condition with a system timer and works correctly
so it seems the CAN Data Arrived bit is never HIGH, but it still populates the MI 37 vector. I've also tried stepping through the program and it does indicate that MB 3 is high, though MI 37 is never stored in MI 30.
I would like to use MB 3 as the condition to store the CAN data though, I'm not sure why it isn't working?