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.

AWR6843AOP: AWR6843ISK RTI free-running counter

Part Number: AWR6843AOP
Other Parts Discussed in Thread: AWR6843

老师,您好!首先问题基于两个前提:

1.Free running counter 0/1是在当UC0/1 = RTICPUC0/1 时累加1,且当计数值到达0xffff_ffff边界值时,生成溢出中断。

2.另外,当Free running counter 0/1 = RTICOM0/1时产生compare int0/1/2/3中断。

我的问题是:

1,我的理解是溢出中断属于异常事件,那么为了避免溢出中断的发生,是不是在比较中断发生的时候,对Free running counter 0/1进行清零操作?但是我在SDK中没有找到相应的代码,而且.h文件中RTIFRC1_FRC0/1_BIT_END这类声明也没有被引用。

2,考虑到中断响应时间存在一些差异,如果是上述这种操作模式,如何保证定时器按照设定值精准输出?

3,如果不是通过比较中断来对Free running counter 0/1进行清零,那溢出中断就会周期性地生成,这是否正常?且这种情况下,如何生成包含不同时间戳信息的compare int0/1/2/3?因为此时Free running counter 0/1的计数周期是固定的。

  • 您好,我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!

  • 嗯,好的,静候佳音,谢谢

  • 您好,

    抱歉回复晚了。

    1. 每次 UC 和 COMP Valuse 匹配时,free running counter将递增1。 当 FRC 达到0xFFFFFFFF 时,需要将其清零,来让下一个溢出中断发生。

    2. 这里最好是将 RTI 中断优先级设置为相对于其他中断的最高优先级。 在 RTI ISR 中,首先清除中断。 

    3. 直到达到0xFFFFFFFF 的最大值,溢出中断将会生成。用户需要配置以下寄存器来启用 int0/1/2/3事件: 

    RTIUDCP0

    RTICOMP1

    RTIUDCP1

    RTICOMP2

    RTIUDCP2

    RTICOMP3

    RTIUDCP3

  • 首先谢谢您的回复!但是没有回答我的疑惑。我疑惑的是free running counter的计数边界值是多少?

    按照您的解释,如果我没有理解错的话,free running counter一定会计数至0xffff_ffff?也就是溢出中断是一定会发生的。如果free running counter的计数范围固定为0x0000_0000 - 0xffff_ffff,假设RTICOMP0=0XF,RTICOMP1=0XFF,COMPSEL0=0,COMPSEL1=0,那么compare int0和compare int1的中断周期都是一样的,只是compare int0中断发生的早一点,compare int0和compare int1相邻两次中断的时间跨度是一样的。这样的话,下图的配置就根本无法实现。

  • 是不是可以这样理解,AWR6843内部其实是有4个free-running counter,而不是文档中提到的2个。free-running counter0的计数边界值为RTICOMP0,free-running counter1的计数边界值为RTICOMP1,free-running counter3的计数边界值为RTICOMP2,free-running counter3的计数边界值为RTICOMP3。这样就可以实现不同的compare int周期了。这样下图就可以实现了。

     

  • 您好,

    我们需要向工程师确认下,您也可以查看以下链接来确认问题进展:

    e2e.ti.com/.../awr6843aop-awr6843isk-rti-free-running-counter

  • 抱歉回复晚了。

    根据以下屏幕截图,如果同时enable了“MSS_RTIA compare interrupt 0” 和 “MSS_RTIA compare interrupt 1”这两个中断,并且这两个中断同时发生,那么“MSS_RTIA compare interrupt 0”中断优先于“MSS_RTIA compare interrupt 1”(这基于最低中断通道编号) :