我从老板那里接到CAN总线任务(用于某工程项目),该任务分为两部分:一部分是:从ADLINK公司买的PCI-7841,插在PC机上,作为上机位,主控中心。第二部分:是用51单片机+sja1000+6N137搞的三个节点。 时间安排: 第一部分:花了7天时间,利用PCI-7841提供的驱动,用vc搞了一个can总线发送、接收界面。 第二部分:开始制板、写程序,花了10天时间,
大概20天时间,联机通信正常。也就是能正常接收数据和发送数据。比如我给老板演示:主机给板子一发送数据,板子一接收数据后,根据数据内容,由板子一发送给板子二数据,板子二再根据数据驱动它旁边的LED闪亮。本以为这样可以交差。 但郁闷的事来了,老板要求再演示:板子一(发送id=0):周期5ms 00 到 7f的数据。板子二(发送id=1):以周期20ms同样发送00 到 7f的数据。板子三(发送id=3):接收id0和id1的数据。然后相加,再传到pc机上。(先pc机发送id=2的数据。板子一和板子二接收到数据后启动各自的定时器,然后周期发送数据) 整个工程就这样,很简单,就是做不出来。 问题现象:id0和id1发送应该在没隔20ms要冲突。冲突时他们相加的结果id3出错。它先是重发上一次相加的结果,紧接着发送现在的结果,大概过了几十桢后又正常了。如果首先发送时错位2.5ms。也就是认为保证其不发送冲突,就没问题。具体细节难以描述,请看附件pc机上接收到的数据。我在这个地方,郁闷了33天。大把的青春啊,郁闷,并且还没进展。具体程序我也贴出来,望斑竹、以及各位高手相助。 谢谢 相关链接:https://bbs.21ic.com/upfiles/img/200710/20071010154828978.rar |