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.

[参考译文] MSP430G2253:使用多个传感器的 eCOMP

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1395810/msp430g2253-ecomp-usage-with-multiple-sensors

器件型号:MSP430G2253

工具与软件:

您好!

我需要将两个比较器用于两个不同的传感器。 如何使用比较器通道?

我在 Resource Explorer 上搜索、没有找到任何相关信息。

也许我没有足够的注意的代码片段...

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

    您好、Italo、

    您可以从TI 开发人员专区中提供的简单比较器示例开始 

    为了方便起见、我将复制这里。

    //******************************************************************************
    //   MSP430G2x13/G2x53 Demo - Comp_A, Detect Threshold, Set P1.0 if P1.1 > 0.25*Vcc
    //
    //   Description: Use Comparator_A to detect a voltage threshold.
    //   Using an external potentiometer, an unknown voltage is applied to P1.1.
    //   Comparator_A compares the unknown voltage to an internal reference
    //   voltage, in this example 0.25*VCC. If the unknown voltage is higher
    //   than 0.25*VCC, P1.0 is set, if not, P1.0 is reset.
    //   ACLK = n/a, MCLK = SMCLK = default DCO
    //
    //          MSP430G2x13/G2x53
    //       -----------------
    //   /|\ |            XIN|-
    //    |  |               |
    //    ---|RST        XOUT|-
    //    |  |               |
    //    R<-|P1.1/CA1   P1.0|-->LED
    //    |  |               |
    //    ---|VSS
    //
    //  D. Dang
    //  Texas Instruments Inc.
    //  December 2010
    //   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
    //******************************************************************************
    
    #include <msp430.h>
    
    int main (void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
      P1DIR |= 0x01;                            // P1.0 output
      CACTL1 = CARSEL + CAREF0 + CAON;          // 0.25 Vcc = -comp, on
      CACTL2 = P2CA4;                           // P1.1/CA1 = +comp
    
      while (1)                                 // Test comparator_A output
      {
        if ((CAOUT & CACTL2))
          P1OUT |= 0x01;                        // if CAOUT set, set P1.0
        else P1OUT &= ~0x01;                    // else reset
      }
    }
    
    

    由于您有两个传感器、因此您需要在两个传感器通道之间来回切换。

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

    您好!

    可以将任何端口引脚 用作比较器吗? 如果否、我在哪里可以找到此信息?

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

    尊敬的 Italo:

    否  您必须查看 数据表 PG6。  这个表格显示了每个引脚的功能。  比较器有8个输入通道[CA0...CA7]、和一个 CA_OUT 引脚。  我不知道您使用的是哪种封装、因此这些会显示在不同的引脚 s 上

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

    感谢您参考、我查阅的数据表中没有端口/比较器映射。

    在搜索和确认时、我确认一次必须启用一个通道。 对吗?

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

    是的、您一次只能使用 P2CA 位选择一个比较器通道。

    我对您的应用很好奇。 您能和我们分享一下您正尝试使用比较器做什么吗?

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

    您好!

    我将尝试对两个传感器单独使用两个通道。 我的想法是切换 P2CA0、一次使用每个通道、但没有结果。

    通过  在开发人员区域上设置代码片段、我执行了如下操作:

    while(1)
    {
        __delay(500000);
        CACTL2 ^= P2CA0;
    }
    
    #pragma vector = COMPARATORA_VECTOR
    __interrupt void COMPA_ISR()
    {
      if(!(CACTL2 & CAOUT))                      // Test comparator_A output
      {
        if(CACTL2 & P2CA0)
        {
            P1OUT |= BIT0;
        }
        else
        {
            P1OUT |= BIT6;
        }
      }
      else
      {
        P1OUT &= ~(BIT0 | BIT6);                         
      }
    }
    

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

    尊敬的 Italo:

    我认为这个问题可能在 while (1)。  我不确定您是尝试在"无连接"(P2CA0 = 0)和"CA0"(P2CA0 = 1)之间切换、还是尝试在"CA0"和"CA1"(P2CA0 = 2)之间切换?   

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

    您好、Dennis!

    根据数据表、P2CA 位只有1位长、因此我不知道 它是否会存储超过1位。 另外、数据表指出、它与 P2CA4一同使用、且在我的代码中始终设置。 说明如下:

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

    是的、您回答正确。  我在想一些不同的东西-抱歉。

    如果在第4行-> CACTL2 ^= P2CA0上设置了一个断点、然后将 CACTL2添加至表达式窗口、则运行调试器、每次它在第4行停止时、您会在 CACTL2中看到哪些值?

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

    您好!

    很遗憾、在 Linux 上的 CCS Studio 上不再支持我使用的电路板。 我正在使用 platformIO 进行编码、 无法 在其中设置调试工具。

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

    这是不幸的。  是否您无法检查 MSP430寄存器或存储器的内容?

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

    是的、不能。 我已经过了一个很好的时间去寻找方法,但没有结果。

    我已经决定通过硬件来实现比较器、因为对于最终项目、我将使用 MSPFR2155、其硬件似乎不允许比较器独立运行。

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

    好的。  我还有什么可以帮助的吗?

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

    您好!

    如果您能为我提供一些硬件安装资源、比如我要做的、我将不胜感激。

    感谢您的帮助。

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

    尊敬的 Italo:

    我可以尝试。  您能提供一些详细信息吗?

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

    您好!

    我将尝试连接光敏电阻和振动传感器。 对于光敏电阻、简单的比较器就足够了;对于振动传感器、我必须使用迟滞和低通滤波器。

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

    尊敬的 Italo:

    您是否准备了展示打算如何将传感器连接到 MCU 的原理图?