2019-03-24 20:31发布
tianshuihu 发表于 2014-4-3 11:33 不知道你的软件流程是怎么安排的,超声用到中断了吗,无线负责把数据传出去是吗 我觉得初始化完成之后, ...
tianshuihu 发表于 2014-4-3 17:31 基本上明白你的思路了,看你的主循环应该是发一个超声,等待回波,无线发送数据,但是有个问题 万一在 2 ...
最多设置5个标签!
我觉得初始化完成之后,在主循环可以如下操作(定时中断处理超声回波信号)
查询上次的超声测距是否完成
未完成则继续等待,并把上次的距离无线传回
如果已完成则 发一到三个超声波脉冲 ,并把测得的距离无线传回
定时器中断处理两个事件,一是超声回波信号触发的中断,根据时间即可判断距离,获得距离之后在这里更新,主函数只是把最新的距离传回
二是超时中断,这个是处理超声发出去之后没有回波的情况的
以上情况有一个发生,即可判定一次测距完成
不明白?我的思路是,超声波、无线都是直接用外部中断来处理的,超声波的的是ECHO为为高时就打开定时器,接收到回波的时候就产生一个中断,然后再在终端里边进行数据处理,然后就直接把转换来的超声波的数据赋给发送端的数组,之后就是在循环里边对数据进行循环发送的。刚才我试过了,没有超声波的时候,无线模块是能循环发送数据的。
万一在 20 ms(看你的极限探测距离来设定,20ms对应3.4m左右) 之后还收不到回波信号你是如何处理的
你的while主循环中还有一个 while 判断,这个判断的条件如果一直为真的话岂不是要一直等下去,建议改为while(xxx & num--), num可以设一个保险的值
按照你的想法试过了,没见的呢,关键是我不是很明白while那里这样改的意思呢
一周热门 更多>