TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6657: sys/bios里Task_sleep(20) 这个休眠时间不准确!!!

Part Number:TMS320C6657

大家好 

在sys/bios里 只有一个任务:

Void Uart6657Send()
{
uint8_t i=0;

for(;;)
{

   for(i=0;i<10;i++)
   {

           //程序

   }

Task_sleep(20);

}
}

Task_sleep(20)表示这个任务休眠20ms 再执行 这样的话 两次发送的间隔应该是20ms 

但测量发现 两次发送的间隔小于20ms 这是什么问题啊???

skysteed:

tick的节拍如下:

系统的时钟是1G 我的晶振是差分100M 扩频到1G:

,

Shine:

请问您是通过GPIO管脚来量的?这个不是很准。

建议用TSCL, TSCH来测代码运行时间。

void main() {    unsigned long long t1, t2;    …    TSCL = 0; // Initiate CPU timer by writing any val to TSCL    …    t1 = _itoll( TSCH, TSCL ); // benchmark snapshot of free-running ctr    my_code_to_benchmark();    t2 = _itoll( TSCH, TSCL ); // benchmark snapshot of free-running ctr      printf("# cycles == %ld\n", (t2-t1)); }

,

skysteed:

你好 你可能理解错了

这不是通过GPIO测量的!

Void Uart6657Send(){uint8_t i=0;

for(;;){

   for(i=0;i<10;i++)   {

           //发数程序

   }

Task_sleep(20);//ms

}

这个程序 表示Uart6657Send这个任务 把for循环里的发数程序执行一次后 休眠20ms 再重复执行发数程序!!!

但测量 发现 这两次发数的间隔不是20ms

,

Shine:

有用TSCL, TSCH来测过吗?这个是CPU计时的,比较准。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6657: sys/bios里Task_sleep(20) 这个休眠时间不准确!!!
分享到: 更多 (0)