论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
已有的一种实现方法[4]是将总线接收器的输出端反相后接到CPU的外部中断管脚,如图2所示。用触发中断的方式判断总线上是否有数据传输,同时结合定时器中断判断总线是否空闲。如果总线空闲,就获得总线控制权,发送数据;然后用监听自己发送数据的办法判断是否发生总线冲突。该方法解决了总线控制权分配的时延问题,但是需要使用至少4个管脚(INT0、RXD、TXD、驱动器使能管脚),并且占用外部中断和内部定时器中断,需要利用软件监听发送的数据避免总线冲突。系统资源耗费较多,编程复杂,在一些场合的应用也有局限性。本文在以上方法的基础上提出了一种利用硬件监听总线状态的方法,真正实现CSMA/CD协议。同时减少了系统资源的占用率,简化了总线冲突的判断。另外实现了驱动器的无延迟自动切换,进一步提高了系统的实时性。该系统工作稳定、可靠,并且大大提高了通信的实时性,特别适合实时分布式控制的场合。
2.1 系统框图
系统由总线状态判断逻辑、驱动器自动切换逻辑两部分组成,如图3所示。系统资源只占用CPU的3个管脚:RXD、TXD、总线状态指示脚,不占用任何中断。在软件实现方面由于采用了硬件判断总线状态而变得非常简单,只需要对标准的232通信程序做微小修改即可。
2.2 总线状态判断逻辑
该电路由双RS485总线接收