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.

[参考译文] MSP430F5438A-EP:计时器 A 中断似乎并不会触发某些(但不是全部) MSP430F5438A-EP

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430F5438A-EP

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/922684/msp430f5438a-ep-timer-a-interrupt-does-not-seem-to-fire-on-some-but-not-all-msp430f5438a-ep

器件型号:MSP430F5438A-EP

我们在 控制箱中使用 MSP430F5438A-EP、控制连接到控制箱的一组灯。

微控制器运行  一个在 IAR 中开发的 C 程序。

到目前为止、我们已成功构建了5个工作箱。  在构建/测试另外6个控制箱时 、我们发现了一个问题。

似乎 Timer A 中断 Timer1_A0_Vector 不会触发对其中断服务例程的调用。  中断服务例程是一个

调度程序、向微控制器/程序指示下一个调度任务、以便当中断未被调用时、程序不执行

任何光控制任务。

目前正在调查5个工作控制框中 MSP430F5438A-EP 的版本、以便与这些版本进行比较、并在非工作控制框中检查我们的计时器初始化代码

我在 MSP430F5438A-EP 勘误表 SLAZ290AB–2012年10月–2019年3月修订版中找不到任何提及、因此我想知道是否有其他人遇到了此问题。

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

    你(们)罗伊

    我检查了勘误表、认为没有与此问题相关的器件错误。 我倾向于认为这是一个软件问题。 请在 MSP430F543xA、MSP430F541xA 代码示例(修订版 K)上查找计时器 A 代码示例。 请考虑与代码示例进行比较来检查您的代码、并在中断处理上设置 BP 以检查计时器 A 计数器(TAxR)寄存器。

    谢谢!

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

    在检查了工作控制箱中的 MSO430F5438A-EP 版本与非工作控制箱中的版本后、我发现两个微控制器的版本是相同的-版本 H。 版本 H 的勘误表只有条目 TA20、 标记为存在且与中断无关。

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

    TA20勘误表:"Timer_A 的输出信号、TA0、被连接至 ADC12。 为了与之前的器件系列兼容、应该连接到 TA1"与定时器 A 中断处理无关。 因此、请首先考虑调试 MCU 计时器 A 软件

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

    您好、B.R.

    感谢您的回复。  我正在查看我们的代码、但有两个令人困惑的问题。  
    该代码尚未更改、目前已在5个器件上运行(工作中和无工作状态均为修订版 H MSP4305438A-EP)。
    此外 、如果我们附加一个 TI FET 尝试调试代码运行而不会出现任何问题!

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

    如果使用调试器改变行为、第一个猜测是 LPM。 在 LPM 中、调试器保持一些运行的时钟、否则这些时钟将被停止。  

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

    你好 Bruce

    感谢您的响应、我们不是在低功耗模式下运行、程序循环持续运行、内部标准不允许我使用低功耗模式、时钟源是辅助时钟。

    中断服务例程只维持一个计数器、该计数器告诉连续循环调用哪个函数。

    在5个与该硬件完全相同的现有硬件上也可以正常工作、一个从调试器开始运行它可以停止调试器、 目前、研究 FET 是否帮助/屏蔽新电路板上的硬件问题或保持启动调试会影响某些东西的解决/整理。  

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

    你(们)好

    根据示例检查代码。

    以下代码在 FET 连接时起作用、调用 ISR_Scheduler、但在 FET 未连接时不起作用。
     欢迎您提出任何想法。

    void TMR_simpleInit (void)

      TA1EX0  = TAIDEX_0;    
      TA1CCTL0 = CCIE;
      TA1CCR0 = 524U;
      TA1CTL  = tassel_1;

    void TMR_simpleStart (void)

      TA1CTL |= MC_1;

     #pragma vector=Timer1_A0_vector
    _interrupt 静态空 ISR_Scheduler (空)

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

    感谢每个人对此提供的建议/帮助。

    我们现在有一个解决 方案和一个有关原因的理论

    最终解决方案相当简单。

    当我们遇到问题时 、软件会在启动时执行以下3个任务:

    • 已禁用内部安全装置。

    • 将 MSP430F5438A-EP 时钟初始化为20MHz

    • 已配置微控制器引脚。

    解决方案是:

    • 禁用内部安全装置。

    • 配置微控制器引脚。

    • 将 MSP430F5438A-EP 时钟初始化为20MHz

    我们的理论如下:
    时钟初始化函数将 PMM 模块调用至最高内核功率以支持20MHz。  在调试中以及 在我们的某些硬件上(11个相同硬件平台中的5个) 、原始启动没有问题。

    在其他相同的硬件上 (11个相同的硬件平台中有6个) 、软件只能在调试中正确运行。

    在我们尝试通过 对 PMM 模块的调用来增加 PMMCORREV 之前、将引脚配置切换到之前的时钟配置会有更多时间、在调试中运行会产生类似的效果、从而在 PMM 调用之前提供更多时间。

     MSP430F5438A-EP 数据表指示 应将470nF 电容器连接到 MSP430F5438A-EP VCORE 引脚。  我们的硬件连接了一个1mF 电容器、理论上、在 VCORE 上产生负载需要更长的时间、并且在不调试时、 调用 PMM 来增加 功率以支持20MHz 时钟速度、当速度过快时失败 这种时间 是边界性的、因此 软件在某些硬件上运行正常、而不是在其他硬件上运行。  MSP430x5xx 系列指南指出"在将 MCLK 增加到一个更高的速度之前、软件需要确保 VCORE 电平对于所选频率足够高。 否则可能会强制 CPU 尝试在没有足够功率的情况下运行、从而导致不可预测的结果。"  我们认为这正是我们所看到的。

    如果有人认为我们的理论范围很广、请告知我们、我们计划进一步使用   VCORE 引脚上推荐的电容器和 比当前1mF 电容器更大的电容器进行实验。