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.

[参考译文] MSP430FR2355计数频率

Guru**** 2516170 points
Other Parts Discussed in Thread: MSP430FR2355

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1069478/msp430fr2355-count-frequency

《线程》中讨论的其他部件:MSP430FR2355测试

你好

我 有一个传感器连接 到 MSP430FR2355启动板。   我有数字输入来计算频率(当分频器通电时)。 我想 测量  来自数字输入的频率分配器(5–6 MHz)的频率。 请 给我一些建议来执行此任务,并为我的编程提供示例代码?

 我应该使用哪个针脚来读取频率?

此致,

埃勒姆

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

    您好,Elham,

    传感器信号的频率为5 - 6MHz? 对吗?

    我认为这太高了,MSP430FR23555的最大 MCLK 为24MHz。

    谢谢!

    此致

    约翰逊

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

    你好,约翰逊

    感谢你的回复。

    我的目标是找到一些不同的范围,例如,1-1.2 MHz,2-2.4MHz,3-3.5MHz 和5-6MHz。

    此致

    埃勒姆

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

    您好,Elham,

    一个想法:也许您可以尝试使用 COMP 触发计时 器,然后使用计数器值来区分不同频率。

    谢谢!

    此致

    约翰逊

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

    此线程处理类似的问题。 也许有一些有用的东西?

    https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1067764/msp430fr2355-frequency-counter

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

    你好,约翰逊

    感谢你的回复。

    我将测试 您的想法, 并尽快与您联系

    此致

    埃勒姆

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

    你好,布鲁斯

    感谢您的回答,

    我从您的链接中了解到,这就像我的问题。

    我会再看一看,很快就会回来。

    此致

    埃勒姆

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

    您好,Elham,

    此处有任何更新,您仍需要支持吗?

    谢谢!

    此致

    约翰逊

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

    你好,约翰逊

    感谢你的回复。

    目前还没有找到正确的示例。  

    我正在查看频率计数器的一些代码。 我是 MSP 的新用户,现在还在学习,但我认为该代码应该相当简单。

    请帮帮我解决这个问题。

    此致

    埃勒姆  

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

    您好,Elham,

    您可以参考以下示例:

    https://dev.ti.com/tirex/explore/node?node=ANcmdW6geYSVsxVVNMB9rA__IOGqZri__LATEST

    此致

    约翰逊

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

    尊敬的约翰逊

    感谢你的回复。

    我正在使用  MSP430FR2355启动板,但我 无法访问 P2.7。  

    我可以使用另一个 P2.7引脚实例吗?

    此致

    埃勒姆  

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

    您好,Elham,

    您必须使用 TBxCLK 引脚,如 P5.2 (TB2CLK):

    谢谢!

    此致

    约翰逊

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

    尊敬的约翰逊

    感谢你的回复。

    我将 P2.7更改为 P5.2和计时器,但我仍然没有任何东西。

     请帮我解决问题。

    最佳  

    埃勒姆

    #include <msp430.h>
    unsigned long timerBcaptureValues;
    
    #define TB2IV_NONE          (0x0000u)    /* No Interrupt pending */
    #define TB2IV_TB1CCR1       (0x0002u)    /* TB2CCR1_CCIFG */
    #define TB2IV_TB1CCR2       (0x0004u)    /* TB2CCR2_CCIFG */
    #define TB2IV_3             (0x0006u)    /* Reserved */
    #define TB2IV_4             (0x0008u)    /* Reserved */
    #define TB2IV_5             (0x000Au)    /* Reserved */
    #define TB2IV_6             (0x000Cu)    /* Reserved */
    #define TB2IV_TB2IFG        (0x000Eu)    /* TB2IFG */
    
    
    int main(void)
    {
      WDTCTL = WDTPW | WDTHOLD;                 // Stop WDT
    
      P1DIR |= BIT0;
      P1OUT = 0;
    
      P2SEL0 |= BIT2;                           // P2.7 selected as TB0CLK
    
    
      PM5CTL0 &= ~LOCKLPM5;
    
      // Configure Timer_B
      TB2CTL = TBSSEL_0 | MC_2 | TBCLR | TBIE;  // ACLK, count mode, clear TBR, enable interrupt
      TB2R = 0xFFFF - 20;                       // Offset until TBR overflow
      __bis_SR_register(LPM4_bits | GIE);       // Enter LPM4, enable interrupts
      __no_operation();                         // For debug
    
      while (1)
      {
        P1OUT ^= BIT0;                          // P1.0 = toggle
        __bis_SR_register(LPM0_bits);           // CPU is not required
      }
    }
    
    // Timer0_B3 Interrupt Vector (TBIV) handler
    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector=TIMER2_B1_VECTOR
    __interrupt void TIMER2_B1_ISR(void)
    #elif defined(__GNUC__)
    void __attribute__ ((interrupt(TIMER2_B1_VECTOR))) TIMER2_B1_ISR (void)
    #else
    #error Compiler not supported!
    #endif
    {
      switch(__even_in_range(TB2IV,TB2IV_TB2IFG))
      {
          case TB0IV_NONE:
              break;                             // No interrupt
          case TB0IV_TBCCR1:
              break;                             // CCR1 not used
          case TB0IV_TBCCR2:
              TB2CCTL0 &= ~CCIFG;
              timerBcaptureValues = TB2CCR0;
              TB2CCR2 += 50000;                  // Add Offset to TBCCR1
              __bic_SR_register_on_exit(LPM0_bits);// CPU active on reti
              break;                             // CCR2 not used
          case TB0IV_TBIFG:                      // overflow
              TB2CTL = TBSSEL_2 | TBCLR;         // SMCLK, clear TBR
              TB2CCTL2 = CCIE;                   // TBCCR1 interrupt enabled
              TB2CCR2 = 50000;
              TB2CTL |= MC_2;                    // Start Timer_B in continuous
              __bic_SR_register_on_exit(LPM4_bits);// Exit LPM4 on reti
              break;
          default:
              break;
      }
    }
    

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

     P2SEL0 |= BIT2;               // P2.7被选为 TB0CLK

    ->

     P5SEL0 |= BIT2;               // P2.7被选为 TB0CLK

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

    尊敬的约翰逊

    感谢你的回复。

    我变了

     P2SEL0 |= BIT2;              

     P5SEL0 |= BIT2;  

    但我还没有什么东西。

    最佳  

    埃勒姆

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

    您好,Elham,

    您可以尝试按照 MSP430用户指南和数据表在 CCS 中调试代码。

    您需要检查 P5.2 (PxSELx)的功能选择。

    谢谢!

    此致

    约翰逊

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

    另一条线程中有一个潜在的解决方案。 它使用 P2.2 (TB1CLK),后者具有启动板销。