PIC硬件死鎖問題
使用 PIC 單片機(jī) 去設(shè)計(jì)工控電路,最頭痛的問題,就是 PIC 單片機(jī)在受干擾后經(jīng)常硬件死鎖,大部份人歸咎于 “CMOS的可控硅效應(yīng)” 因而產(chǎn)生死鎖現(xiàn)象,一般都認(rèn)為 ‘死鎖后硬件復(fù)位都是無效的.只有斷電。’ 但是一個(gè)成熟的商品,那須要你去斷電呢? 就好像一臺(tái)電冰箱,壓縮機(jī)一啟動(dòng),產(chǎn)生干擾, CPU 受干擾 因而 ‘硬件死鎖’,死機(jī)在那兒,假如發(fā)現(xiàn)了,可以馬上拔掉電源插頭,隔幾秒再插回,如此的動(dòng)作 可以接受嗎? 假如死機(jī)時(shí)沒發(fā)現(xiàn),死機(jī)幾十天,你猜它會(huì)如何呢? -- 應(yīng)該是 供給 CPU 電源的穩(wěn)壓 IC 燒毀了。
PIC 單片機(jī)為什么會(huì)硬件死鎖,PIC 單片機(jī)在受干擾后經(jīng)常硬件死鎖,那么 PIC 要‘看門狗’ 有何用,有沒有人深入去探討其原因,在各 PIC 單片機(jī) 論壇 也提得很多,各有各的觀點(diǎn),總具體的原因不外是 “CMOS的可控硅效應(yīng)” 而產(chǎn)生死鎖現(xiàn)象, 依我各人的觀點(diǎn),應(yīng)與 “CMOS的可控硅效應(yīng)”無觀,但很多大蝦皆認(rèn)為是 “CMOS的可控硅效應(yīng)”所引起的,所以一直以來 我也不方便提出,說不定是我的觀點(diǎn)錯(cuò)誤,提出來 反而誤了大家,但至今,針對(duì) PIC 單片機(jī) 產(chǎn)生死鎖現(xiàn)象,都還沒有詳細(xì)的原因說明及對(duì)應(yīng)之道,在別的 PIC 單片機(jī) 論壇 也還在提此問題,我就將本人 找尋 pic ‘死鎖現(xiàn)象’的經(jīng)過提供大家參考。
許久年前,PIC16C5x 剛出產(chǎn)一兩年,(PICxxxx 原先只有165x,屬于 NMOS 結(jié)構(gòu),大量用于 通用-GI 的選臺(tái)器、有線電視解鎖器,后來改為 CMOS 結(jié)構(gòu),更名為16C5x),當(dāng)時(shí)只有 16C54、55、56、57 四個(gè)型號(hào),仿真器只有 頂尖公司 制造的 16C5x DOS版仿真器(第一代),它也是 Microchip 第一個(gè) OEM 仿真器廠,Microchip 當(dāng)時(shí)還隸屬于 通用電子廠的子公司 -- 高雄電子廠,我當(dāng)時(shí)也買一部仿真器,約人民幣壹萬五千元,16C5x 當(dāng)年為最省電的OTP、QTP 單片機(jī),價(jià)格又比其它的單片機(jī)便宜,只是它很容易受干擾死機(jī),很多大廠不敢使用它,pic 我學(xué)了幾個(gè)月后,有一天,有位朋友要我 兼差 幫他們公司設(shè)計(jì)汽車防盜器,當(dāng)時(shí)市場(chǎng)上的汽車防盜器都還用 CD40xx的邏輯電路去設(shè)計(jì),各個(gè)時(shí)控都須一組 RC 電路,電路板上十幾個(gè) IC (加上遙控解碼 IC),至少有 7~8 個(gè) VR,調(diào)整時(shí) 非常復(fù)雜,當(dāng)時(shí)我就以 一個(gè) 16C55 + 一個(gè) ULN2003 + 一個(gè) 解碼 IC (當(dāng)時(shí)技術(shù)未成熟,還沒用 PIC 程序解碼,后期的 已將 解碼 IC 省略),總計(jì)三個(gè) IC就解決,電路方面 有某些是依書本上的電路移植過來(重置電路也由一本 PIC 應(yīng)用的書本移植過來),樣品出來后,當(dāng)時(shí)對(duì)方存著很多疑問,電路怎么這樣簡(jiǎn)單,同時(shí)間內(nèi)有4、5個(gè)'計(jì)時(shí)器'在計(jì)時(shí),又要做那么多的 I/O 偵測(cè)工作,時(shí)控能準(zhǔn)確嗎? 性能如何呢? 穩(wěn)定性? ....... 總體而言, CPU所設(shè)計(jì)的電路, 對(duì)于功能-絕對(duì)是比 邏輯電路所設(shè)計(jì)的好太多了,時(shí)控的準(zhǔn)確性-我為它保證所有的時(shí)控誤差在 1% 之內(nèi), 至于穩(wěn)定性 ---- 當(dāng)時(shí)的樣品時(shí)常當(dāng)機(jī)、死機(jī),CPU 發(fā)燙,也就是大家所談的 ‘ PIC 的硬件死鎖’。............
為了此問題(大家最怕的問題),找遍所有的資料,都毫無所獲,在PIC的書上都沒有看到類似訊息,只好自己 單打獨(dú)斗 的 去奮斗、去找原因,我發(fā)了幾天的時(shí)間,模擬了各種狀況,做了各式各樣的實(shí)驗(yàn),制造各種干擾,用示波器測(cè)量各點(diǎn)所發(fā)生的異常波形,其中一個(gè)簡(jiǎn)單的實(shí)驗(yàn),(/MCLR 的接腳上,接一個(gè)提升電阻至 V+,接一個(gè) 0.1uf 至地,接一個(gè)'按鍵開關(guān)'至地),讓我得到一個(gè)我所須要的答案,實(shí)驗(yàn)時(shí) 我多次的按 '按鍵開關(guān)',應(yīng)該只是'重置'而已,但很容易進(jìn)入 所謂的 ‘硬件死鎖’,連續(xù)測(cè)試,都會(huì)重覆發(fā)生,機(jī)率非常高,最后得到一個(gè)答案,PIC 晶片的 MCLR 硬件設(shè)計(jì)有問題,與其他 I/O 腳無關(guān)聯(lián),不是 I/O 腳受干擾, 而是 /MCLR 在重置或受干擾時(shí),/MCLR 腳 會(huì)產(chǎn)生一個(gè) 振蕩信號(hào),當(dāng) /MCLR 腳的外部接有電容時(shí),它就永在發(fā)振,而PIC晶片內(nèi)部某種硬件原因,導(dǎo)致于 VDD 與 VSS 之間 產(chǎn)生很大的電流,所以 VDD 與 VSS 像短路一樣,CPU 因而發(fā)燙,當(dāng)把電容移開后, CPU 就重新工作,耗電流也就恢復(fù)正常了,所以我就認(rèn)為 PIC 它不是 硬件死鎖 ,它沒有 “CMOS的可控硅效應(yīng)”,可能是大家還沒找出原因,而懷疑是 PIC內(nèi)部 “CMOS的可控硅效應(yīng)”。而此問題解決方式,我當(dāng)時(shí)也反應(yīng)給 Microchip 公司反應(yīng),之后 Microchip 晶片內(nèi)部有無修改 就 不得而知。
問題找出之后,趕緊通知 '汽車防盜器制造公司',修改了硬件電路,順利的將 PIC 控制的 '微電腦汽車防盜器'上市,這也就是 臺(tái)灣 第一部由 CPU 控制的 汽車防盜器 (這是我朋友所說的),之后,其他公司也深受壓力,趕緊跟于后面,使出各種方法 陸續(xù)的推出 '微電腦汽車防盜器',而我以后所做的 PIC 控制電路,也就不曾有過 ‘硬件死鎖’。
結(jié)尾 給大家一個(gè)建議,一般書本上的電路圖及程序,有很多錯(cuò)誤,只讓你去參考,不能太過于信任,要多參考幾樣,不要原版照抄,否則出問題 也無法解決。
擴(kuò)展閱讀:
編輯:admin 最后修改時(shí)間:2018-05-19