文档我声明最小中断延迟是内部中断的14个周期。 在我的应用中、这将是 PWM CMPA 匹配。
14周期延迟有多一致? 它能更少吗? 如果可以是更多周期、最大周期数是多少?
是否有详细描述延迟的文档?
提前感谢
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.
文档我声明最小中断延迟是内部中断的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章:
在 FPU 参考指南中:
此外、您可能会发现此 Wiki 页面对您有所帮助:
processors.wiki.ti.com/.../Interrupt_Nesting_on_C28x
此致、
Richard