最近在客戶的一個板子上,調(diào)試一個麥克風(fēng)觸發(fā)的點(diǎn)煙器??蛻羰怯幸蟮?,要盡量減少誤動作,就是普通的拍打,磕碰或者一般的氣流沖擊是不能觸發(fā)點(diǎn)煙的。然后我在這些基礎(chǔ)上,隨便寫了一段濾波程序,起初都很順利,基本不用調(diào)試,在仿真器和板子上運(yùn)行正常。調(diào)試時點(diǎn)煙器的板子是單獨(dú)用穩(wěn)壓電源供電的。然后當(dāng)我興致勃勃的把程序燒錄到IC里后,接通了直流電源,怎么吹麥克風(fēng)都沒有反應(yīng)了。
問題出現(xiàn)了,開始調(diào)試。第一想法是先看看麥克風(fēng)的輸入端的PADIER對應(yīng)的位設(shè)置是否正常,數(shù)字輸入對應(yīng)位一定要設(shè)置為1.然后又降低了判斷的計(jì)數(shù)參數(shù),關(guān)閉看門狗等等處理。結(jié)果都還是仿真時可以,燒錄出來就完全沒有反應(yīng)了。不過仿真時有時當(dāng)停止仿真器運(yùn)行時,也會彈出這個窗口,不停止不會彈出這個窗口。
可這個窗口的彈出不影響仿真器運(yùn)行時的結(jié)果,仿真的結(jié)果還是對的。就是燒錄出來的IC,運(yùn)行結(jié)果不對。后來甚至從PMS150G改型號為PFS122,發(fā)現(xiàn)結(jié)果還是一樣的,吹麥克風(fēng)沒有一點(diǎn)反應(yīng)。后來實(shí)在沒有辦法了,只能搬出示波器先來測試電壓。這一測試感覺好奇怪,我沒有吹麥克風(fēng)時,電壓也有異動,但是不接MCU就沒有問題,電源是正常的。異動的電源波形還直接讓我驚呼,線路沒有明顯的感性負(fù)載,電壓竟然還會高出平常那么多??蔁o論你信不信,示波器檢測的結(jié)果就是這樣的記錄。
從電源的情況看,可以確定是IC復(fù)位了,雖然看起來最低電壓還沒有跌低于1.8V,但也是2V左右了。既然還沒有吹麥克風(fēng),可以確定是初始化的過程中就產(chǎn)生了這個復(fù)位了。
經(jīng)查看,Timer2的初始化,原來是這樣寫的,TM2B的賦值落后于TIMER2開啟PWM設(shè)置,應(yīng)該是TM2B上電過程中,初值不確定,應(yīng)該不是0,造成了開啟PWM輸出的時候,就有了PWM輸出。
void timer2_init(void)
{
$ tm2c IHRC,PA3,PWM;
$ tm2s 6BIT,/1,/32;
// $ tm2s 8BIT,/1,/1;
tm2b = 0;
}
于是將TM2B的設(shè)置放置在設(shè)置PWM輸出之前。
void timer2_init(void)
{
tm2b = 0;
$ tm2c IHRC,PA3,PWM;
$ tm2s 6BIT,/1,/32;
// $ tm2s 8BIT,/1,/1;
tm2b = 0;
}
果然,這樣更改之后,在沒有吹麥克風(fēng)時,電源的波形也正常了。
可是一吹麥克風(fēng),這個異常的波形又出現(xiàn)了。這下可以明確是電源不行了。于是在MCU的電源端加了2個無極性電容,拆的,也不知道有多大,應(yīng)該至少20uF以上,也可能有70~90uF。這樣一來還真可以了。
其實(shí)早20年前,應(yīng)用電路對MCU的電壓要求可高了,連紋波都不能太大,就算是那時的AVR, PIC,也不例外??呻S著MCU設(shè)計(jì)技術(shù)的提高,如今的MCU的工作電壓大多數(shù)都相對較寬,2.5~5.5V的工作電壓范圍工作基本都是沒有問題的。所以設(shè)計(jì)師對MCU的電源穩(wěn)定性也越來越?jīng)]有那么在意,甚至有工程師為了節(jié)省成本,MCU兩端可能連電容都沒有。這樣的設(shè)計(jì)一定要特別注意,不是各家品牌的MCU都能在此環(huán)境下正常工作。不要在量產(chǎn)中才發(fā)現(xiàn)這類因?yàn)殡娫捶€(wěn)定性造成的功能異常問題,那就很麻煩了。
-
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350973 -
麥克風(fēng)
+關(guān)注
關(guān)注
15文章
636瀏覽量
54811 -
仿真器
+關(guān)注
關(guān)注
14文章
1017瀏覽量
83720
原文標(biāo)題:仿真和實(shí)際IC運(yùn)行效果不一致案例1
文章出處:【微信號:應(yīng)廣單片機(jī),微信公眾號:應(yīng)廣單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論