我设计的一个模块,出厂之前需要一次调试过程,出厂后到正式使用场合这个调试功能被屏蔽掉。里面主控是一块带DAC输出的MCU. 这个调试过程大概是这样的:烧写MCU完成之后,由PC与MCU通信,控制dac输出 在一定范围内变化,这个变化会引起整个模块输出的变化,模块输出的变化反馈到PC机,然后由PC找到最佳模块输出值(这个值是确定的),找到此时对应的dac输出值。
我的想法是:预先在MCU的flash里设置一块规模不大的表格,MCU预置这样一个功能让dac输出按照这个表格变化(最大预设100个点,实际变化只需要50个点左右就够),PC与MCU通信,启动这一功能,同时PC接收反馈的模块输出值(与dac输出值肯定是一一对应的了),找到最合适的模块输出值的位置,就可以找到最合适的dac输出值。
其他同事提出另一个想法:让MCU完全在PC控制下工作,每一次PC控制MCU,让dac输出一个值,pc得到对应反馈的模块输出值,并判断与最佳输出(确定的)相差多远,相差远则增大调整步长,近则用较小的调整步长;按照这个步长再调整dac的输出,再一次得到模块输出值,作判断。。。如此循环,直到达到模块最佳输出值,此时对应的dac输出值即是最合适的。
我觉得我的想法通用性更好,而同事的想法可能要求更高的“智能性”,也要求更多的循环和中断;如果在一致性较好的情况下,我的想法可能更容易实现;而同事的想法可能需要更多的资源。不知道我对此的判断是否有道理? 3x! //bow
|