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.

[参考译文] MSP430FR2355:中断使能在硬上电后关闭??

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1031073/msp430fr2355-interrupt-enables-getting-turned-off-after-a-hard-power-on

器件型号:MSP430FR2355

下午好…

我有代码、我在其中使用0xf8初始化 P1中断。  代码按预期工作。  但是、如果我关闭单元电源并重新加电、我注意到在将调试器放置在单元(符号)上之后、P1中断= 0x80。  我在代码中没有将所有中断设置为这样的位置。  我的 ISR 非常干净...

#pragma vector=PORT1_VECTOR
__interrupt void P1_Sw(void)
{
    p1flags = (P1IFG & 0xF8);
    switch (__even_in_range(P1IV, 16))
    {
        case 8: //R - Switch 2
            P1IE &= ~BIT3;
            break;
        case 10: //R - Switch 4
            P1IE &= ~BIT4;
            break;
        case 12: //R - Switch 1
            P1IE &= ~BIT5;
            break;
        case 14: //R - Switch 3
            P1IE &= ~BIT6;
            break;
        case 16: //R - Switch All
            P1IE &= ~BIT7;
            break;
        default:
            break;
    }
    debounce();
}

我在其他端口上有其他 IRQ,并验证去抖是否正常。  这是我唯一禁用每个 IRQ 的地方、它应该只在按下按钮后发生。  有人能不能给我指一个方向、让我了解正在发生的情况?  我发现、在连接调试器的情况下、我可以向 PI1E 写入0xf8 (就像配置一样)、并且我可以正常运行代码。  我在 P2.4单元上还有一个复位按钮、如果我按下该按钮、我将重新启动、代码将按预期工作。

谢谢你

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

    您是否正在使用 UG (SLAU445I)第8.3.1节中所述的 IES 的初始化序列?

    我的观察结果是、如果你不这样做、有时会有点令人发指、因此你不会立即注意到它不正确。 此外、调试器复位比 POR 轻得多。

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

    是的,我是。。

    我正在经历一段糟糕的时间来跟踪它。  我已经将调试器连接到电路板上电、在我翻转上电开关后、我将仅通过加载符号来连接调试器、我将看到"某些时间"错误的寄存器和变量字段。  我似乎无法跟踪它。  这些变量是从读取 PxIN 值开始的,PxIN 值又硬连接到 DIP 开关....这些变量与 ISR 标志一起决定了 main 中的条件。  我发现、读取 PxIN (这在初始化期间发生在前端)并不总是一致(基于我为电路板加电、然后通过符号连接调试器、在连接后、我停止调试器以查看寄存器/变量的状态。

    我以16MHz 的频率运行、并考虑降低速度、但我想知道 PxIN 是否能够快速加电以使其保持稳定??  听起来很愚蠢、我在这里抓着爪子。

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

    如果您想知道引脚在启动时会发生变化、请尝试在开头插入类似"__delay_cycles (10000);"的内容。 (如果有效果、您可以稍后对其进行优化。)

    如果未连接这些引脚中的任何一个、请在使能序列之前应用 REN 电阻器。

    是否设置 NWAITS=1?

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

    在读取这些引脚之前的引导序列是一个良好的200ms (引导后我有一个 LED 指示灯、我要做的最后一件事是读取引脚)。

    所有信号上都有 REN、NWAITS 为1