MSP430常見問題之工作模式和功耗類

2022-03-20 14:13:12 字數 2333 閱讀 2946

q1:1,msp430進入lp 模式後,cpu 停止執行,那麼,進入中斷執行退出後,由於sr的恢復,導致還處於lp 模式,是否意味著,cpu 在退出中斷後立即停止了呢?

2,也就是說,進入lp 模式後,要讓非中斷流程執行的話,只能在中斷退出前把儲存在堆疊裡面的sr 修改了?3,由於中斷自動恢復儲存的暫存器,要想在中斷程式裡面修改堆疊裡面的儲存的sr,只能用彙編了?

q2:1、是的。

2、是的。

3、是的。_bis_sr_irq() 以及_bic_sr_irq() 函式可用。

q2:有個程式進入lpm3 後拿萬用表測電流在40ua 左右,不是的datasheet裡說的小於2ua。萬用表2ma 檔串接在電池和vcc 之間。甚至於我寫了最基本的初始化函式和main函式如下,測試電流值仍然在40 多ua。我想知道如何才能準確測得lpm3 下的電流,或者說是否萬用表本身有影響?因為我們的程式要求有至少5年電池壽命,用的125ma 的cr1632,需要耗電在2.8ua下才行。

a3:我和你做的東西是差不多的,也用的是f201x 或f21x1 的**,所以也測量過這個,對這個經驗我有這幾方面:

1、萬用表的問題:有些萬用表最小是2ma檔,根據測量儀器的特性,接近滿量程時的測量資料較準確,所以2ma 檔測量2ua的電流時,相差1000倍,極不精確。我測量時使用的是一塊帶有200ua檔的dt830數字表,實測lpm3 下只有0.7ua,與f201x 手冊上標註一致。

2、濕度與pcb防潮問題:如果是實驗板,因為上邊沒有阻焊膜,很容易受潮造成板上漏電,所以這種低功耗的東西一定要密封好,建議成品直接用樹脂或是膠封起來,哪怕是熱熔膠,也比暴露在空氣中強。我測試的時候,就因為對著板子喘了口氣,就發現表上電流示數開始變大了——這個電流實在是太小了,小到不能忽視任何干擾了。另外,要是手摸了板上子特別是電源兩端的話,這個直接會造成幾十到幾百微安的電流,所以用手拿著板子測是極不科學的,要是不拿板子錶筆不好扎的話,建議去電子商場買一對勾夾子,我買的1.5乙個,3 塊錢一對。勾好以後把板子懸空放著最好。

3、電路內的損耗電流:尤其是rc 方式的slope,要想省電就必須嚴格控制電容的容量,越大越費電,或是說,如果你的**容有餘量的話,就要嚴格控制充電時間,否則充的時間長了,也一樣會發生耗電增加的情況。最注意的就是,不要充上電之後去睡,醒了再放電檢測,那樣因為漏電的關係,損耗最大,哪怕你的電

容容量很小也不行。

4、初始化的選擇:初始化的時候,一定要把不用的東西全關掉,包括io 口全置為輸出,並輸出為低電平,而且不要選擇ren,或是像樓主的程式那樣,ren 置0。建議的初始化就是所有的sel=0,ren=0,dir=0ffh,out=0。像樓主現在的初始化把p1sel 置了三位,那樣就把那些模組一直選通了,可能會增加耗電。最好是模

塊在使用前就不開啟。當然如果為了利用模組的高阻效能而常開對應的比較器或adc 埠的話,建議置一下對應埠的capd,這樣可以進一步的減少寄生電流的產生。

q3:#include

#include

int main()

error[pe020]: identifier "_bis_sr" is undefined

以上程式為什麼會出錯?直接給sr 賦值也不成,並且到頭檔案中也沒找到sr 的定義,這是出了什麼問題呢?

ta0 的時鐘選用0.5m 8分頻,近似計數值63 為1ms,使用連續計數方式。

a3:將標頭檔案改成

#include

#include

#include 即可正常執行。

q4:低功耗設計中430接cmos器件要注意?

a4:在低功耗產品設計中,當430的i/o 口與cmos 器件介面時,比如lcd之類的,為了省電,lcd間歇供電,當lcd關斷時,與之相連的430的i/o 口一定要設定為輸入口或者設定為輸出為1.否則lcd內部cmos器件的i/o口通過二極體導到其vcc上,這樣mcu的電流變大了,功耗變的更大了.

q5:程式總是不正確執行,執行就出現下述錯誤:cpu is off (low power mode ) and interrupts are disa××ed! cannot excute step/go到底是怎麼回事?看了cpu 暫存器中cpuoff =1 的,但沒有設定低功耗模式呀?

a5:查下晶振是否正常;程式不能正常執行是一步都不能走麼?如果只是某個位置,看看程式對外圍控制是否會讓時鐘或者電源受到影響;再次確認是否真的沒有設定低功耗,注意看低功耗的巨集定義。

q6:當cpu 關閉後,在中斷函式裡面的計算,比如全域性變數i 的累加等計算是由誰來執行的呢?為什麼cpu關閉後還可以處理很多計算,賦值,判斷等指令呢?

a6:在中斷裡cpu 是處於active 模式的,進入中斷後,dco會自動起震,430 退出低功耗模式。

q7:430 在低功耗的時候,閒置的口線應該是輸入還是輸出??

a7:不用的i/o口設定為輸入時接地,或者設定為輸出時懸空。

MSP430常見問題之通訊類

1 430 串列埠中,有個r d 控制線,在接收上位機的資料,但本身的資料有無傳送完畢不知道啊,什麼時候才可置低r d 位來接收資料啊?好像430 沒有傳送完中斷標誌 a1 位元組主動傳送,一般都能發出去,除非你的的時鐘有問題 可以用程式檢測,半雙工通訊,可以多傳送乙個位元組,作為判斷,當最後個位元...

MSP430常見問題之AD轉換類

q1 msp430f149 ad 的輸入阻抗有多大?a1 rc 2000歐 30pf q2 msp430 adc12 模組的速度?a2 adc12 的轉換速率是轉換所需的adc12clk 以及時鐘的一項功能。adc12clk 的近似最小值與最大值分別為500khz 及6.5mhz。速度最快的整個轉換...

MSP430常見問題之FLASH儲存類

用iar embedded workbench for msp430 通過jtag往msp430上寫程式。為了知道片內程式的版本,必須讀出flash 中內容。什麼工具軟體可以通過jtag口實現這個功能?a1 熔絲未燒斷的話,做個空程式的專案,然後在c spy選項裡選擇保留未改變的區域,debug後看...