說(shuō)一個(gè)我獲得的教訓(xùn),老板的一個(gè)朋友委托我們給他做一個(gè)小型的控制器,要求的工期比較急,沒(méi)時(shí)間做線路板了,所以我們根據(jù)他說(shuō)的要求選了一個(gè)我們以前的成型產(chǎn)品做基礎(chǔ),在這個(gè)基礎(chǔ)上改。
這個(gè)東西的工作過(guò)程很簡(jiǎn)單,只需要把傳感器傳上來(lái)的數(shù)據(jù)分別送兩塊數(shù)字表顯示,然后根據(jù)傳感器傳上來(lái)的數(shù)據(jù)確定兩個(gè)出口固態(tài)繼電器的動(dòng)作。這里面用到了3個(gè)按鍵,3個(gè)指示燈,2個(gè)出口固態(tài)繼電器和485通訊。我們用了ATMEG8做控制芯片,用內(nèi)部8MRC振蕩器做時(shí)鐘,內(nèi)部看門(mén)狗,程序用C語(yǔ)言寫(xiě)的,我的C語(yǔ)言水平比較差上學(xué)的時(shí)候沒(méi)學(xué)過(guò),剛用單片機(jī)的時(shí)候全是用的匯編,今年才邊學(xué)邊用C語(yǔ)言做產(chǎn)品。
剛做好程序的時(shí)候我都試過(guò)了,接上傳感器和數(shù)字表可以正常的顯示數(shù)據(jù),并能根據(jù)按鍵執(zhí)行規(guī)定的動(dòng)作,我認(rèn)為沒(méi)問(wèn)題了就交了差。
同事拿著我做的控制器去操作箱上安裝配線,后來(lái)調(diào)試的時(shí)候同事告訴我說(shuō)裝置死機(jī)了...
我說(shuō)不能啊,我已經(jīng)配置了看門(mén)狗,正常程序出錯(cuò)是可以復(fù)位的。把同事拿回來(lái)的裝置通電測(cè)試果然沒(méi)有反應(yīng)了,重新燒寫(xiě)片子還能正常工作。
是不是靜電搞的鬼?
因?yàn)槲覀兊难b置原來(lái)是沒(méi)有按鍵的,這次的按鍵是在操作箱上接3個(gè)按鈕到裝置的CPU管腳上,沒(méi)有保護(hù)措施,現(xiàn)在冬天空氣干燥,很容易產(chǎn)生靜電。
馬上改!
給3個(gè)按鈕都加上了光耦隔離,改好了再裝到控制箱上測(cè)試,沒(méi)一會(huì)的功夫同事又回來(lái)了,說(shuō)又死機(jī)了。啊!?這是怎么回事呢?
我有點(diǎn)傻了,難道是我的程序有問(wèn)題?査吧,把程序從頭到尾看了幾個(gè)來(lái)回也沒(méi)看出毛病。
把死機(jī)的片子擦了,重新燒程序還是能正常工作,這就怪了!難道是操作箱有問(wèn)題?怎么在我這好好的東西上到操作箱上就死機(jī)呢?
同事干脆把操作箱從車(chē)間運(yùn)到我的辦公室來(lái),讓我自己做實(shí)驗(yàn)。果然剛燒好的片子上到操作箱上一會(huì)功夫就死機(jī)了,經(jīng)過(guò)反復(fù)的實(shí)驗(yàn)發(fā)現(xiàn)是和數(shù)字表通訊之后死的,更進(jìn)一步的確認(rèn)是跟數(shù)字表通訊以后修改了控制器的EEPROM以后死的。去掉了控制器的寫(xiě)EEPROM程序就不再死機(jī)了,難道是GCC的EEPROM庫(kù)有問(wèn)題?先不管,看能正常運(yùn)行了再說(shuō),反正這個(gè)功能不重要。重新燒寫(xiě)芯片,裝到控制箱上,手動(dòng)操作沒(méi)問(wèn)題!裝置開(kāi)始自動(dòng)運(yùn)行,呀!怎么復(fù)位了?是沒(méi)看清嗎?
再等一會(huì)....又復(fù)位了!一波未平一波又起,怎么回事?
這么個(gè)小東西程序不超過(guò)2K怎么這么多問(wèn)題?我不至于這么爛吧?這么個(gè)小程序都寫(xiě)不好?還得試找出問(wèn)題!反復(fù)試了幾十次發(fā)現(xiàn)規(guī)律了,只要是自動(dòng)狀態(tài)的1號(hào)狀態(tài)再和數(shù)字表一通訊就復(fù)位,是不是485通訊沒(méi)加隔離的問(wèn)題?動(dòng)手加隔離(這里要說(shuō)一下我們的軟硬件是兩個(gè)人負(fù)責(zé)的,我做軟件,另一個(gè)同事專(zhuān)做硬件),我的同事剛才加了按鍵的隔離這回又加485的隔離,為了增加隔離電源又在原裝置的基礎(chǔ)上改了電源。改完了裝上測(cè)試,還復(fù)位!天啊!我同事都不用好眼色看我了!
媽呀,我可怎么辦啊?
從程序上怎么也看不出問(wèn)題,可惡的M8不支持仿真又看不到C語(yǔ)言程序具體是怎么執(zhí)行的。沒(méi)辦法只好用匯編寫(xiě)程序吧,這個(gè)我熟而且每一步都可控制,肯定不會(huì)再出錯(cuò)了,一個(gè)白天加一個(gè)晚上把程序就寫(xiě)出來(lái)了,第二天調(diào)試通過(guò),上到操作箱上,天啊!又復(fù)位了!
不對(duì)!一定是硬件有問(wèn)題,同事說(shuō)沒(méi)關(guān)系我給你換CPU板,同事又改了一塊CPU板給我送來(lái),裝上一試,你們猜怎么樣?還是不行!別扔白菜,我真完了/_\,嗚嗚...我心里直哭。
突然我轉(zhuǎn)念一想,不對(duì)就不能還是硬件有問(wèn)題?
這回我不吱聲了,我另找了一套沒(méi)改過(guò)的硬件,是原來(lái)測(cè)試用的肯定是好的,我用它試試。
嘿嘿!這回沒(méi)事了,先別著急,我把改過(guò)的主板換到這個(gè)上面再試,還是沒(méi)問(wèn)題。把我那個(gè)做硬件的同事揪過(guò)來(lái),你看看外面是不是下雪了!說(shuō)明什么?我冤啊!快趕上竇娥了!她六月下雪,我11月下雪呀!同事二話沒(méi)說(shuō),拿過(guò)繼電器板對(duì)比,發(fā)現(xiàn)好的板兩個(gè)固態(tài)繼電器輸入電阻一樣,不好的輸入電阻差了幾十歐,總是復(fù)位的那個(gè)電阻小,是不是阻抗太低單片機(jī)輸出能力不夠引起的啊?給固態(tài)繼電器輸入端串上200歐電阻,這個(gè)行了。能正常工作了。運(yùn)行一會(huì)看看吧。
過(guò)了大約半個(gè)小時(shí),啊!又復(fù)位了!
這回我沒(méi)緊張,肯定是硬件問(wèn)題,因?yàn)槲业某绦駽語(yǔ)言版和匯編版都試過(guò)。拿來(lái)示波器看看是不是復(fù)位腳有干擾啊?沒(méi)有。看看電源呢?啊?CPU的5V電源在復(fù)位的時(shí)候是個(gè)大低谷,持續(xù)大約50毫秒...
元兇終于找到了!
是這個(gè)電源質(zhì)量不好,當(dāng)有繼電器動(dòng)作,并且來(lái)通訊,電源就挺不住了。同事也沒(méi)話說(shuō)了,改造電源吧,給電源變壓器增加容量后,再也不復(fù)位了。終于圓滿結(jié)束了。
圍著電源的一個(gè)小問(wèn)題,我轉(zhuǎn)了一大圈,把這個(gè)教訓(xùn)分享出來(lái)提醒大家注意。
-
電源
+關(guān)注
關(guān)注
185文章
18276瀏覽量
255049 -
傳感器
+關(guān)注
關(guān)注
2564文章
52607瀏覽量
763847 -
控制器
+關(guān)注
關(guān)注
114文章
16973瀏覽量
182973
原文標(biāo)題:做單片機(jī)的朋友,忽視這個(gè)問(wèn)題你就懵圈了
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
玩單片機(jī)到千萬(wàn)身家,“技術(shù)型老總”需要哪些神技能?
51單片機(jī)可以用來(lái)做什么?單片機(jī)可以做的小產(chǎn)品 精選資料分享
51單片機(jī)匯編語(yǔ)言教程_第一個(gè)單片機(jī)小程序
小白如何用焊接的單片機(jī)實(shí)驗(yàn)板做項(xiàng)目
一個(gè)單片機(jī)與PC機(jī)通信的程序
為什么不能使用單片機(jī)取代PLC
51單片機(jī)之實(shí)時(shí)秒表

51單片機(jī)可以用來(lái)做什么?單片機(jī)可以做的小產(chǎn)品

單片機(jī)基礎(chǔ)-第一個(gè)單片機(jī)系統(tǒng)

STC單片機(jī)開(kāi)發(fā)板介紹以及使用(51單片機(jī)介紹)

推薦一個(gè)簡(jiǎn)單好用的單片機(jī)

用51單片機(jī)做宿舍門(mén)禁系統(tǒng)

單片機(jī)不能正常工作的原因
一個(gè)暑假如何學(xué)習(xí)單片機(jī)

評(píng)論