2012年12月20日 星期四

DIY - PIC:18F4550 調試工具 (一百五十八)


DIY - PIC18F4550 調試工具 (一百五十八) 

筆者裝配了一個簡單的調試工具,作為 PIC 18F4550運行程式時,可以續步續步 (step) 看程式的斷點 (Break Point) 結果和位置,這個工具是非常之簡單,但利用這工具,才解決了多個 DS18B20 的讀取程式問題,由於DS18B20 的讀取程式是參考自互聯網上的例子,運算算法和程式結合後,很容易便出錯,特別在複雜的邏輯演算法和實時程式,出錯後是很難跟蹤和找出問題所在,利用這工具可解決部分的問題。

PIC 18F4550 調試工具
當然這小工具並不完美,作為一件小工具是可以的,簡單的調試工具用了一個微動開關、一個單刀雙擲開關 (SPDT Single Pole Double Throw) 和一個電阻 (10k) ,調試工具可單步運行 (Single-steping) 及全速運行 (Auto-steping)

PIC 18F4550 調試工具電路圖
調試工具要配合 Debug副程式來進行,利用 PIC 18F4550 RB5 (Pin 38) 的輸入作為控制,當開關 1 Auto (RB5 = 0) 時,程式會全速執行,當開關 1 Step (RB5 = 1) 時,程式會停斷點 (Break Point) ,並執行指定 Debug 副程式,如顯示變數結果等等,直至按下微動開關 2 (RB5 = 0) ,程式會繼續執行,直至下一個斷點。
 
LcdSetLine2();               // Put cursor on start of line 2
putsXLCD(LCD_name2);        // Dispaly Debug Message 
wait_key();                 // Debug Wait PB5 Key

PIC 18F4550 調試工具
利用調試工具發現了 DS_Find_ROM(sROM) 的副程式內的 SROM 變數結果有異常,所以修改程式為 DS_Find_First(sROM) DS_Find_First()DS_Find_Next(sROM) DS_Find_Next(),並 Setup sROM 為公用變數。

沒有留言:

張貼留言