[CAN-bus/DeviceNet] AVR单片机m128的can通信问题!!!

[复制链接]
3100|0
 楼主| xhming 发表于 2008-7-19 18:36 | 显示全部楼层 |阅读模式
我用的是ATmage128+sja1000做的can总县通信,下面是SJA1000的初始化程序:<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_CONTROL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//内部控制寄存器<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_COMMAND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//命令寄存器<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_STATUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//状态寄存器<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_INTERRUPT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//中断寄存器<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_ACR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//验收代码寄存器<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_AMR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//验收屏蔽寄存器<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_BTR0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//总线定时寄存器0&nbsp;<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_BTR1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//总线定时寄存器1&nbsp;<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG_OCR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//输出控制寄存器<br />#defineWriteSjaReg(Adr,value)&nbsp;*((unsigned&nbsp;char&nbsp;*)Adr)=value<br />#defineReadSjaReg(Adr)&nbsp;*((unsignedchar&nbsp;*)Adr)<br /><br />void&nbsp;sja_init()<br />{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_CONTROL,0x01);<br />&nbsp;&nbsp;while((ReadSjaReg(REG_CONTROL)&0x01)==0)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_CONTROL,0x01);<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;WriteSjaReg(REG_CDR,0x48);<br />&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_ACR,0x11);<br />&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_AMR,0x00);<br />&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_OCR,0xaa);<br />&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_BTR0,0x00);<br />&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_BTR1,0x1c);&nbsp;//500kbps<br />&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_CONTROL,&nbsp;0x1E);&nbsp;&nbsp;//进入操作模式&nbsp;<br />&nbsp;&nbsp;while((ReadSjaReg(REG_CONTROL)&0x01)==1)<br />&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_CONTROL,0x1E);<br />&nbsp;&nbsp;}<br />}<br /><br />请教各位高手,我的读写函数有什么错吗?我的问题是数据没有写入进去,也没有读取到寄存器里面的值,请问这个问题怎么解决啊,谢谢!!&nbsp;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部