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.

[参考译文] MSP430FR6047:难以获得计时器电容器计数器值

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1522708/msp430fr6047-difficulties-in-getting-the-timer-captuer-counter-value

器件型号:MSP430FR6047

工具/软件:

尊敬的支持团队:

在开发固件以从 MSP430FR6047器件的计时器 B0捕捉输入(TB0.2、引脚#33)检索计数器值时遇到了困难。

具体来说、虽然计时器 B0设置看起来正确并且计时器寄存器 TB0R 按预期递增、但 CCI (捕捉/比较输入)信号指示和捕捉比较寄存器 TB0CCR2 的读数始终为零。 我怀疑我的配置中可能存在错误。

我正在使用 TI DriverLib 库(来自: MSPDRIVERLIB 驱动程序或库| TI.com)。

以下是用于计时器 B0捕捉模式初始化的相关代码段:

Timer_B_initCaptureModeParam Timer_B0_Param = {0};
    Timer_B_clearTimerInterrupt(TIMER_B0_BASE);
    
    Timer_B0_Param.captureInputSelect = TIMER_B_CAPTURE_INPUTSELECT_CCIxA;
    Timer_B0_Param.captureInterruptEnable = TIMER_B_CAPTURECOMPARE_INTERRUPT_DISABLE;
    Timer_B0_Param.captureMode = TIMER_B_CAPTUREMODE_RISING_EDGE;
    Timer_B0_Param.captureOutputMode = TIMER_B_OUTPUTMODE_OUTBITVALUE;
    Timer_B0_Param.captureRegister = TIMER_B_CAPTURECOMPARE_REGISTER_2;
    Timer_B0_Param.synchronizeCaptureSource = TIMER_B_CAPTURE_ASYNCHRONOUS;
    TB0CTL = TB0CTL | CNTL_0 | TBSSEL_1 | ID__8; //Counter Length 0xFFFF, Clock Source ACKL (32kHz), Clock Divider = /8 -> Period 16s
    Timer_B_selectCounterLength(TIMER_B0_BASE, TIMER_B_COUNTER_16BIT);
    
    Timer_B_initCaptureMode(TIMER_B0_BASE, &Timer_B0_Param);

应用这些设置后、切换 TB0.2输入(引脚#33)、然后尝试使用读取捕获的值:

Timer_B_getCaptureCompareCount(TIMER_B0_BASE, TIMER_B_CAPTURECOMPARE_REGISTER_2);

但是、该函数调用始终返回零。

希望它是清楚的。 我期待收到您的答复。

此致、

Vladimir Zitoli

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

    引脚33 (P3.2)似乎无法用于 CCI[2A]。 这有点不寻常、因为它是 TB0.2 (作为输出)、但数据表(SLASEB7D)表9-17和9-29似乎对此达成了一致。 您可能需要改用 P8.0。

    您还需要:
    1)按如下方式配置引脚:
    > GPIO_setAsPeripheralModuleFunctionInputPin (GPIO_PORT_P8、GPIO_PIN0、GPIO_SECONDARY_MODULE_FUNC);// PSEL=10 (来自 DS 表9-39)
    2)启动计时器(计数器):
    > Timer_B_startCounter(TIMER_B0_BASE,TIMER_B_CONTINUAL_MODE );

    [编辑:固定表引用。 两次。]

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

    尊敬的 Bruce:

    感谢您的宝贵建议!

    您的回复有助于解决该问题。  我的误解是从数据表的表7-2开始的、其中显示引脚33是 CCI2A 输入。

    此致、

    Vladimir Zitoli

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

    嗯。 我明白您对表7-2的理解。 现在我不确定谁是对的。  

    您最终是如何解决的? 我提到的任何其他事情都会产生你描述的症状.

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

    我跟踪了你的所有建议,现在它是有效的。 所以我想表7-2是不正确的。

    再次感谢您的支持。

    此致、