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.

[参考译文] MSP430G2553:使用中断的 MSP430单稳态、具有延迟功能。

Guru**** 2595805 points
Other Parts Discussed in Thread: MSP430F5529, MSP430G2553

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/924994/msp430g2553-msp430-monostable-with-delay-using-interrupts

器件型号:MSP430G2553
主题中讨论的其他器件:MSP430F5529

大家好、
我想制作一个精密钟摆驱动器。 我可以使用两个单稳计时器和一个上升沿检测器、使用 LED 光敏电平来构建该器件。 我无法生成具有初始延迟的单个单稳脉冲。  基本上是下面的步骤7-9。 (我正在使用 CCS。)

为了制作准确的自由钟摆时钟、我希望在 BDC (底部死区中心)处使用磁驱动器驱动1秒的总周期钟摆。   使用一些 MSP430G2553芯片或 MSP430F5529 Launchpad 和两个 LED 光子。

如果需要、BDC LED 会触发驱动脉冲。  这种需要由钟摆振幅决定。  如果该值足够高、足以阻止第二个偏侧的光 ogate、则设置 AMP 振幅标志。 这会将振幅保持在一个恒定值。  

初始化是设置 AMP 标志并打开 BDC 光 ogate。 然后是…。

  1. 如果 BDC 被阻止、生成一个中断
  2. 可选: 向 RTC 输出计时脉冲以查看时钟如何保持时间。
  3. 关闭 BDC 光生成 LED
  4. 重置计时器
  5.  如果未设置 AMP 标志、则向摆动器施加驱动脉冲
  6. 复位 BDC 中断 标志
  7. 启动900ms 延迟计时器
  8. 900ms 完成后、生成中断
  9. 启动 ~300ms 计时器
  10. 该时间将打开 BDC 光生成 LED

    重复上述步骤。  

    这是基本驱动器。  

    答: 可以在步骤10中修改它、方法是使用占空比为10%的振荡器、并使用逻辑与组合其输出与导通状态。 这将减少所需的 LED 电流。

    b. 应修改为 在 BDC 启动650ms 延迟计时器、然后在650ms 打开 AMP 光 ogate。  因此它可以测量振幅。 这将以类似的方式重置其 LED。

我的基本问题是: >>>基本驱动器逻辑是否正确?  

我一直在研究许多示例、但大多数示例都是可证明的。  PWM 多频率可能很有用。  (我只使用生成的波形的一个或更短的周期。) 我知道、我可能需要为和功能或边缘检测添加4000系列逻辑芯片。

欢迎就此提出任何想法。    谢谢你。  

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

    运算。 初始化应不设置 AMP 标志。  

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

    您好、Sandy、

    您在此处将哪些特定功能与 MSP430 MCU 结合使用?

    此致

    Johnson

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

    这是我到目前为止的代码。  它有两个输入通道、 两个开关和切换每个 LED。  我还需要将4.7 LED 输出连接到引脚。  这没什么大不了的。   
    我会在作出更多努力后再回到这个问题上。  我将添加一个用于触发驱动电路的端口。 可能是900 ms 内的第一个计时器。  

    -Sandy

    #include

    int main (空)

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

    P1DIR |= BIT0;//将 P1.0设置为输出方向
    P2REN |= BIT1;//启用 P2.1内部电阻
    P2OUT |= BIT1;//将 P2.1设置为上拉电阻
    P2IES |= BIT1;// P2.1高/低边沿
    P2IFG &=~BIT1;// P2.1 IFG 被清零
    P2IE |= BIT1;// P2.1中断被启用

    //WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器
    P4DIR |= BIT7;//将 P4.7设置为输出方向
    P1REN |= BIT1;//启用 P1.1内部电阻
    P1OUT |= BIT1;//将 P1.1设置为上拉电阻
    P1IES |= BIT1;// P1.1高/低边沿
    P1IFG &=~BIT1;// P1.1 IFG 被清零
    P1IE |= BIT1;// P1.1中断被启用
    //设置初始状态
    P1OUT |= BIT0;//LED 亮起//"="不工作,"|="工作
    P4OUT |= BIT7;//"="不起作用、"|="起作用

    //P1OUT &=~BIT0;//LED 关闭//"&="正常工作
    //P4OUT &=~BIT7;//"&="工作

    _bis_SR_register (LPM4_bits + GIE);//输入 LPM4 w 中断
    __no_operation();//用于调试器

    //端口2中断服务例程
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=port2_vector
    _interrupt void Port_2 (void)
    #Elif defined (_GNU_)
    void __attribute__((interrupt (port2_vector))) Port_2 (void)
    其他
    错误编译器不受支持!
    #endif

    P1OUT ^= BIT0;// P1.0 =切换
    P2IFG &=~BIT1;// P2.1 IFG 被清零

    //端口1中断服务例程
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=Port1_vector
    _interrupt void Port_1 (void)
    #Elif defined (_GNU_)
    void __attribute__((interrupt (Port1_vector))) Port_1 (void)
    其他
    错误编译器不受支持!
    #endif

    P4OUT ^= BIT7;// P4.7 =切换
    P1IFG &=~BIT1;// P1.1 IFG 被清零

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

    您好、Sandy、

    它需要我们对 MSP430 MCU 的支持吗?

    这似乎是应用层的逻辑架构问题。

    此致

    Johnson