用CAN盒调试,需要发送3次数据,才能进入CAN中断,不知道问题出在哪里。第一次第二次发送数据,CANMDL、CANMDH值不变,只有第三次发送数据,CANMDL、CANMDH值才变,请问是什么原因造成的呢
user5774561:偶然出现 can中断失灵,我查了一下CANRMP,发现被置位1并且一直没有被清0,因此中断gif失效 ,中断函数失效。但是我实在是十分困惑,我在中断函数中 接收邮箱按照rmp的位进行判断并接受相应的数据,接受完毕后 对相应的rmp进行了清0操作。理论上不应该存在 rmp未被清0的情况。
用CAN盒调试,需要发送3次数据,才能进入CAN中断,不知道问题出在哪里。第一次第二次发送数据,CANMDL、CANMDH值不变,只有第三次发送数据,CANMDL、CANMDH值才变,请问是什么原因造成的呢
Annie Liu:
回复 user5774561:
这种行为每次都会重现吗?还是偶尔会发生?每次接收后RMP位是否清零?
您是指即使您已将RMP清零,偶尔也会无法中断?您检查过 "Received Message Lost" 的情况吗?是否可能存在竞态条件?也就是说应用程序无法立即为有问题的邮箱检修中断故障。若存在这种情况,请打开几个具有相同MSGID的邮箱并使用OPC机制。
用CAN盒调试,需要发送3次数据,才能进入CAN中断,不知道问题出在哪里。第一次第二次发送数据,CANMDL、CANMDH值不变,只有第三次发送数据,CANMDL、CANMDH值才变,请问是什么原因造成的呢
user5774561:
回复 Annie Liu:
你好,这种现象每次都会出现。RMP不清零导致程序进不到can接收中断。如果在每次can接收中断前面加一次can发送,那么每次都能正常进到can接收中断
用CAN盒调试,需要发送3次数据,才能进入CAN中断,不知道问题出在哪里。第一次第二次发送数据,CANMDL、CANMDH值不变,只有第三次发送数据,CANMDL、CANMDH值才变,请问是什么原因造成的呢
Annie Liu:
回复 user5774561:
每次接收后RMP Bit必须清零。
用CAN盒调试,需要发送3次数据,才能进入CAN中断,不知道问题出在哪里。第一次第二次发送数据,CANMDL、CANMDH值不变,只有第三次发送数据,CANMDL、CANMDH值才变,请问是什么原因造成的呢
user5774561:
回复 Annie Liu:
程序中写了清零,实际can接收数据每3次才能清零1次
用CAN盒调试,需要发送3次数据,才能进入CAN中断,不知道问题出在哪里。第一次第二次发送数据,CANMDL、CANMDH值不变,只有第三次发送数据,CANMDL、CANMDH值才变,请问是什么原因造成的呢
Annie Liu:
回复 user5774561:
您好,回复请参看E2E链接: http://e2e.ti.com/support/microcontrollers/c2000/f/171/p/783669/2906910#2906910
另外,为避免翻译造成的歧义,如果这个问题还是未得到解决,建议您直接在上述链接中与E2E工程师直接交流。