[CAN-bus/DeviceNet] 化简,化到最简!

[复制链接]
2175|3
 楼主| wxj1952 发表于 2007-8-2 13:51 | 显示全部楼层 |阅读模式
CAN, AN, AD, LED, TE
运行以下程序,(无论节点在不在总线上。)send(&nbsp;)发送后,中断EPI发生,LED1亮。(节点进入错误消极状态)证实你的系统工作正常。<br />然后在此基础上完善你的程序。<br /><br />#pragma&nbsp;SMALL<br />#include&ltreg51.h&gt<br />#include&ltsjareg.h&gt<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br /><br />bdata&nbsp;uchar&nbsp;ws1;<br />sbit&nbsp;LED0=P1^0;<br />sbit&nbsp;LED1=P1^1;<br />sbit&nbsp;LED2=P1^2;<br /><br />uchar&nbsp;xdata&nbsp;*SJA_Adr=0x7f00;<br />#define&nbsp;can_read(RegAdr)&nbsp;&nbsp;SJA_Adr[RegAdr]<br />#define&nbsp;can_write(RegAdr,Val)&nbsp;&nbsp;SJA_Adr[RegAdr]=Val<br /><br />void&nbsp;initial()&nbsp;&nbsp;using&nbsp;0<br />{<br />do{&nbsp;<br />can_write(MOD,0x01);<br />}while(can_read(MOD)^0x01);<br /><br />can_write(CDR,0xcf);<br />can_write(OCR,0xfa);<br />can_write(IER,0x20);&nbsp;<br /><br />can_write(MOD,0);<br />}<br /><br />void&nbsp;main(void)<br />{&nbsp;<br />LED0=0;<br />initial(&nbsp;);<br />IE=0x81;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />send(&nbsp;);&nbsp;&nbsp;&nbsp;//can_write(CMR,1);<br /><br />LED2=!LED2;<br />while(1);<br />}<br /><br />void&nbsp;int0(void)&nbsp;interrupt&nbsp;0&nbsp;&nbsp;using&nbsp;0<br />{<br />LED1=!LED1;<br />ws1=can_read(IR);<br />}<br /><br />再次运行该程序,LED1无反应。按下硬复位按键,可重复实验。<br /><br /><br />
 楼主| wxj1952 发表于 2007-8-3 10:36 | 显示全部楼层

疑问?

一个SJA1000驱动程序究竟需要多少条语句?<br />学软件出身的是动辄100条以上的,我看到过一个SJA1000初始化程序写了200多行的,想模块化都不成。<br /><br />从心理学的角度讲,一个60条语句的程序是人能够保持清醒的界限,再大就会顾头不顾尾--越写越乱。也就是说,一个函数最好在60条以下。<br /><br />比喻,就好像一个人能够一气背60个英语单词,再多会怎么样?
太阳之母 发表于 2007-8-3 18:50 | 显示全部楼层

嘿嘿

<br />你的中断处理函数里没有做的事:清除数据溢出,释放接收缓冲区<br /><br />加一句:can_write(CMR,0x0c);<br /><br />就可以了<br />
 楼主| wxj1952 发表于 2007-8-3 19:18 | 显示全部楼层

那样就不是最简了。

提示,我是“单”节点“发送”测试实验,比自测试“故意非正常应用”进一步化简——去掉了接收过程。目的是测试板子电路/芯片的连接正常与否。与接收没有任何连系,不可能发生数据溢出,也不可能接收到任何报文信息。<br />而且,我只开放了唯一的一个中断——错误认可中断(TXERR&gt127)。换句话说,即使有任何接收溢出错误发生,也不会触发中断/进入中断程序。那么,为什么要在中断程序中加“清除数据溢出,释放接收缓冲区”?<br /><br /><br /><br />程序目的:<br />“我明明启动发送了,为什么没有中断?”<br />“我的板子坏了吗?”<br />“我的板子电路设计错了吗?”<br />“我的程序运行了,怎么什么反应都没有?”<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

757

帖子

1

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