Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1349379
  • 博文数量: 118
  • 博客积分: 3888
  • 博客等级: 中校
  • 技术积分: 2940
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 18:15
个人简介

一看二做三总结

文章分类

全部博文(118)

分类:

2007-06-19 11:54:17

昨天小师妹很郁闷的跟我说DSP数据采集总是出问题,身为师兄的当然不能不管了,于是打电话拒掉gfdate,专心致致搞起了DSP

得承认师妹的DSP水平是比我高的,虽然我之前做过一些简单的IOAD小程序,后来因为怕麻烦就全丢给师妹去做了。她也是够勤奋啊,matlabdsp级联、dsp多通道采集、波形发射与ad采集同时进行等都是师妹一手搞定的。

     为了不被师妹轻视,我决定拿出老师解决问题的不二法门:细致、耐心加严谨的逻辑推理。

首先要搞清楚问题:由于要发射与接收超声信号,DSP必须发射一串的脉冲,然后利用AD采集回波信号。两部分单独都是可以进行的,但是如果同时进行,时序上就会从产生错误。比如:发射一串(两个)宽度为10us的脉冲后停止定时器,这时开始AD采集,当采集结束后再次开始这一过程。AD采集时,脉冲串发射完毕了,此时输出的应该是低电平。

实际发射时,发现发射的脉冲序列的宽度改变了,脉冲串的最后一个脉冲的高电平宽度不再是10us,而是一个不确定的宽度。

师妹分析的原因:AD采样的中断与为了发射脉冲而启用的定时器中断有冲突。

我分析的原因:以前遇到过定时器双缓冲的问题,即,定时器设定的定时周期只有在下一次才能器作用。故推测有可能是双缓冲导致定时周期错误。

问题确定:首先利用一个for循环的延时程序代替AD采集程序,以简化程序,这样就不会发生AD与定时器的冲突。在延时结束时加入两条输出信号取反指令,这样可以保证产生一个宽度为1的脉冲。利用这个宽度为1的脉冲,可以确定延时被加载的位置。

通过这一方法,发现本应加在四次跳变(及发两个脉冲)后的延时,被加载了三次跳变的后面,因此本应延长低电平时间的延时使得高电平持续时间增加了。

综合以上的现象,分析认为正是由于定时器是本次设定的定时周期下一次才会起作用,使得在构造信号信号时实际上整个时序是后延一个定时中断的,从而导致按正常逻辑加入的延时程序被错误的加到了前一个中断后。

问题的解决:找到原因后,问题就变得非常简单了。把本应在每四个定时周期后加入的AD采集程序后延到下一个下一个定时周期中进行。

总结,从这些分析过程看,其实问题本身很简单,但是由于思维定式导致了难以找到问题所在。获得的启发是:大部分错误都是由于细节产生的。对于工科学生来说,最重要的还是要有缜密的逻辑。

收获,最近一直在些大论文,小师妹看完我写的稿子后深感文笔之差,对我的敬仰也急速下降。经过这次程序调试,终于有有所回升了,呵呵

阅读(4372) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

懒懒地_20082009-11-27 20:38:09

我还是很崇拜师兄滴~ 虽然看起来傻傻地可爱,但学术水平还是不容置疑滴~