TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430G2553 測量頻率問題

測量頻率問題;找不出原因…..請大家幫我除錯 我找不到BUG

這個code是參考網路上大家用msp430g2553量測頻率的方法;外加顯示在LCD身上;我的偵測頻率是0~266HZ

因此我用了兩個中斷源; 一個是TIMER 計時1.2秒鐘 一秒鐘執行讀取訊號值 1.0~1.2秒(0.2)秒的時間執行閃爍LCD一次 顯示抓到頻率值

另一個TIMER則是 採用continues mode & capture mode 捕捉訊號 每32.768ms

偵測觸發上源訊號兩次第一次將continues Timer Value清除為0

                     第二次 偵測 continues Timer Value 為多少

第二次減去第一次時間差則為偵測到的頻率訊號 時間大小;若溢位則count_clock+1  公式如流程圖下面;

問題1. clock 準確度不準 計時器65536溢位 我用邏輯分析儀觀察的到約 33ms大小的時間 修正後每個clock 為0.508314us 但實際上 設定為0.5us

問題2. 兩個中斷源衝突會發生什麼事?  計算時間1秒的中斷源是每80us 中斷一次 而在中斷80us 每0.5us 又要中斷訊號去偵測上源頻率訊號 發現中斷源有重疊;

問題3.看似有問題 但我的程式可以執行 45HZ~266HZ以上看起來誤差值不多: 但45HZ以下頻率完全不准 甚至有很大的問題

          我推測30HZ以下就會有問題 因為看似0~65536(0~32.768ms == 0-30HZ)這個兩次計算時間差的計數器好像問題不大

但有誤差 且數據可以參考但超過65536訊號溢位的值不但沒有參考性且是亂數 好比偵測 同個1HZ大小頻率 卻會跳出4HZ或8HZ 且counter 溢位值

         每次都不同且有很大差距;我懷疑問題是出在這裡; 這問題困擾我很久 這個程式設計目前是規劃偵測1~266HZ 超過1秒(1HZ)以下的訊號直接濾掉

         由程式直接顯示0

問題4. 若不用中斷源當Timer 計數一秒 程式上有什麼寫法? 請給我個範例 謝謝 

請高手幫幫我吧…..

以下是我的流程圖:

流程圖

附上專案資料夾:

MSP430_CP_GetSpeed.7z

Susan Yang:

我看您在E2E英文版也发布了帖子

e2e.ti.com/…/790594

请您继续跟踪上述链接

灰小子:

看了你的代码,你的主时钟貌似用的dco。

这个dco本来就是不是太准的,但官网给出的手册里的数据是正负3%,你这个误差确实有些大。

建议把时钟通过io输出,测量一下确认是不是时钟的误差。

Chen yan-ting:

回复 灰小子:

所有msp series smclk似乎都是dco.

我也在懷疑誤差是怎麼造成的。

難道外掛石英震盪就能解決嗎

赞(0)
未经允许不得转载:TI中文支持网 » MSP430G2553 測量頻率問題
分享到: 更多 (0)