我有一个关于28335 CAN收发机制的疑问:在邮箱A接收到信息,触发接收中断处理接收数据时(过程中可能会因为和其他线程互斥写保护被挂起),若在中断清除前,上位机又向此邮箱发送数据,这时的状态会是什么样的呢?
是收发两端都被阻塞,中断清除后,再写入邮箱,触发下一个中断?
还是邮箱数据被覆盖,但并不触发中断?
还是邮箱被写保护,上位机跳过这个数据,发送下一个数据?
求各位大神们解答呀!
Yuting Liu:
回复 Hank Zhao:
Hank Zhao
中断清除前不会有新的中断产生,如果该邮箱的OPC位被清零,新的消息直接覆盖还没被读取的消息。如果该邮箱的OPC被置位,在没有其它邮箱配置相同的标识符的情况下,新的消息被丢弃,如果有其它邮箱配置相同的标识符,则存入其它邮箱。
我有一个关于28335 CAN收发机制的疑问:在邮箱A接收到信息,触发接收中断处理接收数据时(过程中可能会因为和其他线程互斥写保护被挂起),若在中断清除前,上位机又向此邮箱发送数据,这时的状态会是什么样的呢?
是收发两端都被阻塞,中断清除后,再写入邮箱,触发下一个中断?
还是邮箱数据被覆盖,但并不触发中断?
还是邮箱被写保护,上位机跳过这个数据,发送下一个数据?
求各位大神们解答呀!
Hank Zhao:
回复 Yuting Liu:
是的,置位OPC并且增加冗余邮箱可以防止消息丢失。冗余邮箱接收消息后,其中断处于等待状态。原邮箱中断清除后,CPU会响应等待中的中断。