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.

[参考译文] RTOS/TMS320C6747:时钟模块在 SYS/BIOS 中有一个时间偏移

Guru**** 2600515 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/647806/rtos-tms320c6747-clock-module-have-a-time-offset-in-sys-bios

器件型号:TMS320C6747

工具/软件:TI-RTOS

您好专家、

客户对 SYS/BIOS 中的时钟模块有疑问。

硬件:TMS320C6747,50m 晶振,DSP 在300m;内运行

Software:CCS5.5,SYS/BIOS 6.37.5.35,XTOOLS 3.25.6.96

BIOS 启用时钟、定时器、时间戳,并确保 Timer0/Timer1的输入频率为50m,在 BIOS 启动前创建时钟

ERROR_INIT (&EB);
Clock_Params_init (clkParams);
clkParams.period = 5;
clkParams.startFlag = false;
GS_clk = Clock_create (ClockSwiHandler、100、clkParams、&EB);
assert (NULL!= GS_clk);

当该时钟从 Clock_start()开始时,使用 UART 获取 每次运行时的时间戳,并且发现时间间隔不是设置5ms,它几乎是5.005ms。

------------------------------------------------------

使用 Timer1_34中的 HWI 执行相同的过程时。

空 Timer1_setup (空)

静态常量 uint32_t timer_PERIOD12 = 50000000u/1000u - 1U;
静态常量 uint32_t timer_PERIOD34 = 50000000u/200u - 1U;

tmr1Regs->TCR = 0;  
tmr1Regs->TGCR = 0;

tmr1Regs->TGCR |= 0x04;  
tmr1Regs->TGCR |= 0x03;

tmr1Regs->PRD12 =定时器_PERIOD12;  
tmr1Regs->TIM12=0;  
tmr1Regs->PRD34 =定时器_PERIOD34;  
tmr1Regs->TIM34 = 0;

tmr1Regs->TCR &=~0x1000100;  
tmr1Regs->TCR |= 0x800080;  

此设置可产生设置时间间隔。

当周期不减1时:

静态常量 uint32_t TIMER_PERIOD12 = 50000000u/1000u
静态常量 uint32_t TIMER_PERIOD34 = 50000000u/200u;

(笑声)

SYS/BIOS 中的时钟模块的工作方式相同。

那么  ,SYS/BIOS 中的时钟模块在配置时是否需要-1?

谢谢、

Wesley。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们将对此进行研究。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Wesley、您好!

    您的时钟 tickPeriod 是什么? 它是默认的1000 μ C 吗?

    最棒的
    Sahin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 Sahin、

    是的、时钟计时周期是默认值。

    感谢你的帮助。

    此致、

    Wesley

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    假设时钟模块配置为1ms、您将创建一个新的时钟实例(调用 foo)、每5个节拍关闭一次。 假设您在调用 BIOS_start 函数后的10.5毫秒内调用 Clock_start 函数。 foo 何时被调用?

    将调用15 (+小增量) ms foo。 这里有两个要点
    -这是因为时钟实例启动时、节拍计数为10。 10 + 5是15。
    -有一个小的增量
     *因为内核可能正在处理时钟节拍(例如、自 Task_sleep 过期后使任务准备就绪)
     *可能需要首先处理其他时钟实例
     *当定时器中断触发时、默认情况下会运行一个布置 Swi 的 Hwi。 Swi 是上述所有工作实际发生的地方。 这会增加一些开销。

    将调用20 (+小增量) ms foo。
    将调用25 (+小增量) ms foo。
    (笑声)

    Todd