調了兩天的430DA,沒想到這麼一個小東西搞了這麼久,結果問題出現在一個讓我哭笑不得的地方,我所使用的通道壞了……
不過這兩天也初步形成了430調試的一點經驗,現在總結一下:
1.當問題出現時,首先應該從基礎開始檢查。如果編程中曾有模棱兩可的地方出現,優先檢查那裏。
2.硬件電路仔細檢查,很可能是硬件連錯造成的。前些天調DS12C887就是有個IO腳忘了接,導致讀出的結果全是溢出。
3.軟件的檢查大致是先檢查初始化設定,包括時序和IO口設定。不同於51,430的IO控制稍顯麻煩,注意輸入輸出,是否使用內置模塊等等。當懷疑是IO問題時嘗試程序中設定IO產生高低電平,再進行測量。
4.再有就是,如果產生了中斷,注意檢查中斷是否打開,標誌位是否清除,設置斷點或者在中斷中加入特定語句來檢查中斷是否進入,在多級中斷中注意是否有其他的中斷被屏蔽了。
5.當然,以上軟件幾點檢測的前提是程序流程本身沒有錯誤,簡易採用易懂的命名法,多敲幾個字,會在調試時造成極大地方便。
調試是一個極爲麻煩的過程,是人總會犯錯誤,出現問題要多加思考,但有時主動修改程序進行排除進而縮小問題可能出現的範圍也是必要的。另外,有時候還要靠一點運氣……
不過編程的規範性真的很重要,我很多同學用XYZ當變量,沒有必要的註釋,兩天後寫的什麼自己都不知道了,使用合適的變量名,添加合適的註釋,不僅能讓你思路清晰,在調試的時候也能達到事半功倍的效果。
另外,datasheet一定要認真閱讀,430的user's guide編的很詳細,出現問題時優先查找上面的相關部分。多加閱讀就能慢慢熟悉。