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.

[参考译文] TMS320F28035:PWM 中断延迟:最小和最大

Guru**** 2581345 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/651440/tms320f28035-pwm-interrupt-latency-min-and-max

器件型号:TMS320F28035

文档我声明最小中断延迟是内部中断的14个周期。  在我的应用中、这将是 PWM CMPA 匹配。  

14周期延迟有多一致?  它能更少吗?  如果可以是更多周期、最大周期数是多少?

是否有详细描述延迟的文档?

提前感谢  

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

    Andrew、

    14周期延迟是指 CPU 内核发生中断时发生的硬件自动上下文保存。  中断延迟绝不能小于此值。

    这代表了一个最小的背景。 如果 ISR 是用 C 语言编写的、编译器将执行附加的寄存器入栈、以保护它在 ISR 中使用的任何内容。  该数字将取决于所使用的内容。  中断可能由于以下几个原因而进一步延迟、包括正在执行的不间断代码(例如长 FIR 滤波器)、或者如果用户设置了 INTM。  例如、如果 ISR 是速度较慢的存储器、则存储器等待状态也会起作用。

    如果没有这些寄存器、则在所有寄存器保存到堆栈时将产生最大周期数。 对于定点 C28x、您将有另外八个32位但寄存器推送来执行:

    按下 AR1H:AR0H;如果使用的话保存其它寄存器
    按 XAR2
    按 XAR3
    按 XAR4
    按 XAR5
    按 XAR6
    按 XAR7
    按 XT

    浮点内核需要在这些外设之上额外保存10个寄存器、因此我认为最大值为32。  如果在汇编语言中对 ISR 进行编码、您显然可以控制这一点。

    有关更多信息、请参阅 C28x 内核 CPU 用户指南的第3章:

    www.ti.com/.../spru430f.pdf

    在 FPU 参考指南中:

    www.ti.com/.../sprueo2b.pdf

    此外、您可能会发现此 Wiki 页面对您有所帮助:

    processors.wiki.ti.com/.../Interrupt_Nesting_on_C28x

    此致、

    Richard

    e2e.ti.com/.../8311.C28x-Interrupt-Latency.pdf

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

    如果我耗尽 RAM、延迟是否会更一致?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不用客气。 它应该同样一致、但您将测量稍低的延迟、因为 ISR 中的第一条指令将从零等待状态存储器中提取。 当然、ISR 也将以更快的速度从 RAM 执行。

    此致、

    Richard