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.

[参考译文] MSP430FR4133:有关 MSP430接收红外传感器数字输出的一些问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1221477/msp430fr4133-some-issues-about-msp430-to-receiveinfrared-sensor-digital-output

器件型号:MSP430FR4133

我有关于 MSP430代码的一些问题、我使用 p1.0连接了红外传感器、所以我只想确定 p1.0是高电平还是低电平、然后让 p1.7生成不同的占空比 PWM、即高电 平下为7.5%、低电平下为13%。

但结果是、即使传感器产生0和1个输出、P1.7也只产生7.5%的 PWM。

 

这是我的代码、

 

#include

 

空 main (void)

  WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器

 

  //将 P1.0配置为启用下拉电阻的输入模式

  P1DIR &&~BIT0; // P1.0输入模式

  P1REN |= BIT0;  // P1.0上拉/下拉电阻已启用

  P1OUT &=~Ω BIT0; // P1.0下拉电阻器被启用

 

  //将 P1.7配置为输出模式

  P1DIR |= BIT7;  // P1.7输出模式

  P1SEL |= BIT7;

 

  //设置 Timer_A0

  TA0CCR0 = 20000;  //设置 Timer_A0上限值

  TA0CTL = TASSEL__SMCLK + MC__UP + TACLR; //选择 SMCLK 作为时钟源、向上计数模式、清除 Timer_A0计数器

  TA0CCTL1 = OUTMOD_7; //设置 PWM 的输出模式7

 

  while (1)

  {

    IF (P1IN 和 BIT0)// P1.0高输入状态

    {

      TA0CCR1 = 2600;// 13%占空比

    }

    否则// P1.0低输入状态

    {

      TA0CCR1 = 1600;// 8%占空比

    }

  }

}  

谢谢

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

    1)如果您的传感器是 TSOP38型解调器、我建议您不要设置 REN 下拉。 其中许多/大多数通过内部上拉电 阻器提供高电平、而您的 REN 下拉电阻器(通常为~20k)正在与之对抗、并且可能取得胜利。 此外、IDLE 为高电平、因此如果您需要任何 REN 上拉电阻器、

    2) 2)通常、设置占空比不像每个 PWM 周期那样频繁。 红外协议通常会生成1ms 至2ms 范围内的脉冲、因此您将在20ms 周期内看到许多转换;PWM 周期可能大约应为1ms。

    3) 3)如果您使用的是 Launchpad、P1.0连接到 LED1 (JP1)和反向通道 UART (J101/TXD)、这两个连接都可能会遇到问题。 从长远来看、您可能不需要 P1.0、而是需要能够进行计时器捕获的引脚、例如 P8.3是 TA1.CCI2A、因此现在可能是一个不错的时机。

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

    您好、非常感谢您的答复、我只是想知道如果我拒绝内部下拉电阻器、应该怎么做。

    此外、当我连接到 p1.0时、红外传感器可以控制 LED1、即某些东西会封锁光线、关闭光线、不进行任何开启。 这意味着红外传感器的输出可以被 MSP430接收。

    我只是想让 p1.0能够识别何时为高电平、p1.7能够生成8%的占空比 PWM、而当为低电平时、p1.7能够生成13%的 PWM

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

    您在使用什么传感器?

    此外、对于 FR 系列器件、您需要添加:

    > PM5CTL0 &=~LOCKLPM5;  //启用 GPIO 设置

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

    这是红外传感器

    现在的问题是、p1.7仅生成一个 PWM、如果我设置上拉电阻器、p1.0始终为高电平、P1.7生成7.5%PWM、即使我不使用上拉和下拉电阻器、p1.7也仅生成13%的 PWM

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

    原来我在抽屉里有一个类似的装置。 我尝试了您的代码(+LOCKLPM5修复)、并在移除 JP1后、我得到了一致的结果。 安装 JP1后、当 OUT 为高电平时、它读数约为1.8V (不确定逻辑电平)、大概由 LED1下拉。 上拉/下拉似乎没有什么不同,但我怀疑你不希望他们在任何情况下。

    您是否在移除 JP1的情况下尝试过实验?

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

    是的、移除 JP1后问题已解决

    非常感谢