您好!
我们在一个开发板上使用 MSP430F5328处理器、遇到了一个有趣的问题。 基本过程是使用 PWM 计时器定期(每2毫秒)开启放大器一段特定的时间(200-300 uSecs)。 在打开放大器(90-150 uSecs)后不久、我们会生成一个中断来处理一些数据。 为此、我们使用 TA0。 PWM 输出位于 P1.4上、因此我们将使用 TA0.3来实现此目的。 我们将使用 TA0.2来生成中断。 基本代码如下:
|
这在使用 IAR 仿真器时都可以正常工作。 时序如下所示:
红线是放大器输出、它从计时器周期开始。 可以看到、放大器的功率以182 uSecs 切断、这是设计的时间。 当定时器以93uSecs 的速率产生中断时、蓝色线会上升、这也是设计的时间。
但是、当在没有仿真器的情况下运行电路板时、PWM 时序保持不变、中断时序会显著延长、如下面的屏幕截图所示(这具有与之前相同的代码和时序参数、 但在这里、中断直到228 uSecs 才会发生、如下所示:
如果我们将中断延迟更改为最小计数、该值应约为30 uSecs、我们将得到如下所示的时序:
通过这个计时器计数、我们将中断168 uSecs 进入时钟周期、而不是我们预期的30 uSecs。
中断生成可能会导致此问题的原因是什么? 使用计时器 TA0.1而不是 TA9.2来实现这一点没有什么不同。
请提供任何帮助。
Robert Buchanan