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.

[参考译文] TMS320F280025:有关 CPUTimer0计数为何异常的问题

Guru**** 2577385 points
Other Parts Discussed in Thread: TMS320F280025

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1026975/tms320f280025-question-about-why-cputimer0-s-count-is-abnormal

器件型号:TMS320F280025

尊敬的专家:

   我正在使用 TMS320F280025、我设置了两个中断函数、ADCA 中断为50us、CPUTimer1为100us。我设置 CPUTimer0并为其周期配置最大周期值、但我未启用 CPUTimer0的中断。我只需将 CPUTimer0从 429496729计数到0并保持 CPUTimer0周期计数、然后使用 CPUTimer0  两  个相邻中断之间的时间、例如最后  一个 ADCA 中断和当前  ADCA 中断之间的时间。我还使用 CPUTimer0来测试应用程序的执行时间。

  当我测试 ADCA 中断和 CPUTimer1中断时、时间间隔正常、如下所示:

  但是、当我测试由  CPUTimer1中断中的计数器创建的1ms 任务时、计数器计数到100、然后设置1ms 任务的标志、然后1ms 任务将通过识别 1ms 任务的标志来执行 main ()的 while (1)。但当我使用相同的方法执行时 测试1ms 任务的时间间隔、计数异常如下:

 时间间隔测试代码如下所示:

  T1ms_start_temp = T1ms_stop_temp;
T1ms_stop_temp = CPUTimer_getTimerCount (CPUTIME0_BASE);
if (t1ms_start_temp>=t1ms_stop_temp)

T1ms_Int_GAP = T1ms_start_temp - T1ms_stop_temp;

其他

T1ms_Int_GAP = 4294967295 - T1ms_stop_temp + T1ms_start_temp;

但是、当我  在 1ms 的任务中切换一个 GPIO 的电平时、时间在示波器中是正常的、如下所示:

当我将 CPUTimer1中断的间隔从100us 更改为1ms 时、CPUTimer1_Int_GAP 的值也 约为34400、只有当我将  CPUTimer1中断的间隔更改为小于500us 时、时间间隔值才开始正常。我想知道 CPUTimer0模块是否会受到其他模块的影响?为什么 当我测试长时间间隔应用时、它是否开始异常?您能否给出一些指导意见?

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

    您好!

    您是否可以发送100us 和1ms 的计数器配置? 计算 int_time_gap 的代码逻辑似乎正确。 但是、如果不知道计数器配置、我就无法理解问题所在。

    您是否说 CPU 定时器中断上的 GPIO 切换显示了示波器上正确的1ms 差值。 但代码计算的差值不正确?

    此致、

    Nirav