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/MSP430FR2433:使用计时器0校准VLO的设置

Guru**** 2568585 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/657489/ccs-msp430fr2433-settings-to-calibrate-vlo-with-timer-0

部件号:MSP430FR2433

工具/软件:Code Composer Studio

我一直在阅读,但仍然不能让它正常工作...

我想使用TimerA0校准VLO。 使用下面的代码,我尝试输入两次interreupt并获得时差,然后使用它校准VLO,因为知道时间段为 应用报告SLAA693A–2016年1月–2016年2月修订建议

我的问题是,时间一直在触发,并且 在调试器上从未清除过TA0CCTL1 &=~CCIFG...

有什么建议?

所以我有这个VLO功能

void cal_vLO (void)
{
cap_cnt1 = 0; //第一个捕获计数器
cap_cnt2 = 0; //第二捕获计数器

RTCMOD = RTC_CAL -1; //输出RTC脉冲每个RTC_CAL VLO时钟周期
RTCCTL = RTCSS__VLOCLK | RTCSR | RTCPS__1024;

TA0CCTL1 |= CM_1 | CCIS_1 | CAP | CCIE;// Timer0_A1设置
///捕获上升边缘,
//在RTC输出CCIS_1上捕获
/ CCIE启用中断
//启用捕获模式,


TA0CTL || tassel__ACLK | MC_2 | TALCLR;//使用ACLK作为时钟源,清除TALCL
//连续模式下启动计时器

__bis_sr_register (LPM3_bits | GIE); //第一次唤醒
__no_operation();
__bis_sr_register (LPM3_bits); //再次唤醒以获得第二次计数

计数= cap_cnt2 - cap_cnt1;

TA0CTL = 0; //停止计时器
TA0CCTL0 = 0;
RTCCTL = 0; //停止RTC
}



#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector = TIMER0_A1_vector
__interrupt void TIMER0_ISR(void)
#Elif defined(__GNUC__)
_attribute__((A3(TIMER0_Vector __void TI_ISR_1)


#endif
{
Switch(__偶 数_in_range(TA0IV,TA0IV_TAIFG))
{
CASE TA0IV_NONE:
中断; //不中断
案例TA0IV_TACR1:

IF (CAP_Cnt1 == 0)
{
CAP_Cnt1 = TA0CCR1;//第一个捕获计数

器}
否则
{


CAP_Cnt2 = TA0CCR1;/第二捕获计数


器}
/
TA0CCTL1 &=~CCIFG; //清除计时器IFG

__BIC_SR_REGISTER_ON_EXIT (LPM3_bits);//退出LPM3


中断; //未使用CCR1
CASE TA0IV_TACCR2:

中断; //未使用CCR2
CASE TA0IV_TAIFG:
中断; //溢出
默认:
中断;
}
}

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

    我将在上面提到的应用报告的作者中进行循环,以帮助您调试校准VLO的问题。 感谢您的耐心等待!

    此致,

    Matt Calvo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到你的症状--我看到2次中断,然后停止--所以我预计原因是其他地方。

    我非常确信,当您处于断点时,VLO (和REFO)会不断发出嘀嗒声,因此请谨慎地设置断点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    豪尔赫

    我在您的代码中没有发现任何问题。 CCIFG未被清除的原因是Clocks(REFO & VLO)在调试模式下不断地发出嘀嗒声,并且断点不会中断时钟。  我使用了您的代码进行测试,它运行良好。 我只在测试代码中将VLO时钟分配器从1024 (RTCPS__1024)更改为10 (RTCPS_10)。 您可以尝试附加的测试代码。

    此致,

    Darren

    e2e.ti.com/.../2100.FR2433_5F00_VLO_5F00_Calibration.c</s>2433

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

    的确,正如你所说的那样,必须小心断点。 现在代码开始工作了。

    :)