PIC18F458 CAN通信源程序,Proteus调试出现问题,请教解决方法!

2020-02-07 09:35发布

调试程序时一直都在“while((CANSTAT&0X80)==0);”过不去,不知道是什么原因,请指教!!!
附件是程序和出现的问题!
程序是刘和平的书《PIC18FXXX单片机程序设计及应用》上的例程。
估计是不会有错误的,请指教!
源程序ourdev_278442.rar(文件大小:62K) (原文件名:CAN Debug.rar)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
tdh03z
1楼-- · 2020-02-07 15:15
没在Proteus环境中调试过CAN通讯,顺便问下你能在仿真中看到什么呢?

CAN通讯的测试是需要2个节点的,你要保证一个节点已经可以正常使用了,然后调试另一个节点的程序,以便达到设计要求。

while((CANSTAT&0X80)==0);这句表示检查CAN数据是否发送成功,没有发送成功则一直循环,如果没有另外一个相同波特率的节点,
会一直死循环的。呵呵,我一般在此死循环中加入计数功能,如果计数值超过一定值还没有跳出循环,则表示通讯失败,强制跳出循环
。可以利用此功能简单的判断通讯线路是否正常。
yanrz
2楼-- · 2020-02-07 12:09
怎么没有人回答一下呢??
是不是只能在硬件仿真中才行??
yanrz
3楼-- · 2020-02-07 17:10
 精彩回答 2  元偷偷看……
yangzhenjiang
4楼-- · 2020-02-07 22:29
你好,我也遇到了你的问题!我一直用MPLAB SIM ,请问你的Proteus是哪个版本,有can收发器和控制器吗?谢谢!
yangzhenjiang
5楼-- · 2020-02-08 01:42
我把LZ提到的程序下到了两片18f458里(收发器用的是mcp2551,没接电感,其他与刘和平书中完全一致),结果不能像刘和平书中所讲那样:从机将数据加1后返回;现在的情况是串口调试助手只能收到发给主18f458的数据,不能加1。请高手指教!!
tdh03z
6楼-- · 2020-02-08 05:57
晕,今天看了下,“while((CANSTAT&0X80)==0);”是判断是否进入配置模式

不好意思,我以前用的是PIC18F4680,初始化部分也是参考网上的,“while((CANSTAT&0X80)==0);”这句我直接屏蔽了,包括后面进入正常模式的判断语句我也屏蔽了,在设置进入配置模式,延时几个毫秒后,直接进行其他部分的初始化。程序运行正常。

程序测试时,接收到特定ID后,会重新初始化本设备ID,好像没有什么问题哦。等有空我在测试下

一周热门 更多>