4.3.2 测量功能
测量由通讯激活,激活后的每次测量经历以下过程:
    1) 发射超声波;
    2) 计时,等待回波,定时控制增益;
    3) 收到回波后,获取计时数据,计算距离值;
    4) 根据模式设置确定是否返回数据;
    5) 判断是否自动重新启动新一轮测量。
这里就不再像通讯那样详述了,只说几个关键点:
    A) PCA的使用,由于两个定时器均已占用,所以需要使用PCA实现定时功能,此处用的是PCA的比较器功能,当计数器和设定值相等时产生中断,从而实现了定时。
    B) 发送使用高低电平定时控制是为了灵活处理,原来担心由于三极管导通、截止速度不同,需要用占空比来弥补呢,实际上没有用到。
 
    C) 增益控制时间用数组来定义转换的时间是为了灵活,因为看TL851资料上的控制时间似乎不是等间隔的,程序中的控制完全是仿照TL851做的:


  


 
    上面数组是PCA的计数比较值的增量,PCA的计数频率是 11.0592MHz,读者可以计算、比较一下,看是否和上面的那个表相同。
    D) 余波抑制功能就属于前面所说的“保护性”处理,是为了改善性能、提高可靠性所为,与测量原理无直接关联。从这部分的处理读者可以感受一下软件和硬件结合的灵活性,如果以前搞过单纯的硬件电路,体会更深!
    E) 因为测量是个过程,所以设计为以下几个状态:


 
    状态之间的转换多数为依次完成后切换,读者可在源代码中看到;在此只提一下:自动测量和单轮多次测量需要和时间配合,所以借用了时基处理实现:
自动测量时,设置周期计数,减到“0”开始下一次测量


 
    单轮多次测量时,经测试一次完成后不可以立即启动下一次,需要有个空隙,所以补了空隙计数:


 
    F) 至于那些数据处理功能,纯属“花哨”,只是为了表示一下:可以在程序中增加一些功能,从而使传感器更具“个性”。这部分应该是读者自己发挥的空间!

    传感器中所涉及的程序大概介绍到此。这里所有程序的目的都是为学习而写,所以不是最优化的,更够不上实用级别,仅供参考。

4.4 PC侧程序
    关于PC程序的设计,读者有兴趣可阅读“圆梦小车StepbyStep之二”,此处就不再赘述了。
    所有的设计都是根据前面通讯协议而来的,所以如果读者自己增加了功能,也可以在此基础上添加,我觉得PC是一个不错的“助手”。