我有一个关于28335 CAN收发机制的疑问:在邮箱A接收到信息,触发接收中断处理接收数据时(过程中可能会因为和其他线程互斥写保护被挂起),若在中断清除前,上位机又向此邮箱发送数据,这时的状态会是什么样的呢?
是收发两端都被阻塞,中断清除后,再写入邮箱,触发下一个中断?
还是邮箱数据被覆盖,但并不触发中断?
还是邮箱被写保护,上位机跳过这个数据,发送下一个数据?
求各位大神们解答呀!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hank Zhao 说:中断清除前不会有新的中断产生,如果该邮箱的OPC位被清零,新的消息直接覆盖还没被读取的消息。如果该邮箱的OPC被置位,在没有其它邮箱配置相同的标识符的情况下,新的消息被丢弃,如果有其它邮箱配置相同的标识符,则存入其它邮箱。
谢谢您的回复
那为了不使发送的信息丢失,更好一些的解决办法,是不是增加几个冗余的同ID邮箱,将OPC位都置位,对每个邮箱数据独立的处理?
这样情况下,被迫存入冗余邮箱的数据,在原邮箱中断清除后,是否还会继续触发这个冗余邮箱对应的邮箱中断?(抱歉我中断机制学得不好)