We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello, I have an application which is using the can-node A on the XC167-Controller. Normally I check with a while-loop in the interrupt-service-routine the INTID-value(register CAN_AIR, 0x200208), to see which CAN-message-objects have caused an interrupt. Depending on the INTID I jump with a switch-case instruction in the accordant code section. The first thing there is to reset the INTPND-bit in the accordant message-object,which works.Resetting INTPND should clear the INTID value in CAN_AIR. If there is no interrupt of another message object pending the value of CAN_AIR should be zero (so I know it from a C167-Controller) but on a XC167CI, Step AC it is not like this!!! The CAN_AIR-register always keeps the INTID-value of the last message object, which has caused an interrupt. This behaviour is the same with receive and transmit message-objects. An INTID-value which becomes never zero leeds to an endless while-loop. So what else do I have to clear/reset, to get the INTID-value to zero, when there is no further message-object-interrupt pending! Thank you very much. Tobias Huber