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.
目前在CLA有使用sinf的函式,且且使用RAMPGEN_run產生sin波形。
在驗證波形的時候,發現產生出來的sin似乎有錯誤,
但觀察角度的資訊又沒問題。
我sin會丟到pwm的duty觀察。
下圖為用Dac打出來的sin波和更新到pwm的duty。會發現波形突然掉下一塊,並且看pwm的duty也有一樣的現象
下圖為角度資訊,角度為正常,但pwm仍然有異常duty發生。
因此才判定是否為sinf有關,是否能協助確認使用此函式有什麼需要注意而我沒注意到的?
您好,
1)CLAmath 库提供了一个优化的汇编函数 CLAsin 和一个 C 代码函数 CLAsin_inline。 CLA 侧是使用哪一项来生成正弦波的?
2)正弦波是否在后台任务内生成?
1) 看起來是使用以下的函式在CLA
#define sinf __relaxed_sinf
__inline float __relaxed_sinf(float x)
{
return __sin(x);
}
2)此程式在CLA 的 Background Task執行。
您好,
有没有可能是processing之间的background task中断导致了该问题?您可以试下将background task更改为regular Task 8,然后看下是否出现相同的问题?
我使用cla1 task沒此問題發生。
如果是background task的問題的話,那我在裡面的程式是否會有一樣的風險呢?
目前cla background task的執行是正常的嗎?有任何限制嗎?
您好,
请问正常任务是否会中断后台任务并导致此问题?
您可以尝试使用intrinsics来禁用 task preemption,并在执行关键代码后再次使能它。
这些intrinsics可用于临时防止此类中断挂起后台任务:
• __disable_interrupts();
• __enable_interrupts();