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