您好、TI 社区、
我正在查找代码的当前时间或当前执行时间。 如何找到此内容? 我需要在环路中执行以下操作:
例如:
环路->
双倍 CURR_TIME ...( 查找?? );
double last_time = 0;
DT =(CURR_TIME - Last_TIME);
Last_time = CURR_TIME;
请建议如何计算此当前时间或当前执行时间?
谢谢
此致
阿尔萨兰
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.
您好、TI 社区、
我正在查找代码的当前时间或当前执行时间。 如何找到此内容? 我需要在环路中执行以下操作:
例如:
环路->
双倍 CURR_TIME ...( 查找?? );
double last_time = 0;
DT =(CURR_TIME - Last_TIME);
Last_time = CURR_TIME;
请建议如何计算此当前时间或当前执行时间?
谢谢
此致
阿尔萨兰
您好!
我建议在 CCS 中使用分析时钟:
https://dev.ti.com/tirex/explore/node?node=A__ACh7aaTRwDWC-8ORL0EHMg__ccs_devtools__FUz-xrs__LATEST
谢谢
小
Ki、您好!
感谢您的答复。
我检查了该链接、并使用断点获取时钟周期中的值、如4345、下一个周期中的值4347、然后计算时间(4345 * 1/150m = 0.00002896)。 问题是、我必须手动计算我的环路的每个时间系统配置时钟周期。 如果 while 循环第二次运行、则此周期将发生相应变化、因此我必须再次测量系统配置时钟周期。
是否可以在不测量每次的情况下得到系统配置周期、然后无论每次的环路周期是多少、都可以使用系统配置周期。 它会现场检查、然后进行相应测量? 我的意思是: Get (Profile_clock)。 因为我的 while 环路是连续的、我们不知道我的配置文件时钟的值是多少。 如果我们在我的 while 循环中固定 Profile_clock = 0.0000289的值、则 dt 将变为"0"、这是不正确的。
在 CCS 中:
double last_time = 0;
while (1)
{
Duty_cycle_Ratio =((double)(((int32) PWM_Duty)/ 283;//该数字是0-1之间的比率
A1=(Duty_cycle_Ratio * 3.0);//模拟输入电压
dt =(0.000028966 - Last_Time);// Profile_clock .......................................................................... 该线路必须自动获取配置文件时钟
last_time = 0.000028966
E =(ref-a1);
Se =(se + e)* dt;
de =(e-le)/dt;
PID_OUT =(KP*e)+(KI*SE)+(KD*DE);// PID 方程
}
在 Arduino 中:
在 Arduino 中,控制器通过此行自动计算... 双倍现=毫秒();
如果我能得到这种函数或我的 CCS 代码的任何想法、就可以解决这个问题。
请根据相关建议
此致
阿尔萨兰
本页 https://software-dl.ti.com/C2000/docs/optimization_guide/phase2.html 详细介绍了如何在 C2000器件上使用 CPU 计时器来测量代码执行时间。 此页面上还有示例函数代码。 这将完成您所追求的目标。
此致!
马修