【MSPM0G3519 系列】定時器級聯時鐘輸入測頻率【進階版】
引言
考慮到前一篇文章 【MSPM0G3519系列】外部時鐘輸入測頻 測頻率的方式進入中斷的頻率過高,會影響程序主要代碼的運行,故這次采用了更進一步的方法去測量:定時器級聯采集外部信號時鐘。話不多說,盡快開始。
配置
注意:
1.以下圖中即完整級聯配置,兩個級聯無需打開中斷!
2. 主定時器比較觸發配置為外部時鐘輸入觸發,從定時器設置為事件觸發
原因:兩個65536的定時器級聯,從\(2^{16}\)變成了\(2^{32}\),計數次數不用再擔心溢出。
定時器級聯計數方式:主定時器計數達到65535,從定時器計數加1,直到兩個定時器達到65535。
主定時器配置

從定時器配置

捕獲定時器配置
捕獲定時器隨便配置個1s或2s或0.5s中斷即可,但是要注意在測出的頻率上×2或÷2。

程序
點擊查看代碼
void TIMER_1_INST_IRQHandler(void)
{
switch (DL_TimerA_getPendingInterrupt(TIMER_1_INST)) {
case DL_TIMERA_IIDX_ZERO:
DL_TimerA_getTimerCount(COMPARE_0_INST);
freq = DL_TimerA_getTimerCount(COMPARE_0_INST) + DL_TimerA_getTimerCount(COMPARE_1_INST) * 65536;
// freq = 999; /* 測試頻率 */
// printf("freq = %d Hz\r\n\r\n", freq);
timer_measure_freq_end_flag = true;
DL_TimerA_setTimerCount(COMPARE_1_INST, 0);
DL_TimerA_setTimerCount(COMPARE_0_INST, 0);
break;
default:
break;
}
}
定時器級聯優勢
- 可以獲得更大的計數次數,不用擔心溢出的問題。
- 使測得更準的外部時鐘頻率。
- 中斷頻率大大縮短,不影響主要程序的運行。
博客導航
本文來自博客園,作者:膝蓋中箭衛兵,轉載請注明原文鏈接:http://www.rzrgm.cn/Skyrim-sssuuu/p/18990099

浙公網安備 33010602011771號
https://orcid.org/0000-0001-5102-772X