专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
PIC单片机
PIC18F458 CAN通信源程序,Proteus调试出现问题,请教解决方法!
2020-02-07 09:35
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
14323
31
31
调试程序时一直都在“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,好像没有什么问题哦。等有空我在测试下
加载中...
1
2
3
4
5
下一页
一周热门
更多
>
相关问题
PIC单片机不同的IO口驱动74HC573驱动共阴极的数码管,有的段不亮
1 个回答
一种简单精确的pic延时方法
21 个回答
谁熟悉PIC的产品发布时间的,帮看看PIC18F47K40啥版本IDE能开发
12 个回答
求AN1078对应的源代码下载地址
5 个回答
PIC单片机应用技巧
4 个回答
串口无法连续接收数据
2 个回答
求助:dsPIC33F串口通信,如何发送字符串
4 个回答
PIC45K40 IOC(interrupt-on-change)功能
2 个回答
相关文章
一种用PIC单片机主时钟驱动的老式挂钟
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
PIC单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
CAN通讯的测试是需要2个节点的,你要保证一个节点已经可以正常使用了,然后调试另一个节点的程序,以便达到设计要求。
while((CANSTAT&0X80)==0);这句表示检查CAN数据是否发送成功,没有发送成功则一直循环,如果没有另外一个相同波特率的节点,
会一直死循环的。呵呵,我一般在此死循环中加入计数功能,如果计数值超过一定值还没有跳出循环,则表示通讯失败,强制跳出循环
。可以利用此功能简单的判断通讯线路是否正常。
是不是只能在硬件仿真中才行??
不好意思,我以前用的是PIC18F4680,初始化部分也是参考网上的,“while((CANSTAT&0X80)==0);”这句我直接屏蔽了,包括后面进入正常模式的判断语句我也屏蔽了,在设置进入配置模式,延时几个毫秒后,直接进行其他部分的初始化。程序运行正常。
程序测试时,接收到特定ID后,会重新初始化本设备ID,好像没有什么问题哦。等有空我在测试下
一周热门 更多>