[閒聊] 找bug方法

看板ASM (組合語言)作者 (james)時間15年前 (2010/04/25 10:44), 編輯推噓4(4011)
留言15則, 6人參與, 最新討論串1/1
大家好, 第一次在這邊po文,不到之處請多多包涵 我為什麼想聊 Debug 的問題呢? 一來是分享 剛學單晶片,學得很痛苦,因為bug找不出來 問學長怎麼找,他總是回說「靠經驗」,或「看電壓有沒有錯」 至終連他也找不出來,就說「我不知道」 他說不出所以然,我也一頭霧水,最終只得自己摸索 希望如果有人bug找不出問題,或許能幫一些些忙 二來是請教高手 我自己摸單晶片也才一年多,不能算非常熟 因此也想請教高手,是否也能分享一些找bug的技倆 以下簡單敘述我自己摸出來,找bug的方法 我會把省時間的程序放前面,供大家參考 預防重於治療 重點:程式硬體還是一小塊一小塊寫,沒問題再繼續加上去 這真的很重要。我以前迷迷糊糊,犯下許多很白痴的錯誤, 搞得不知是軟體出問題,還是硬體出問題, 沒人告訴我該一步步慢慢來,程式一行行慢慢寫,搞得浪費很多時間 我會把成功的每個版本的程式都備份,隨時能回頭複製貼上,回頭檢驗硬體 治療:Debug 1. 先檢查電源 如果昨天還好好的電路,今天發現壞掉,我會先檢查電壓 常常真的是電池沒電,或其他神奇的原因,讓原本12V的電壓降到10V TL074 OP 放大器沒辦法工作,輸出當然有問題 2. 換晶片 如果有焊腳座,而且有備份的IC可用,把懷疑有問題的IC換掉應該很快 3. 量晶片接腳的訊號 這可以分兩部份 A. 量看看電壓對不對。 這個方法可以幫我確定,每個 IC 的電壓有沒有都對。 ic沒電,再強的ic也沒辦法工作 拿一根鐵絲或鐵針,把供電電壓,Vcc Vee Gnd接到三用電錶量電壓 我都實際去量,一來求心安,二來求保險。 以前都用電錶量有通會畢就好,後來還是覺得開電源量電壓比較保險 B. 量輸出的訊號 這方法可能比較麻煩,可以晚點作,不過因為也是量訊號,就把他放進來 方法也是拿鐵絲或鐵線接示波器,確定軟體沒問題後,燒進微處理器, 執行看量輸出腳位訊號對不對 Ex 中斷該出現有沒有出現; 傳出一個訊號,有沒有訊號傳回來, 訊號是不是你要的等等,不詳述 4. 分區比較,這應該是重點 依照不同功能,盡可能把電路分區個別測。 重點在比較,藉由你能想得到的方法,比較出問題出在哪 是A區電路出問題? 那把A拿掉,看有A和沒A差在哪裡 是8051?電容?電路?可以換的都換,看有換和沒換差別在哪 以前學長碰過一個怪問題: 昨天可以跑得,今天不能跑。找了很久找不出來,最後電腦重新開機就好了。 他說是因為電腦中毒 這也是比較:比較開機前,開機後... 5. 寫小程式分區測試,這蠻花時間的,不太建議 執行一段程式亮一次燈,數燈的次數,看8051執行到哪裡出問題 或檢查看有沒有執行中斷,在中斷讓P1_0輸出 0 1 0 1 之類的 更花時間方法是獨自專對某個功能寫一段小程式,獨自檢驗 真的真的不行,或許可以重作 我曾經卡一整天找不到問題,結果重作就成功了 以上是我小小經驗分享,我很希望我剛學8051有人教我這些,只可惜沒有 希望我能為其他人學習道路上,幫一點點忙 不足、或認為不對的地方,也歡迎批評指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.43.232

04/25 19:20, , 1F
等你做久了你會發現!即使每塊功能模組都正常沒錯!拼在一
04/25 19:20, 1F

04/25 19:20, , 2F
在一起後又會錯了!這才是麻煩的地方= ="
04/25 19:20, 2F

04/25 20:19, , 3F
買個簡單的logic analyzer有很大的幫助
04/25 20:19, 3F

04/25 22:22, , 4F
我有在用PC base的LA,不算貴但也不便宜就是了 (38k左右
04/25 22:22, 4F

04/25 22:23, , 5F
LA在看介面(UART, I2C, SPI)很方便,但對於電壓的問題就…
04/25 22:23, 5F

04/25 23:04, , 6F
38K不是一般學生能負擔的了... 網拍有價格不到 1/10的
04/25 23:04, 6F

04/25 23:06, , 7F
也能解UART,I2C,SPI, 應該已經很夠用了
04/25 23:06, 7F

04/26 09:46, , 8F
感謝大家建議,Logic Analyzer似乎不錯
04/26 09:46, 8F

04/26 10:05, , 9F
有時正常有時不正常,我遇過一次與接地沒作好有關(找好久)
04/26 10:05, 9F

04/26 10:07, , 10F
另外,若ICE上可以但燒錄後不正常也可能是接地的問題,ICE
04/26 10:07, 10F

04/26 10:08, , 11F
會有另外作接地的關係(我擺爛過一次 @@)
04/26 10:08, 11F

04/26 12:59, , 12F
邏輯的組構式寫程式前要先做好的 compiler只管對錯不管邏輯
04/26 12:59, 12F

04/26 12:59, , 13F
常碰到很多人程式對的 但邏輯錯的 這是靠知識與經驗累積喔
04/26 12:59, 13F

04/26 13:00, , 14F
寫成模組有好 但是也有麻煩的時候 你改變程式流程同時要改
04/26 13:00, 14F

04/26 13:01, , 15F
模組內容 否則你會誤判模組都對的 但是卻犯了致命的邏輯錯
04/26 13:01, 15F
文章代碼(AID): #1Br1psVQ (ASM)
文章代碼(AID): #1Br1psVQ (ASM)