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.
大家好、
我们的客户发现以下代码导致 ePWM 的 ISR 运行缓慢:
spwmiqvar.sinvale = _IQsin(_IQmpy( (_IQ(spwmiqvar.spwm_cnt)+_IQ(0.75)),_IQ(SIN_B) ) ) ; spwmiqvar.sina =_IQmpy(spwmiqvar.sinvale,_IQ(spwm_factor)) ;
spwmiqvar.spwm_cnt :uint16_t
通过 使用#define、SIN_B 为0.02456
spwm_factor :float
spwmiqvar.sinvale & spwmiqvar.sina :_iq
程序加载到闪存中、从 RAM 运行。 但没有针对 IQ 类型实施此类操作。
如何加速 IQ 类型计算速度?
谢谢、此致
耶鲁李
您好、Yale、
两个乘法和正弦函 数的组合操作仍应仅为~314个执行周期(不对转换进行计数、这几乎可以忽略不计)。
[引用 userid="514648" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1133280/tms320f28027-iq-in-epwm-s-isr-lead-isr-run-slowly 文件]\n 程序被加载到闪存中、从 RAM 运行。 但没有针对 IQ 类型实施此类操作。[/quot]这样、您是否意味着 IQ 库未加载到 RAM 中、而是从 RAM 运行? 您能就此澄清一下吗?
此致、
Omer Amir
您好 Omer Amir、
感谢您的回复!
客户的程序被下载到闪存中、Memcopy 函数在主函数的开头被用来将其传输到 RAM 以运行。 但 IQ 库是直接使用的、不会执行类似的操作。 IQ 库能否执行类似的操作来加速计算速度?
谢谢、此致
耶鲁李
您好、Yale、
如果客户调试程序、并且可以通过查看"Disassembly"来验证程序是否正在从 RAM 运行、那么我不太确定导致此问题的原因。 查看用于 IQmath 的头文件、大多数代码都进行了相当优化。 没有实际的函数调用、因为它使用宏、并且宏不会过于复杂。 用户是否可以对这些代码行进行计时并查看所需的周期数? 此 链接 应提供有关如何查看周期的说明。
此致、
Omer Amir