<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > pic單片機功耗問(wèn)題的解決

pic單片機功耗問(wèn)題的解決

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

最近一周一直在做。由于項目使用電池供電,所以顯得非常重要。根據數據手冊以及網(wǎng)絡(luò )上的資料,影響單片機功耗主要由以下幾個(gè)因素:

1:所有I/O引腳保持為高阻輸入高點(diǎn)平或低電平

2:關(guān)閉和CVref(可編程偏上參考電壓)、WTD、T1OSC、BOR(欠壓復位)等

3:PORTB片內弱上拉

4:所有不用的模塊全部關(guān)閉,在用到時(shí)再打開(kāi)

5:MCLR引腳必須處于邏輯高電平

PIC單片機在執行SLEEP指令后進(jìn)入睡眠省電模式。進(jìn)入SLEEP模式后,主振蕩停止,如果看門(mén)狗在燒寫(xiě)時(shí)打開(kāi)了,看門(mén)狗定時(shí)器將被清并保持運行。I/O口,周邊模塊和內部RAM將保持原來(lái)狀態(tài),所以如果要求睡眠后有很低功耗,應該在進(jìn)入SLEEP前把IO口置為高阻抗的輸入狀態(tài),不用的模塊也要關(guān)閉。另有些周邊模塊與主時(shí)鐘有關(guān),如在異步模式下的USART,將不工作。

喚醒SLEEP的條件有很多,如IO口電平變化,AD轉換結束,外部復位、看門(mén)狗溢出等,具體請參考數據手冊。

當執行SLEEP指令時(shí),PC+1的指令被預取指,當器件被一個(gè)中斷條件喚醒時(shí)(這個(gè)中斷的應是已使能的),如果GIE(全局中斷使能位)為0,器件將繼續執行SLEEP指令下面的指令。如果GIE為1,器件將執行已預取的PC+1指令后跳到0004H的中斷入口。所以建議SLEEP后面緊跟著(zhù)的一條指令最好是個(gè)NOP。

外部手動(dòng)復位MCLR將喚醒器件并RESET,表示狀態(tài)的標志位含義詳見(jiàn)數據手冊。

看門(mén)狗定時(shí)器在SLEEP下溢出將喚醒器件,然后執行SLEEP下面的指令,也有標志位指示狀態(tài)。

進(jìn)入SLEEP后,主振蕩停振,和主振蕩相關(guān)的模塊都會(huì )停止工作,A/D .液晶驅動(dòng)??撮T(mén)狗等模塊還是要在SLEEP指令執行之前關(guān)閉的。這樣功耗才會(huì )最低。

關(guān)于I.O口。在16C926的DATA SHEET里,還是說(shuō)到了一些。所有的I/O口,都有確定的接VDD或者VSS,而不能懸空。進(jìn)入SLEEP前,所有的I/O應該置為輸入口,接上拉或下拉。

對于PORTB口有內部上拉功能的應該選擇不上拉。

這個(gè)項目就是因為沒(méi)有關(guān)閉BOR在休眠時(shí)電流達到50UA而搞了近一周的時(shí)間才發(fā)現問(wèn)題。

下面是一位網(wǎng)友的測試數據:

測試條件:PIC16F676使用內部4MHzRC振蕩,電源電壓5V,測試在睡眠下的消耗電流

單片機在外部IO口設置成輸入并有固定電平的情況下,程序進(jìn)入一個(gè)NOP指令和跳轉指令的死循環(huán)后耗電約1.26mA

1.SLEEP之后:WDT開(kāi)并256分頻,每2.3秒左右喚醒一次,所有IO口為數字輸入口,直接接高電平或低電平。5V,0.159mA,主要配置:_INTRC_OSC_NOCLKOUT _WDT_ON _PWRTE_ON _MCLRE_OFF _BODEN

2.上面的程序沒(méi)動(dòng),只是配置 _BODEN_OFF,電流降為8.5μA,其它配置變化對電流消耗影響不大,WDT開(kāi)與不開(kāi)只差0.1μA,可見(jiàn)BROWN OUT DOWN功能是個(gè)耗電大戶(hù)。

3.上面的配置、程序沒(méi)動(dòng),所有IO輸入口懸空,結果電流變?yōu)?.8-1mA,以上均沒(méi)開(kāi)電平變化中斷,而且手接近單片機電流變的更大??梢?jiàn)雖然IO口看似沒(méi)有吸收電流,但干擾電平引起單片機內部頻繁翻轉的電流可以說(shuō)很驚人。

4.以上配置,僅將WDT分頻比改為1:1,各IO口仍然接固定電平,此時(shí)單片機WDT約每1.8mS喚醒一次,電流為8.8μA,可見(jiàn)RC的喚醒很省電。

5.以上配置,WDT1:256分頻,將所有IO口設置成輸出,并輸出低電平,IO口不接任何負載,結果電流為9.5μA,與輸入相比多了1μA??梢?jiàn)IO口的驅動(dòng)也是要能量的。

6.以上配置,WDT1:256,各AD輸入口設置成AD輸入,其它設置成IO輸入,均接固定電平,ADON置1,GO為零,此時(shí)AD模塊開(kāi)啟,轉換未開(kāi)始,轉換時(shí)鐘采用系統時(shí)鐘的1/8,電流8.8μA基本無(wú)變化,轉換時(shí)鐘采用AD獨立RC振蕩,電流仍為8.8μA,獨立RC振蕩,GO置1,轉換完成后繼續AD轉換,電流為9.2μA,期間沒(méi)有空余采樣電容的充電時(shí)間,可見(jiàn)AD轉換并不怎么耗電。

7.關(guān)閉AD,開(kāi)啟RA口的弱上拉,有弱上拉的IO懸空,WDT 1:1,電流8.8μA,將弱上拉的IO口其中一腳接地,電流猛增至212.4μA,換算下來(lái)一個(gè)弱上拉相當于一個(gè)24KΩ左右的電阻。

綜上所述,耗電大戶(hù)有兩個(gè):第一大戶(hù)是懸空的輸入腳,第二大戶(hù)為弱上拉時(shí)IO口接地。第三大戶(hù)為BROWN OUT DOWN RESET(電壓過(guò)低復位)。若要省電的話(huà)不妨以此參考。此次試驗是單片機沒(méi)有任何外圍電路的情況下測得,當然外圍電路比較復雜,設計省電模式其它電路的耗電也要考慮。若要非常省電,那么每個(gè)功能是否開(kāi)啟都是錙珠必較.

單片機相關(guān)文章:單片機教程


比較器相關(guān)文章:比較器工作原理


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理


晶振相關(guān)文章:晶振原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>