07 AVR单片机ATmega8工业总线项目的通信处理以及实现

这两天带博主的工程师给了一个小任务给我,使用7个小器件进行半双工的工业485总线通信,使用公司内部标准帧格式,采用主动上传方式每隔一定的定量时间进行数据上传。当然,实现一个器件的数据上传是十分简单的,但是使用大于两个器件进行485工业数据传输的时候就必须要考虑数据碰撞的问题了,因为由于485半双工的特性,同一时间数据只能上传或者下载,但是当多个数据进行数据通信的时候就要小心数据的交叉碰撞。

项目要求,在符合帧格式的前提下使用6台工作器件进行数据主动上传,因为前期设定每台设备的主动上传时间为2min,所以不可避免的遇到一个问题,就是如何进行数据的总线判“忙”检测,并且在其他的数据帧发送完毕后进行数据的发送?

经过博主的资料的查询和带我的工程师的指导下,博主总结了判断线忙的主要方法:

(1)由于数据主动上传,所以定时器必须给一个定时,定时2min,到时间了就上传一帧数据,数据上传帧还是通过填充中断首字母的方式进行,不懂的同学们可以看一看博主前面的博文。

(2)数据上传就必须要进行判断的检测,经过现在项目的完成经验来看,一开始需要定义两个变量 sendok 和sending,因为我们知道数据的判忙不是说判断总线现在的时刻不忙就可以发送一帧数据,数据是连续的,如果仅仅是一个时刻的不忙就发送那么帧和帧之间还是会乱码,会碰撞,这个时候的sendok变量就是判断当下是不是有一个大于等于帧长的时间的间隔,如果有,则说明现在有一个连续的空闲时间可以发送,这个sendok博主的处理是放在定时器2中,使用一个专门的定时器进行判断,具体方法是在收中断中进行定时器的开启,接下来判断完毕后更改变量的值&

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值