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.

[参考译文] MSP430F5529:CCS 调试窗口减慢微控制器时钟

Guru**** 2798555 points

Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1018536/msp430f5529-ccs-debug-window-slowing-micrcontroller-clock

器件型号:MSP430F5529

1)这个问题与 Code Composer Studio 的调试模式有关

2)我已经为10kHz 的 PWM 编写了一个正常代码并且运行正常、这个代码使用 MCLK 作为时钟源、默认情况下、该时钟源配置为以1MHz 运行、如数据表第162页所述。

3)在该时钟的默认配置中、我成功运行了 UART I2C PWM 代码、在调试期间也没有遇到问题。

4)当我将时钟频率更改为20MHz 时、我已通过将时钟输出到引脚7.7、2.2和1.0来验证 MCLK、SMCLK 和 ACLK、并且已正确配置、因为我已将其设置并根据示波器进行验证。

5)现在、在我尝试所有代码时、更改时钟频率后、出现了一个类似的问题、当我不在调试模式时、所有代码都能正常工作、 但是当我处于调试模式时、代码无法解决此问题、我将仅引用 PWM 代码。

6)没有调试器时、我的 PWM 代码工作正常、在10kHz 和可变占空比下生成 PWM、当我切换到调试模式时、PWM 频率显著下降至100Hz。

7)然后我意识到这种缓慢的下降是由调试模式引起的、因为在这种情况下、我检查 SMCLK MCLK 和 ACLK 并且所有器件都以32KHz 运行(为什么)、当我尝试自由运行模式时、出现了相同的问题、但是、 当我在此自由运行模式下暂停代码并按下暂停按钮时、调试器停止了 Boot.c 文件中的代码执行、在按下播放按钮后、代码运行正常、因为它在没有调试模式的情况下运行。

8)我多次重复此步骤、每次我发现代码在调试模式下工作时、即使断点正确工作也不会出现任何问题。

9)在自由运行模式下开始调试后、当我逐步执行代码时、在代码执行期间打开了以下文件、然后开始执行主代码、如图所示。

请注意:我正在对 MSP430F5529开发板进行所有测试。

10)现在我有多个问题

a)是否有办法解决这个时钟问题

b)如何为默认时钟(1MHz)以外的时钟设置调试窗口

c) EZ FET 仿真器是否会以某种方式影响我尝试执行的操作。

d)执行 Boot.c 的条件是什么。

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

    您好、Nikhil、

    这是奇数。 F5529上的 EEM (嵌入式仿真模块)支持所有时钟频率。

    让我向我们的工具团队核实一下这种行为。

    在平均时间内、让我们看看您如何将时钟提升到20MHz。

    默认情况下、内核电压电平= 0。  这适用于1MHz 时钟。  当您提升至20MHz 时、您是否增加了 PMMCOREV = 3?

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

    您好 Dennis、

    1) 1)我不知道您上面提到的电源管理寄存器。

    2) 2)这就是我将时钟频率更改为20MHz 的方法

    我没有配置您提到的任何寄存器。

    3)我尝试修改该寄存器的值、但该代码似乎不起任何作用。

    4)此外、我在调试模式下有时也遇到了问题(下面的屏幕截图) 但是、当我在没有调试器的情况下执行代码时、我的代码没有任何问题、因为我能够从 I2C 传感器连续获取数据并通过 UART 发送数据、因此在调试模式之外、它可以正常工作、不会出现任何中断或错误。

    在这里,代码在地址0xffa 停止了(*当我按下暂停按钮时*),每次我有这种问题地址时,这只是一个地址,每次都是不同的。

    5)请注意:我只按照您的建议添加了以下行  

    PMMCTL0|=0x0003;

    正在等待您的回复。

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

    Denning、您好、

    1) 1)我已经再次读取电源管理模块、我看到它需要解锁以修改位(我之前没有这样做)

    2) 2)数据表提供了一个直接用于设置内核电压的 C 函数。

    3)根据用户指南第107页 的第3页、在直接复制函数并将 VCORE 设置为3级之后、SetVCoreUp (3)几次都能正常运行我的代码。

    4)但我仍有疑问、为什么代码在我不处于调试模式时正常运行。 此外、我认为数据表应该在统一时钟系统寄存器设置中提及这一点、因为我直接配置了时钟寄存器、但看不到电源管理寄存器。

    5)另请告诉我在上面工具栏中的“运行选项”中使用“自由运行”设置。 它的目的是什么。

    6)最后、感谢您解决问题。  

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

    您好、Nikhil、

    @在未连接调试器的情况下代码正常运行、EEM (仿真模块)和时钟系统之间很可能存在一些在 Vcore 0级运行时不受良好支持的交互。

    CCS 用户指南中介绍了自由运行选项。  我在此处复制是为了方便起见。

    很高兴为您提供帮助。

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

    这似乎没有找到问题的根本原因。

    我在调试模式下经常遇到此错误、在地址0x0XXX 处中断、没有可用的调试信息、请告诉我如何解决此问题。

    此外、Boot.c 文件也会打开很多次(次数指的是调试窗口的重启次数)。由于这种情况、有时我无法开始正确调试我的代码、请帮助我解决 boot.c 问题

    此外、每次正确编码调试器时、我的代码都会起作用。 有问题的"Debug"窗口正在减慢我的开发时间。

    正在等待您的回复。