MSP430常見問題之看門狗及定時器類

2021-09-06 12:05:31 字數 4341 閱讀 5043

q1. 定時器兩個中斷taie 和ccie,有什麼區別?兩個中斷的中斷向量一樣嗎?

a1:taie 和ccie指的是不同事件。taie指tar 計數器溢位,從65535 到0 的變化,由taifg 引起的。ccie指捕獲到相應訊號(捕獲模式下);定時時間到(比較模式下)。由ccifg引起的。兩個中斷的中斷向量不一樣,taifg 一般進timera1_vector;ccifg 的話要看用的是哪個定時器如果是ccr0 的話就進timera0_vector,如果是ccr1,ccr2……則進timera1_vector。(中斷向量的寫法因器件不同而有所不同)

q2 用f149 的定時器b 的捕捉功能, 遇到問題,在等待捕捉時,讀取tbr 的值總是隨機數。

a2:tbr 是一直再跑的,看tbccrx。因為捕獲事件發生時,硬體會自動把tbr 的值儲存到tbccrx 中。

q3:想輸出pwm,在中斷響應後能改變pwm的頻率嗎?

a3:調整相應的定時器配置,pwm的頻率和占空比都是可以改變的,不過週期頻率一般都是由ccr0據頂的。

q4:timera 不能進入中斷檢查的一般思路?

a4:不能進入中斷一般檢查思路:

1:是否開所屬模組中斷和總中斷

2:所屬模組所用時鐘是否有效

3:觸發條件成立沒?標誌位是否置位。

q5. msp430f149關於時鐘的問題

問題:時鐘採用8mhz,那麼執行for(i=0;i<980;i++);會花費多少ms?是不是1ms?另外,若是採用adc12自帶的時鐘,在rc振盪器在5mhz,且不分頻,執行一次採集(取樣和轉換)會花費多長時間?

a5:執行for(i=0;i<980;i++);這個得去看彙編看消耗了幾個機器週期這樣是看不出來的。當然一般的做法是把程式執行在**狀態下,在執行執行for(i=0;i<980;i++)之前記下此時的cyclecounter(view-->register)該語句執行完畢之後記下這時的cyclecounter,2者相減,在乘以mclk的週期。若是採用adc12自帶的時鐘,在rc振盪器在5mhz,且不分頻:adc12取樣是12個adc12clk 外加乙個adc12clk 用來把結果存到adc12mem。所以時間t=13*1/5m 秒。

q6:430f149,中tactl 中scci 是什麼功能?

a6:latched capture signal (read)處於捕獲模式時,接入的訊號狀態0/1。

q7:程式執行完成後,進入lpm3 模式,大約過3 秒鐘之後,又再進入正常模式,即從lpm3退出,再一次從頭開始執行程式,執行完成後,再一次進入lpm3 模式。如此往復迴圈下去。請問這個能不能通過定時器a來實現?

a7:能。

1、在主程式中完成初始化後進入lpm3 模式。

2、在lpm3 模式下,aclk必須工作,並且ta選擇aclk為時鐘源。

3、當ta 中斷時,cpu 在進入ta中斷服務前,會自動喚醒。

4、在ta 中斷服務中呼叫要被週期性執行的程式。

5、從ta 中斷服務返回後,cpu 又會自動恢復到中斷發生前的lpm3 模式(即,主程式會永遠停留在進入lpm3

模式的那條語句中程式)。

q8:中斷向量和中斷標誌暫存器的區別?

a8:iicifg 是中斷標誌,指示是否產生中斷。iiciv是中斷向量,是中斷**的入口位址。mcu 首先查詢是否有中斷標誌產生,如果有,再查詢中斷向量,轉去執行中斷服務程式。

q249. 關於timera 計數問題

用timera 對外來脈衝計數,脈衝輸入taclk,讀到的值總是不准,不知道各位有什麼高招?timera 益出有什

麼好辦法可以連續計數?

a10:

1、應該是漏計了,輸入頻率不是很高,最高也就是20khz。

2、timera 我用的是連續計數到0xffff 後中斷的方式,在溢位中斷裡累計中斷次數。然後應用程式裡面用溢

出次數*65535+tar 值,就是連續計數值。

q11:知道定時器可輸出自定義占空比的pwm波,找了些參考程式看,大概是這樣的

tactl=tassel0+taclr+mc0;

cctl0=ccie;

ccr0=360;

ccr1=327;

cctl1=outmod_2;

p2sel |= bit5;

這樣是不是直接從p2.5埠輸出pwm波,晶元不能工作在低功耗下啊?怎麼樣讓晶元工作在低功耗,等有波形翻轉時產生中斷啊?

a11:outmod_7 我推薦那樣比較好計算指定占空比時ccr1 與ccr0 的值,這種情況下晶元可以工作在低功耗模式下只要你保證在該模式中你的ta 時鐘源仍然開啟就行,至於波形翻轉這些都是硬體完成,無需cpu干預。

q12:想用ta 的ccr0 定時中斷,增記數模式,但我看書上的ccifg0的設定只有在ccr0與tar 的值相等時才置位,下乙個週期馬上又復位了。要是此時正在執行一條指令,那豈不是錯過了進入中斷了嗎?

a12:ccifg0 應該是響應了中斷服務程式後才復位的或者用指令清除,不會錯過的.。

q13:msp430 中斷所需的最小輸入脈寬是多少?

a13:最小中斷脈寬必須大於1.5 主時鐘週期(mclk),以確保中斷有效。有關問題請參閱器件特定的資料表。

q14:430 在低功耗模式下, 是哪幾個模式(lpm0,lpm1,lpm2,lpm3,lpm4) 下,還支援看門狗。lpm3,lpm4支援看門狗嗎。

a14:在只有在lpm4 模式下,看門狗才關掉,其他模式下只要選擇了看門狗模式,時鐘會一直跑。

q15:在某種模式下把看門狗使能,那麼功耗將增加多少?

a15:這個定時器模組不會引起額外的功耗(lpm3 模式下,不論是否開啟看門狗,系統耗電會低於1ua)。

q16系統復位後,如何判斷是看門狗引起的復位呢,還是上電引起的復位呢?能不能通過看門狗中斷標記來判

斷?是不是看門狗做定時器時才能使能看門狗中斷控制位?

a16:看門狗引起復位會在標誌暫存器中的wdtifg 為1,而上電復位為0。

q17:一般使用如下指令進行看門狗停止:wdtctl = wdtpw + wdthold; //關閉看門狗。那麼看門狗開啟是否可以採用指令:wdtctl &= ~(wdtpw + wdthold); //開啟看門狗?

a17:需要理解wdtpw、wdthold 的具體意思。這些都在標頭檔案中的巨集定義。wdtpw為暫存器訪問金鑰,如果寫入錯誤的金鑰,會產生復位;wdthold為看門狗時鐘關閉;暫存器wdttmsel選擇看門狗是工作在定時器模式還是在看門狗模式,所以要開啟看門狗應該wdtctl = wdtpw + wdttmsel;具體定時時間可以看標頭檔案,標頭檔案中都有注釋。

q18在程式中間採用如下指令:wdtctl = wdtpw + wdtcntcl;//清開門狗,防止在程式正常執行中復位。是否正確?

a18:錯誤,程式一樣會復位。wdtcntl為清除計數器,wdthold 為關閉計數器,兩個暫存器的概念不一樣,使用時需要注意。

q20我想輸出pwm,在中斷響應後能改變pwm的頻率嗎?

a20:調整相應的定時器配置,pwm 的頻率和占空比都是可以改變的。ccr0 的值改變週期,ccr1(和輸出對應的暫存器)改變占空比。

q21使用msp430 產生pwm 波形,一般抖動問題如何解決?

a21:提高時鐘精度。

q22中斷向量和中斷標誌暫存器的區別?

a22:ifg 是中斷標誌,指示是否產生中斷。iv 是中斷向量,是中斷**的入口位址。mcu 首先查詢是否有中斷標誌產生,如果有,再查詢中斷向量,轉去執行中斷服務程式。

q23使用了timer_b的單元1 和單元2測量頻率,計數過程中發生的溢位中斷,如何判斷這個溢位中斷是哪個單元產生的?

a23:timer_b 使用兩個中斷向量tbccr0 中斷向量ccifg 和tbiv 中斷向量。tbiv包含所有其他的ccifg 和tbifg。

q24用430 微控制器進行連續的資料採集,每次持續時間得幾十秒,但是還要用微控制器實現實時時鐘功能,期間每秒都得進timer 中斷計時。這樣勢必會影響資料的連續採集。這種矛盾該怎麼解決呢?

a24:資料採集啟動後,有一定的時間才能完成ad 轉換.這段時間內,cpu要麼空轉,要麼進行時鐘處理.因此我認為cpu幹這兩件工作完全勝任,只要:

1. 提高cpu 時鐘到8mhz。

2. 用中斷方式進行ad 及時鐘處理,中斷程式要高效小巧。

3.資料採集從微觀上講,並不是連續不停進行的(這是模擬電路的頻寬及資料穩定所決定的),因此合理選擇單位時間內ad 轉換的次數。

4.要連續採集幾十秒資料,單位時間內ad 轉換的次數應與系統的資料儲存空間大小一併考慮。

q25乙個ta 或tb 最多只能產生兩個中斷嗎。要不是的話,中斷向量錶該怎麼處理??

a25:應該說是兩個中斷向量位址,不能說產生兩個中斷。ta、tb 總4 個中斷向量位址,ta、tb 各有兩個,如timer_a 的比較模式採用ccr0、ccr1、ccr2 就可以產生三個中斷,但中斷入口只有兩個,ccr0 占用乙個,ccr1、ccr2、taifg 占用乙個,通過中斷標誌來判斷是那個中斷源引起的中斷。

MSP430常見問題之看門狗及定時器類

q1.定時器兩個中斷taie 和ccie,有什麼區別?兩個中斷的中斷向量一樣嗎?a1 taie 和ccie指的是不同事件。taie指tar 計數器溢位,從65535 到0 的變化,由taifg 引起的。ccie指捕獲到相應訊號 捕獲模式下 定時時間到 比較模式下 由ccifg引起的。兩個中斷的中斷向...

MSP430FR6989之看門狗

msp430fr6989的看門狗比較簡單,只有乙個暫存器可以設定,如下圖所示。wdtpw 看門狗密碼。每次設定wdtctl暫存器都要向wdtpw寫入0x05a。wdthold 禁用 啟用看門狗。wdtssel 設定看門狗時鐘源。wdttmsel 看門狗模式設定。為0進入看門狗模式 為1進入間隔定時器...

MSP430常見問題之通訊類

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