调了两天的430DA,没想到这么一个小东西搞了这么久,结果问题出现在一个让我哭笑不得的地方,我所使用的通道坏了……
不过这两天也初步形成了430调试的一点经验,现在总结一下:
1.当问题出现时,首先应该从基础开始检查。如果编程中曾有模棱两可的地方出现,优先检查那里。
2.硬件电路仔细检查,很可能是硬件连错造成的。前些天调DS12C887就是有个IO脚忘了接,导致读出的结果全是溢出。
3.软件的检查大致是先检查初始化设定,包括时序和IO口设定。不同于51,430的IO控制稍显麻烦,注意输入输出,是否使用内置模块等等。当怀疑是IO问题时尝试程序中设定IO产生高低电平,再进行测量。
4.再有就是,如果产生了中断,注意检查中断是否打开,标志位是否清除,设置断点或者在中断中加入特定语句来检查中断是否进入,在多级中断中注意是否有其他的中断被屏蔽了。
5.当然,以上软件几点检测的前提是程序流程本身没有错误,简易采用易懂的命名法,多敲几个字,会在调试时造成极大地方便。
调试是一个极为麻烦的过程,是人总会犯错误,出现问题要多加思考,但有时主动修改程序进行排除进而缩小问题可能出现的范围也是必要的。另外,有时候还要靠一点运气……
不过编程的规范性真的很重要,我很多同学用XYZ当变量,没有必要的注释,两天后写的什么自己都不知道了,使用合适的变量名,添加合适的注释,不仅能让你思路清晰,在调试的时候也能达到事半功倍的效果。
另外,datasheet一定要认真阅读,430的user's guide编的很详细,出现问题时优先查找上面的相关部分。多加阅读就能慢慢熟悉。