原创 CAN 调试心得

2008-7-30 11:12 2969 3 3 分类: 工业电子

CAN 调试日志<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


2008-7-24


发送函数驱动的调试:


一个隐藏的错误被挖出来了,问题迎韧而解了,呵呵。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />



===================================================================


正确结论:


类型 一般长度(二进制位)


char 8                        unsigned char 8            int 16 or 32           


unsigned int 16 or 32           short int 16                unsigned short int 16     


long int 32                    unsigned long int 32         float 32         


double 64                    long double 80


长度指编译系统用多大的空间存储数据,因为c语言是高级语言,所以对于不同平台可能会不一样。比如unsigned int通常是16位,所以范围是0~65535216次方减1),超过就会进位(有符号数是溢出)。
===================================================================


2008-7-29 


接收函数驱动的调试:


 


是用CAN232MB发送8字节数据可以接收。



 


问题1:只能接收ID=0的报文?



 


问题2:只能接收两个ID相等的报文?



 


折腾了一个上午,终于找到原因了,原来是滤波寄存器没有设置好,现在终于搞定,标准帧和扩展帧的CAN报文可以畅通无阻接收了。眼前真是有点“豁然开朗”,驱动马上就可以搞定了。休息一下,下午干完。有点HI



上午找到了问题的根源所在,下午只是对驱动程序进行完善。拟用32号消息对象做为发送,其他的1-31用来接收,以后根据实际需要再改。


2008-7-30


  昨天下午优化程序的时候想了一个结构体变量,这样调用接收函数的时候可以返回一个指针。


 



昨天由于要下班了没有调试出来,结构体里面又使用了指针,计算更加复杂了,回家翻了翻书,今天早晨改成了数组。



第一次调试程序,数据接收就对了。但是ID却有问题。


   


 仔细一看程序,晕 ,少写了F



改了以后,更离谱,ID5位一直是F4。无意也是有意的动了一下下面的东东,竟然出来了,真是莫名其妙。



 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条