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.

[参考译文] MSP430FR5969:PxIES 的奇怪行为

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/991048/msp430fr5969-strange-behaviour-of-pxies

器件型号:MSP430FR5969

大家好、

我在 P4IES 设置期间发现了一种奇怪的行为。 在初始化过程结束时、我通过以下方式设置 P4中断:

P4IFG &=~(BIT6);
P4IES |= BIT6;
P4IE |= BIT6;

在这些行之前进行了输入时的基本端口设置、并且禁用了编译器中的所有优化。 接下来、我在调试会话期间检查了 CCS 寄存器视图中的正确设置、一切看起来都正常(中断已启用、IES 位已设置为高/低检测)。 但是、当我在硬件上测试它时 、中断事件在端口上升沿或下降沿上产生、正如 IES 设置的那样。 我尝试修改值、但没有效果。 每次在上升沿执行中断。 意外地、当我通过以下方式仅更改行的顺序时、代码开始正常工作:

P4IES |= BIT6;
P4IFG &=~(BIT6);
P4IE |= BIT6;

现在、一切都正常、但当我尝试将订单更改为上一个订单时、IES 设置不再起作用。

所以、我的好奇问题是-为什么这条命令行指令会极大地改变端口中断边沿灵敏度的行为? 数据表中的任何位置都存在此问题、还是我做了一些错误?

提前感谢您对此行为的任何解释。

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

    设置 P4IES 可以 触发 P4IFG。 [参考用户指南(SLAU367P)第12.2.6.2节].\n\n 因此、您需要在设置 IES 后和设置 IE 之前清除 IFG。

    我不确定这是你的情况,但 LOCKLPM5也会进入这里--它将阻止清除 IFG 和设置 IE [参考 UG 第12.3.1节]

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

    您好、Bruce、

    感谢您的回复、但我的情况并非如此。 我知道 IES 变化会触发 IFG、但这只会发生一次。 第二次也是更多的中断事件必须通过适当的方式提出。 在我的情况下、A 在 P4.6上尝试了大约10次更改、每次在错误边沿上产生中断时。 关于 LOCKLPM5 -我认为这也会影响第一次尝试、不是吗?

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

    也许您需要更准确地描述您的测试用例。 更改 IES 只会生成一个"幻象"IFG、但写入逻辑并不困难、这会导致这种情况在以后反转程序行为。 开关抖动会产生大量的"幻象"IFG。