This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/RF430FRL152H:使用计时器 CC 进行频率检测

Guru**** 2540720 points
Other Parts Discussed in Thread: RF430FRL152H

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/753620/ccs-rf430frl152h-frequency-detection-using-timer-cc

器件型号:RF430FRL152H

工具/软件:Code Composer Studio

Hallo 所有人、

我的目标是通过 RF430frl152h 微控制器读取/检测外部源的频率。

我找到了一个使用计时器(捕获比较)来确定 外部信号周期的值的代码。
遗憾 的是、它不起作用(周期的值始终为0、它似乎计时器不起作用。。我选中了、并且始终处于"默认情况"。)  我不明白我是否在配置上犯了一些错误、或者在其他地方发生了一些错误。

如果有人知道如何解决问题或有其他选择、请告诉我。
此致。

朱利亚诺

// RF430frl152h
// --------
// /|\| |
// || |
// -|RST |
// | |
// | P1.0/TA0.1|<- CCI1A <-(通过捕捉比较定时器测量的外部频率源)
// | |
// | |
// | |

#include 
#include 

unsigned int Count;
unsigned int REdge1、REdge2;
unsigned int period;

int main (void)
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器

//配置端口引脚
P1DIR &=~BIT0; // P1.0/TA0.1输入捕捉
P1SEL0 |= BIT0; // TA0.1选项选择
P1SEL1 |= BIT0; // TA0.1选项选择

//将 TA0CCR1配置为执行输入捕捉
TA0CCTL1 = CAP + CM_1 + CCIE + SCS + CCIS_0;
// TA0CCR1捕捉模式;CCI1A;两者
//上升沿和下降沿;中断使能
TA0CTL |= tassel_2 + MC_2 + TACLR + TAIE; // SMCLK、控制模式;启动定时器

//变量初始化
计数= 0;

while (1)
{
_bis_SR_register (LPM0_bits + GIE);//输入 LPM0
__no_operation(); //用于调试器
//退出 LPM0
IF (TA0CCTL1和 COV) //检查捕捉溢出
while (1); //永久循环

周期= REdge2 - REdge1; //计算周期
}
}
// TA0_A1中断矢量
#pragma vector = TIMER0_A1_vector
__interrupt void TIMER0_A1_ISR (void){
switch (__even_in_range (TA0IV、0x0A))
}{
案例 TA0IV_TACCR1: //向量2:TACCR1 CCIFG
IF (TA0CCTL1和 CCI){ //捕捉输入引脚状态
如果(!Count){ //捕获上升沿
REdge1 = TA0CCR1;
count++;
}
否则{
REdge2 = TA0CCR1;
计数= 0;
__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//返回 main 时退出 LPM0
}
}
否则{}
中断;
案例 TA0IV_TACCR2:break; //向量4:TACCR2 CCIFG
默认值:中断;
}
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Giuliano、

    我们没有将计时器用于此类应用。 它基于 MSP430计时器模块、因此我建议查看 MSP430的文档。 不过、我怀疑您是否能够使用它执行大量操作、该器件不是用于通用 MCU、而是用于与传感器进行通信。 基本上、计时器等外设更适合管理应用程序流、而不是信号测量。 也就是说、如果您测量的信号不像方波那样快速且相当简单、那么我可以看到它在工作。

    尽管如此、这并不是我们希望支持的器件应用、因此查看 MSP430文档将是您的最佳途径。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Hallo Ralph、

    没错、我必须测量的信号是1-20kHz 之间的方波和频率。 这有可能吗?!
    同时、我已经在研究如何使用 MSP430实现它、实际上、我正在从中获取提示。

    非常感谢您的帮助。

    最好。
    朱利亚诺