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.

[参考译文] TMS570LS3137:64位计时器计数器

Guru**** 2478765 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/696133/tms570ls3137-64bit-timer-counter

器件型号:TMS570LS3137

您好!

我尝试使64位计时器计数器运行。  

现在、我将把计数器0配置为45MHz 的上计数器、每次溢出时、手动写入计数器1的 FRCx、然后返回64位值、如下所示:

void rtiNotification (uint32通知)
{
switch (notification){
案例 rtiNOTIFICATION_COUNTER0:
++rtiREG1->CNT[1].FRCx;
中断;
}
}

uint64_t getTime(){
disable_IRQ ();
uint32_t frcLow = rtiREG1->CNT[0].FRCx;
uint32_t frcHigh = rtiREG1->CNT[1].FRCx;

_enable_IRQ ();
返回(uint64_t)((((uint64_t) frcHigh << 32)|(uint64_t) frcLow);
}
//每个节拍的分辨率= 1/f * NsInSec
#define RES (uint64_t)(1.0/45000000 * 1000000000)
void delay (uint64_t delay_ns){
if (delay_ns > RES){
uint64_t start = getTime();
uint64_t 节拍=(uint64_t)(DELAY_ns/RES);

while ((getTime()- start)< tick);
}
}

int main (void)
{
rtiInit();
rtiEnableNotification (rtiNOTIFICATION_COUNTER0);
_enable_IRQ ();
rtiSetPeriod (0、0xffffffff);
rtiStartCounter (rtiCOUNTER_BLOCK0);

while (1){
延迟(30000000000);//以纳秒为单位
ledToggle ();
//pinToggle ();
}
} 

问题:

*是否有更好的方法来实现此目的?

*在数据表中看到这一点让我有点困惑、请用更简单的词语进行解释(我很难理解这是什么)?

RTI 递增计数器0寄存器(RTCIU0)

描述: 递增计数器0。 该寄存器保存递增计数器0的当前值并预分频 RTI 时钟。 它将只由之前读取的自由运行计数器0 (RTIFRC0)进行更新。 这种更新方法有效地提供了对两个计数器的64位读取、而不会出现在递增计数器0 (RTIUC0)和自由运行计数器0 (RTIFRC0)两次连续读取之间更新计数器的问题。 读取该计数器将返回读取 RTIFRC0时计数器的值。 对该计数器执行写操作会将其预设为一个值。 然后、计数器从写入的值向上递增

感谢您的支持!

KB

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

    让我首先回答第二个问题:RTI 包括两个计数器、每个计数器为32位宽。 CPU 一次只能从 RTI 寄存器帧中读取一个32位值。 这意味着 CPU 读取第一个32位值和读取第二个32位值之间存在非零延迟。 只要您使用 RTI 对任何事件(CAPEVT)进行时间戳记、这将是错误的。 这就是为什么采用特殊的计数器捕获机制、以便能够使用两个计数器准确读取64位时间戳-首先从自由运行计数器读取、 这会在此时冻结递增计数器、以便应用程序可以在后续读取中读出递增计数器值。

    希望这对您有所帮助。

    此致、
    Sunil