新聞中心

關(guān)于AVR的BOD

作者: 時(shí)間:2013-05-11 來源:網(wǎng)絡(luò) 收藏

作為一個(gè)正式的系統(tǒng)或產(chǎn)品,當(dāng)系統(tǒng)基本功能調(diào)試完成后,一旦進(jìn)行現(xiàn)場測試階段,請注意馬上改寫熔絲位的配置,啟用的電源檢測()功能。

對于5V系統(tǒng),設(shè)置電平為4.0V;對于3V系統(tǒng),設(shè)置電平為2.7V。然后允許BOD檢測。

這樣,一旦的供電電壓低于BOD電平,進(jìn)入RESET(不執(zhí)行程序了)。而當(dāng)電源恢復(fù)到BOD電平以上,AVR才正式開始從頭執(zhí)行程序。保證了系統(tǒng)的可靠性!

原因分析如下:

AVR是工作的芯片,當(dāng)電壓跌至2.5V,系統(tǒng)程序還能工作。這是有2個(gè)可怕的現(xiàn)象可能出現(xiàn),

1。外圍芯片工作已經(jīng)混亂,AVR讀到的東西不正確,造成程序的執(zhí)行發(fā)生邏輯錯(cuò)誤(不是AVR本身的原因)。

2。當(dāng)電源低到臨界點(diǎn),如2.4V時(shí),并且在此互上互下的,AVR本身的程序執(zhí)行也不正常,取指令、讀數(shù)據(jù)都可能發(fā)生錯(cuò)誤,或程序亂飛、不穩(wěn)定(AVR本身的原因,實(shí)際任何的單片機(jī)都是這樣的),非常容易造成EEPROM、FALSH的破壞。有人問51怎么不會?實(shí)際上51也是這樣,只是51內(nèi)部沒有直接寫EEPROM、FLASH的指令,它的程序亂飛留不下痕跡。還有人有疑問:外掛EEPROM,掉電時(shí)怎么不會改寫?實(shí)際是外掛EEPROM,當(dāng)電壓低于4V(2.7V)時(shí),它已經(jīng)不工作了,程序去改內(nèi)容也改不了。而AVR內(nèi)部的東西在臨界電壓時(shí)都能工作,但非常不穩(wěn)定。

AVR的BOD功能必須要使用,我早期使用51時(shí),凡是產(chǎn)品外部都要使用電源監(jiān)測芯片,現(xiàn)在AVR自己本身就有該功能,一定要使用。

下面是AVR獵手的經(jīng)驗(yàn)之談:

在做的一個(gè)控制系統(tǒng),現(xiàn)場環(huán)境提供給我的電源是DC 24V,我的系統(tǒng)需要兩個(gè)電壓,一個(gè)是DC 12V 3A,一個(gè)是DC 5V 200mA。12V穩(wěn)壓選用了1501A12開關(guān)穩(wěn)壓IC(此芯片最大電流可以承受5A,如果要達(dá)到這么大的電流,配套的電感很重要,必須使用藍(lán)綠磁環(huán),0.85mm的漆包線繞制,22uH的電感量)。5V的電源用7805對12V電源進(jìn)行穩(wěn)壓。單片機(jī)用的是ATMEGA48,使用洞洞板焊接做實(shí)驗(yàn),芯片的熔絲只修改了下振蕩源為外部晶體振蕩和關(guān)閉8分頻功能,未開啟BOD。

因?yàn)?2V的電壓系統(tǒng)要帶動(dòng)一個(gè)直流電機(jī),由12V的繼電器進(jìn)行帶動(dòng)控制,因?yàn)殡姍C(jī)工作時(shí)帶動(dòng)的負(fù)載有可能會被外力阻擋而造成電機(jī)停轉(zhuǎn)過載,這個(gè)時(shí)候電機(jī)的堵轉(zhuǎn)電流可能達(dá)到3A左右,所以在硬件上我做了保護(hù),采用AVR的ADC檢測電機(jī)的工作電流,如果發(fā)生過載,則馬上停止電機(jī)工作。

這個(gè)手工焊接的控制板測試時(shí)工作正常,包括電機(jī)過載測試,都未發(fā)生什么故障。

都測試通過后,制板回來,燒寫程序的時(shí)候順便打開AVR的BOD,設(shè)置為4.3V。然后開始著手做一些過載測試,發(fā)現(xiàn)一過載MCU就馬上復(fù)位~~~超級郁悶啊~~~以為自己又改了什么程序?qū)е虏环€(wěn)定,或者是啟動(dòng)電機(jī)工作后的延時(shí)時(shí)間不夠(大家都知道:在驅(qū)動(dòng)大功率負(fù)載的時(shí)候,在接通繼電器的時(shí)候,MCU的指令控制一定要再延時(shí)幾十個(gè)毫秒~幾百個(gè)毫秒左右,否則會出現(xiàn)繼電器吸合后馬上斷開的問題。詳細(xì)原因不在本文討論范圍之內(nèi)就不多說了,書本上都有詳細(xì)說明這些用法),真的很打擊人~ 想想AVR也沒這么脆弱~~或者是我布板設(shè)計(jì)不合理???沒這個(gè)理由的,以前的板子可是用洞洞板焊接的,以前不管怎么測試都不會復(fù)位。試著增加了輸出控制的延時(shí)時(shí)間,還是一樣的結(jié)果,一過載就復(fù)位。

軟件改了~不行~~~寫入以前的軟件~也不行

換回以前的洞洞板測試,OK,沒問題。不會吧~~~

靜下心來仔細(xì)想想,兩個(gè)板的差異,硬件一樣,軟件一樣,芯片一樣。等等…好象…對了!新做的板子都開啟了BOD使能。馬上先把BOD關(guān)了,果然,系統(tǒng)沒有再發(fā)生過一次復(fù)位的情況。問題是解決了,但總得給個(gè)理由吧,總不能就放著BOD不用~~~再用眼睛仔細(xì)觀察電機(jī)過載時(shí)電路板的一些狀態(tài),發(fā)現(xiàn)12V的LED電源指示燈會在電機(jī)過載的瞬間暗了一下,哇靠~!火眼金睛啊~!多帶了個(gè)眼鏡果然不一樣!^_^哈哈,知道哪里的問題了。應(yīng)該是電機(jī)過載時(shí),12V的電壓有所跌落,然后導(dǎo)致經(jīng)過7805穩(wěn)壓后的5V電壓也有所跌落,雖然這個(gè)電壓的跌落只是瞬間,可能有跌到 4.3V以下,但這個(gè)瞬間馬上被BOD檢測到了,BOD強(qiáng)制MCU復(fù)位。這個(gè)瞬間的跌落用萬用表是檢測不出的,特別是用數(shù)字表更看不出了,有示波器的話就可以看下這個(gè)的跌落波形了。我手上只有兩個(gè)數(shù)字表,所以沒法把這個(gè)瞬間的波形捕捉出來給大家看了。(有些時(shí)候數(shù)字表還不如指針表,指針表可能還會更直觀的顯示出一些瞬態(tài)變化,如果有指針表應(yīng)該也可以看出一些細(xì)微的電壓波動(dòng))

解決方法:BOD的作用上面馬老師已經(jīng)說了,所以還是不能關(guān)掉了事,設(shè)置為2.7V即可,我這樣做有沒有道理大家自己想咯^_^

把自己使用BOD的過程分享出來是想告訴大家:使用BOD的時(shí)候不是隨手開下就了事的,要注意實(shí)際工作的一些異常狀況的發(fā)生,設(shè)置好適合系統(tǒng)的BOD電壓才能保證你的系統(tǒng)工作的更可靠。



關(guān)鍵詞: AVR BOD 寬電壓

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉