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.

[参考译文] MSP430FG6426:代码在调试模式期间停留在_DELAY_CYCLES

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1132924/msp430fg6426-code-stuck-at-__delay_cycles-during-debug-mode

器件型号:MSP430FG6426

尊敬的团队:

一个奇怪的问题突然出现,我们不知道,你能在这里提供帮助吗?

当我们在调试会话中刷写软件时、代码在第一次命中 _DELAY_CYCLES 之前运行良好、不会从这里继续。 每当我暂停执行时、断点就会停留在这里、不会继续。

但是、相同的代码运行良好、我的软件功能在没有调试会话的情况下与同一软件正常运行(只是停止了调试会话并点击了电路板上的复位按钮)。 在我们的某些器件中、相同的软件在发布模式下运行、没有任何问题。

我尝试重新创建一个新项目并导入源代码、调试会话在第一个实例中起作用、问题再次出现在第二个调试会话之后。 不确定哪里出现了问题、需要您的支持。

我在这里放置了代码以供参考

https://drive.google.com/file/d/1FmchPJjhVtBZjGTt-U79aiARngcFVcnF/view?usp=sharing

谢谢

Surya

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

    您好 Surya、

     调试期间是否在您的应用中设置了 DCOFFG? 您是否看到 UCSCTL0寄存器更新?  从技术角度讲、DCORSEL_7应该可以作为抽头0的最大值为19.6MHz、但我想知道 FLL 是否达到该寄存器中的下限。

     625k 延迟周期很长、但实际上远不止我们在12MHz 配置示例中所做的那样。  

    此致、
    Brandon Fisher

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

    尊敬的 Brandon:

    感谢您的回复。

    我再次检查了这个、我观察到以下情况。

    - DCOFFFG 未置1,当发生此消息时仍为0

    UCBCTL0被更新、但是当我与另一个使用相同控制器和相同代码进行时钟设置(工作正常)的硬件进行比较时、这个寄存器的值是不同的。 (随附有问题的控制器的屏幕截图)

    -也许是一个新提示、当我暂停软件并在 delay 函数中循环时、断点跳转会说"在地址"0x107e"处中断、没有可用的调试信息、或者在程序代码之外。"

    -在这种情况下,特殊功能寄存器 OFIFG 被置位。

    -软件运行正常与不运行之间的硬件方面的差异是,我安装了带有32kHz 晶体的 XT1。 我也尝试删除了这个、但也有同样的问题(现在我没有使用任何外部晶振安装 XT2或 XT1引脚并保持开路)

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

    多次重试可提供更多信息

    现在、在 DCOFFG 置1的情况下、经过重新刷写的同一代码会卡在_DELAY_CYCLES 中。

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

    进一步了解一些有用的信息、我现在能够让我的软件在调试会话中工作、同时将时钟频率降低至18MHz 或更低

    UCSCTL2 = FLLD_0 + 550;           //将 DCO 乘法器设置为18MHz

    是否可以是时钟设置不正确,但我想知道为什么它在具有相同控制器但不在这里的其他模块上工作?

    基本上、我想以20Mhz 的全速运行带有内部晶振的控制器、并且我的外设也尽可能使用相同或最大的外设。  

    在 TI 时钟概念上、我不太擅长决定最佳时钟、也许我有一些东西只是在制造问题的边缘运行、我在这里看到了这一点。 请您在此处为我推荐最佳设置吗?

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

    您好 Surya、

    DCOx 设置可能因器件而异、FLL 将设置这些位以尝试锁定至正确的频率。

    [引用 userid="318970" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1132924/msp430fg6426-code-stad-at_delay_cycles-during -debug-mode/4205067"、其中使用相同的时钟值、但使用相同的控制器时钟值、但使用相同的时钟值。 (随附有问题的控制器的屏幕截图)

    DCOFFG 表示 FLL 被驱动至其最低(或最高)设置。 这可能是由于设置、也可能是 由于 FLL 的基准故障。

    我会尝试您以前的20Mhz 设置、但使用 DCORSEL_6范围、看看这是否有用。

    在该系列器件上、还必须逐步增加 Vcore (即每次一个电平)。 您能否将对 setVCore 的调用更改为如下内容:

    SetVCore(PMMCOREV_1);                     // Set VCore = 1.6V 
    SetVCore(PMMCOREV_2);                     // Set VCore = 1.8V 
    SetVCore(PMMCOREV_3);                     // Set VCore = 1.9V

    此致、
    Brandon Fisher

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

    尊敬的  Brandon Fisher:

    感谢您的解释、这真的很有帮助。

    我做了2件事情、1一个硬件更改、在其中我更换了 VCORE 引脚上的电容器、我尝试增加 Vcore、发现该引脚上的电压振荡了一个位。 更换硬件上的 Vcore 电容器和逐步增加 VCORE 电压一起解决了我的问题

    非常感谢您的大力支持

    祝你度过一个美好的周末

    Surya