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.

MSP430F5438A: 定时器的计数时钟选用外部时钟的问题

Part Number: MSP430F5438A

当选用定时器B,来做脉冲计数的时候,选用P4.7作为时钟输入,P4.0的输入方波作为捕捉信号

请问:

TBSSEL=0时,选用了外部时钟输入, 计数的时候,是根据外部信号的上升沿计数,还是下降沿计数?

谢谢

  • 定时器计数,是根据输入脉冲的上升沿计数,还是下降沿计数?或者是只要有跳变就计数?在哪里可以配置这些参数呢?谢谢

  • 您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

  • 计数的时候,是根据外部信号的上升沿计数,还是下降沿计数?

    您好,是根据上升沿计数的,您可以参考 User Guide (SLAU208Q) Fig 18-3。

  • 我测试的结果,证明不是根据外部信号的上升沿计数,结论是:计数开始后,第一跳变沿不计数,第二个跳变沿开始计数,所以,如果第一个跳变沿是上升沿,那么以后的计数就都是下降沿计数。如果第一个跳变沿是下降沿,那么后面的计数,都是上升沿计数,请核实上面的结论,我是这么检测到的,谢谢

  • 您好,工程师使用 F5529 (没有 F5438A) 和 TA1CLK (无法访问 P7.7/TB0CLK) 尝试了类似的实验。 结果发现计数器在上升沿上计数。

    具体来说,程序在 P1.2 上生成一个单个上升沿,该沿通过接线连接到配置为 TA1CLK 的 P1.6 ,而 TA1R 计数为 1 (LED 灯)。

    F5529/F5438A 或 TA1/TB0 在这方面可能会有所差异,但您的结果更有可能受到您代码的影响。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ///
    #include <msp430.h>
    #define HZ 1000000UL
    int main(void)
    {
    WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
    P1OUT &= ~BIT0; // Launchpad LED, initially off
    P1DIR |= BIT0;
    // P1.2 is an ordinary GPIO, patched to P1.6
    P1OUT &= ~BIT2; // P1.2 output, initially low
    P1DIR |= BIT2; // (patched to P1.6)
    // P1.6 is TA1CLK, fed from P1.2
    P1SEL |= BIT6; // P1.6 as TA1CLK
    TA1CTL = TASSEL_0 | ID_0 | MC_2 | TACLR; // TA1CLK/1, Continuous [,clear]
    __delay_cycles(HZ/2); // Dawdle for a half-second
    P1OUT |= BIT2; // Rising edge to TA1CLK
    __delay_cycles(10); // Allow for wire delay
    if (TA1R != 0u) // If it ticked,
    P1OUT |= BIT0; // light LED
    while (1)
    {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX