打印
[CAN-bus/DeviceNet]

怎么能让某个节点进入错误状态?

[复制链接]
1103|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Allen_Zhang|  楼主 | 2013-3-22 13:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
airwill| | 2013-3-23 16:06 | 只看该作者
拔掉另外个节点的接线后, 各节点还是能发数据的, 只是被拔掉的节点检测不到应答(可能会自动重发)
另外, CAN 有多种错误, 想模拟产生它, 要用特别的办法

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
Allen_Zhang + 1 很给力!
板凳
Allen_Zhang|  楼主 | 2013-3-25 13:00 | 只看该作者
airwill 发表于 2013-3-23 16:06
拔掉另外个节点的接线后, 各节点还是能发数据的, 只是被拔掉的节点检测不到应答(可能会自动重发)
另外, CAN ...

嗯。是不是要让can进入三种错误状态,主动错误被动错误和总线故障,只有当位错误、格式错误、CRC错误等这几个错误累计了错误计数值到达一定程度才可以。
我将节点断开,只是让CAN一直在重发而得不到应答,不算错误状态?
其实我要实现的就是一个功能,当通讯中断的时候,要采取保护措施。就是不知道怎么判断这个通讯中断,看这样子,这个不能归于错误状态了。
有什么好的方法吗?

使用特权

评论回复
地板
蚊子强| | 2013-3-25 17:47 | 只看该作者
一般帧发送完成之后都会产生中断,
可以在这个中断产生之后进行事件触发,然后在另一线程中设置超时时间对这个事件进行等待,
如果超时则认为是通信中断。
我能想到的就是这个办法了。

使用特权

评论回复
5
Allen_Zhang|  楼主 | 2013-3-27 16:31 | 只看该作者
蚊子强 发表于 2013-3-25 17:47
一般帧发送完成之后都会产生中断,
可以在这个中断产生之后进行事件触发,然后在另一线程中设置超时时间对 ...

现在我是 直接去读取 错误状态寄存器。
如果通信中断了,错误计数值会达到128,也就是进入被动错误状态。
然后错误状态寄存器里的被动错误状态位会被置位,从而判断通信中断了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝