Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

AWR2944: AWR2943

Part Number: AWR2944

Hello,

We are using the the mentioned target awr2943 along with the SDK package provided from TI.

We have noticed something related to the Timer behavior included in the package (the Timer Driver TimerP_rti)

According to the data sheet the frequency of the timer is:

This means that the value of ticks to be loaded in the Compare up counter register must always be the time required in ticks - 1. mmwave_mcuplus_sdk_04_04_00_01

However when we checked the driver this is not happening. We checked this against the latest SDK package we got from TI.

We also confirmed this by checking 3 different timers that are configured with different tick times. 1us, 1ms and free running.

Another note: the driver is only configuring timer 0 of all the timer units (A,B or C). The driver doesn't support configuring Timer 1 in any of the units.

  • Hello Mohammed,

    The formula you mentioned has been implemented in that code as well, the value of that formula will provide it to you in ticks itself:
    Lets say for example you have provided the frequency 150 Mhz, then the fRTICLK is 150*10^6Hz
    Then if you want it every 1ms, then the fRTIFRCx = 10^3Hz

    1) lets take the first formula: RTICPUCx = (150*10^6/10^3)-1 = 149,999 ( theoretically)
    2) Lets take the second formula: RTICPUC(ticks) = ((150*10^6)*1000,000)/(1000,000,000) = 150,000 ( Needs to be converted to Hex to be fed to the Register)
    Note: The +1 is not included in the second formula as in the implementation the moment it reaches from 0-149,999 it completes the cycle and at 150,000 it increments the cycle by 1.

    All the care has been taken you can plug the values and you will get the same result as the formula.

    Also, the SDK is for reference, so we have only configured Timer 0, you can implement Timer 1 by using the same as reference.

  • Hello Saswat,

    The 1 needs to be decremented from the register value not incremented, because if you loaded the value as is in the register (like what is happening in the driver) this will lead to one extra cycle taking place each time the up counter will reach the compare up counter value.

    Again we have already tested this on 3 different timers, and we were able to see this bug happening, the smaller the timer tick time the higher the drift value. once we decremented 1 from compare up counter the timers values are matching, without it: 3 Timers that started at the same time with different tick values are drifting apart.

    Please let me know if the above statements are not clear.

  • Hello Mohamed,

    I understood your concern about the -1, the team is looking into this and will get back to you once team confirms the issue.

    Regards,
    Saswat Kumar

  • Hello Saswat,

    Any updates regarding this issue?

  • Hello Mohamed,

    The issue has been identified and I have raised it to them.
    It will be fixed in the next SDK release version.

    Regards,
    Saswat Kumar

  • Hello Saswat,

    Has the SDK with the Fix for this problem been released yet?

  • Hello Mohamed,

    No, you can keep checking for Ti.com for the latest updates if any is available.

    Regards,
    Saswat Kumar