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.

[参考译文] MSP430F2132:IO 信号变化、内部寄存器和中断响应缓慢

Guru**** 2511985 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1023333/msp430f2132-io-signal-changes-slow-response-of-internal-registers-and-interrupts

器件型号:MSP430F2132

您好!

当输入 IO 信号发生变化时、我需要立即输出 IO 信号或 PWM。 。、发现响应延迟很严重、约为1.4-6ms μ s

简单。代码如下所示:

void main(void)
{

  WDTCTL = WDTPW + WDTHOLD; // Stop WDT

    P2DIR|=BIT5;
   // P2REN&=~BIT5;
    P2IES&=~BIT5;
    P2OUT&=~BIT5;
    P2IFG&=~BIT5;
    P2DIR&=~BIT5;
    //P2IE|=BIT5;


    //p3.0 trigger out
    P3DIR |= BIT0;
    //P3REN|=BIT0;

    while(1){
        if(P2IN&BIT5) //p2.5: mcu-triggerIn
          {
            P3OUT|=BIT0;
          }else{
            P3OUT&=~BIT0;
          }
    }

}

void main(void)
{

  WDTCTL = WDTPW + WDTHOLD; // Stop WDT

   //P2.5 interrupt
    P2DIR|=BIT5;
   // P2REN&=~BIT5;
    P2IES&=~BIT5;
    P2OUT&=~BIT5;
    P2IFG&=~BIT5;
    P2DIR&=~BIT5;
    //P2IE|=BIT5;


    //p3.0 trigger out
    P3DIR |= BIT0;
    //P3REN|=BIT0;

    _EINT();
    __low_power_mode_1();
}


//mcu-triggerin
#pragma vector=PORT2_VECTOR  
__interrupt void Port_2(void)
{ 

  P2IFG&=~(BIT5 | BIT4);
  if(P2IN&BIT5) //p2.5: mcu-triggerIn
  { 
    P3OUT|=BIT0;
    P2IES|=BIT5;

  }else{
      P3OUT&=~BIT0;
      P2IES&=~BIT5;
  }

}

输入和输出端口的逻辑电平在外部进行监控、并找到延迟、延迟时间与输入电平的占空比和较长的等待时间有关。

我认为可能的原因是:
1) 1)外部输入电平发生变化、更新内部引脚寄存器的速度很慢
2) 2)从输出 IO 到驱动 IO 电平的变化很慢

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

    您好、张君、

    为了获得更快的响应时间、提高 CPU 速度将减少响应的延迟。 此外、建议使用中断版本与轮询版本。 这将使程序能够更快地对 ISR 作出反应、而不必在它到达轮询版本中的特定代码行时作出反应。

    此致、

    Luke

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

    我不怀疑 MCU 代码执行的速度。 1m 和16m 的显性频率相同。 输入电平和输出电平之间的延迟时间较大(1.5ms ~ 8ms)
    我怀疑以下一两种情况:
    1) 1)输入电平变化后、驱动引脚寄存器的变化延迟
    2) 2) pout 寄存器值变化后、驱动输出电平将延迟

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="456823" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1023333/msp430f2132-io-signal-changes-slow-response-of-internal-registers-and-interrupts/3783208 #3783208"]输入电平与输出电平之间的延迟时间较大(1.5ms ~ 8ms)[/quot]

    输入和输出信号的(假设的 LSA)捕获不显示输入信号的上升和下降时间。

    您是否有示波器、因为它可以让您看到上升和下降时间? 缓慢的上升或下降时间可能会解释明显的延迟。

    此外、什么器件是输入信号源?

    查看代码、我看不到任何解释延迟的东西。

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

    谢谢

    输入信号源:其它 MSP430定期输出信号

    P2.5输入变化、通过 IO 中断同步输出 P3.0

    P2.5 上升时间 ≈ P3.0  上升时间=380us

    P2.5 下降时间 ≈ P3.0  下降时间 =370us

    p2.5上升- p3.0上升 延迟:4ms

    p2.5下降- p3.0下降 延迟:2.6ms

    
    void main(void)
    {
    
      WDTCTL = WDTPW + WDTHOLD; // Stop WDT
    
    
        P2DIR|=BIT5;
        //P2REN&=~BIT5;
        P2OUT&=~BIT5;
        P2IFG&=~BIT5;
        P2DIR&=~BIT5;
        P2IES&=~BIT5;
        P2IE|=BIT5;
    
    
        //p3.0 trigger out
        P3DIR |= BIT0;
        P3OUT&=~BIT0;
        
        _EINT();
        //__low_power_mode_1();
    }
    
    
    //mcu-triggerin
    #pragma vector=PORT2_VECTOR  
    __interrupt void Port_2(void)
    { 
    
      P2IFG&=~BIT5;
      if(P2IN&BIT5) //p2.5: mcu-triggerIn
      { 
        P3OUT|=BIT0;
        P2IES|=BIT5;
    
      }else{
          P3OUT&=~BIT0;
          P2IES&=~BIT5;
      }
    
    }

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

    感谢 和 Chester Gillon

    更改输入 IO 端口后、发现响应速度很快。 经过分析、引脚2.5具有一个大电容滤波器。 调整后、反应时间快。