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:在信号的第一个边缘上中断(PWM或其他)

Guru**** 2531320 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/575771/msp430g2553-interrupt-on-first-edge-of-a-signal-pwm-or-others

部件号:MSP430G2553

大家好,

我正在开发一个软件,其中我将有一个2主I2C和一个从I2C通信(MSP上的软件i2c)。

为了处理两个主中继器之间可能发生的冲突,MSP正在等待另一个主中继器发送启动条件(中断高/低):然后启动计时器,以允许另一个主中继器完成通信,通信时间不会超过1秒。

似乎很简单,但是我正努力处理中断:事实上,我一直在TI_TRAP中,没有办法输入两次中断。

我的代码不是下面的代码,但所有与中断相关的设置都在:

MAIN (){

P1IE || BIT1;// WFP 1.3 interrupt enabled
P1IFG &=~BIT1;// WFP 1.3 IFG cleared
P1IES || BIT1
__ENABLE_INTERRUPT ();

while (1)
{

__bis_sr_register (CPUOFF + GIE); //输入带中断的LPM0
}

#pragma vector=Port1_vector
__interrupt void Port_1(void)
{
__bis_sr_register(BIT0&GIE);//禁用中断的LPM0
//////////////// 如果信号是PWM,则下一个"中断"将存储在某种队列中?////////////////
P1IFG &=~BIT1;//已清除WFP 1.1 IFG

_delay_cycles (320万);//因此,另一个主控制器完成其必须完成的操作
function_read();
__bis_sr_register(BIT1&GIE);//启用中断的LPM0

} 

事实上,我们正等待SDA线的低水平。 我是否忘记了或误了某些东西,是什么使我的软件落在__TI_TRAP_STHG中? 我忘了说我们输入一次中断。

提前感谢!

丹尼尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    访问p1xx寄存器中的BIT1将影响pin WFP 1.1 ,而不是WFP 1.3。

    "BIT0&GIE"或"BIT1&GIE"没有意义;要更改GIE位,只需指定"GIE"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Daniel:

    您是否能够解决您的问题? 如Clemens所述,您未正确控制P1 ISR内的状态寄存器。 如果您仍有困难,请提供完整的代码示例,以显示您所面临的问题。

    此致,
    Ryan