完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题说明:我在程序中,将3个邮箱配置为接收邮箱,将接收中断配置为ECAN0INT中断线,当某个邮箱接收到数据后,触发邮箱中断,然后根据CANRMP寄存器的标志位确定是哪个邮箱触发了中断,对该邮箱进行接收处理。奇怪的是,程序刚开始运行一直正常,但是运行到一个小时左右后,出现故障。通过反复的测试,总结出故障的现象为,当我向dsp中发送数据时,能够确定邮箱接收到了数据,并且触发了邮箱中断,但是该邮箱的CANRMP标志位并没有被置位,因此dsp程序中无法判别哪个邮箱触发了中断,而且发送邮箱能够正常发送数据。经过测试,确定错误计数寄存器CANTEC/CANREC均正常。 以上为我所遇到的问题,不知道哪位朋友能够解惑,说一说解决方法或者可能的原因,谢谢!
|
|
相关推荐
2个回答
|
|
|
|
|
|
interrupt void Ecan0ISR(void)
{ Can_receivecounter++; DINT; if(ECanaRegs.CANRMP.all&0x00040000) {CANSXSRX18(); receiveflag18=1; } if(ECanaRegs.CANRMP.all&0x00080000) {CANSXSRX19(); receiveflag19=1; } if(ECanaRegs.CANRMP.all&0x20000000) {CANSXSRX29(); receiveflag29=1; } PieCtrlRegs.PIEACK.bit.ACK9 = 1; EINT; } void CANSXSRX29(void) { ECanaRegs.CANRMP.all = (ECanaRegs.CANRMP.all|0x20000000); a=ECanaMboxes.MBOX29.MDL.byte.BYTE0; b=ECanaMboxes.MBOX29.MDL.byte.BYTE1; } 上面是中断程序和接收邮箱程序 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2263 浏览 0 评论
674 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2698 浏览 0 评论
3467 浏览 1 评论
1187 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 11:22 , Processed in 0.657335 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号