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.

[参考译文] MSP430F5328:定时器中断问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/846324/msp430f5328-timer-interrupt-issue

器件型号:MSP430F5328

您好!

 

我们在一个开发板上使用 MSP430F5328处理器、遇到了一个有趣的问题。 基本过程是使用 PWM 计时器定期(每2毫秒)开启放大器一段特定的时间(200-300 uSecs)。  在打开放大器(90-150 uSecs)后不久、我们会生成一个中断来处理一些数据。  为此、我们使用 TA0。  PWM 输出位于 P1.4上、因此我们将使用 TA0.3来实现此目的。  我们将使用 TA0.2来生成中断。  基本代码如下:

             MOV.W        #TASSEL0+MC_1、&TA0CTL     ;将源设置为 ACLK

                                                      ;模式到向上

                                                      ;分频器= 1

                                                     ;尚未启用中断

             MOV.W        #64、&TA0CCR0              ;设置为2ms 计时器(操作= 1.95ms)

             MOV.W        #P1SAMPDELAY、&TA0CCR2     ;设置中断延迟计时器

             MOV.W        #OUTMOD_3,&TA0CCTL3;设置为设置/复位输出模式

             MOV.W        #P1PWRDELAY,&TA0CCR3;设置断电前的延迟

             BIS.B        #ORG_REG_EN、&P1SEL        ;将输出引脚设置为打开 PWM 输出(P1.4)

             BIS.W        #CCIE、TA0CCTL2;          ;;启用中断

 

 

  

这在使用 IAR 仿真器时都可以正常工作。 时序如下所示:

 

 

红线是放大器输出、它从计时器周期开始。 可以看到、放大器的功率以182 uSecs 切断、这是设计的时间。  当定时器以93uSecs 的速率产生中断时、蓝色线会上升、这也是设计的时间。

 

但是、当在没有仿真器的情况下运行电路板时、PWM 时序保持不变、中断时序会显著延长、如下面的屏幕截图所示(这具有与之前相同的代码和时序参数、 但在这里、中断直到228 uSecs 才会发生、如下所示:

 

如果我们将中断延迟更改为最小计数、该值应约为30 uSecs、我们将得到如下所示的时序:

 

通过这个计时器计数、我们将中断168 uSecs 进入时钟周期、而不是我们预期的30 uSecs。

 

中断生成可能会导致此问题的原因是什么? 使用计时器 TA0.1而不是 TA9.2来实现这一点没有什么不同。

 

请提供任何帮助。

 

Robert Buchanan

 

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

    您好、Robert、

    ACLK 和 MCLK 的实际频率是多少?  P1SAMPDELAY 和 P1PWRDELAY 的值是什么?

    MCU 是在调试模式还是自由模式下运行?

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

    您好、冬季、

    ACLK 为32768Hz 外部晶振、MCLK 为3.5MHz。  对于所有3个显示屏、P1PWRDELAY 为6。  P1SAMPDELAY 在前两个显示屏上为3、在最后一个显示屏上为1。  对于第1个显示、仿真器在调试模式下运行。

    Robert

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

    我假设蓝线是由软件生成的。 我的第一个猜测是、还有其他事情会延迟中断。

    每个周期是否都像这样? 如果这是第一个周期、则可能会有加电事件保持中断被禁用。 (仿真器保持芯片持续供电。)

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

    正确...蓝色线是在中断例程开始时设置的测试点输出。  它非常一致。  唯一正在运行的另一个中断是射频无线电在传输数据时使用的中断、大约每300mS 一次。  我们之前确实遇到了一个问题、即中断不必要地被禁用、这在即使在中断运行时也会导致一次延迟。  但这在一段时间前就已解决、通常每2秒只会对采样中断产生一次不利影响。  

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

    有关这个问题的一些其他信息...我尝试以不同的速度运行处理器、速度高达13.5MHz、并且 在独立运行时、此中断延迟没有区别(我希望中断发生的时间与实际发生的时间之间的时间差)。  此外、我尝试设置不同的计时器设置来生成中断。  在所有情况下、延迟都是相同的... ~135uSecs。  我对此有以下问题:

    1. 为什么我在运行仿真器时看不到这个延迟?

    2. 处理器中是否有会导致此延迟的东西?

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

    每个周期是否都像这样? 还是仅第一个?

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

    每个周期看起来都像这样...

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

    您是否正在使用 LPM3? 如果是、您将受到 t-wake-up-slow 的影响[参考数据表(SLAS678D)第55页"唤醒时间"]

    诀窍是、连接调试器后、您永远不会实际进入 LPM3、因此该表不适用。 对于非调试、您需要添加如下内容:

    MOV.b#0a5h、&PMMCTL0_H;解锁
    BIS.w#SVMLFP+SVSLFP+SVSLMD,和 SVSMLCTL;全性能
    MOV.b#000h、&PMMCTL0_H;锁定
    

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

    是的、我使用的是 LPM3

    中断延迟确实是我看到的结果。  切换到全性能工作正常。

    非常感谢...