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.

DSP/BIOS post an exception about timer0 if I set clk tick ≤10us

Hello DSP experts,

I am using TCI6488. Now I met a problem caused by an exception from dsp/bios.

In TCF file, I configure timer0 .

//do not use Hi resolution timer

bios.CLK.ENABLEHTIME = false;

//do not use Hi resoultion time to driver system tick (BIOS) for evaluating "timeouts" in task syncronization API

bios.CLK.HIRESTIME = false;

// => use low resolution timer

bios.CLK.TIMERSELECT = "Timer 0";

 

Using above code, everything runs fine.

Then, I set timer0's tick as 5us.

 // set system tick to 5uSec (period of timer ISR). (one tick has 5 uSec).

bios.CLK.MICROSECONDS = 5; 

Then, a NMI will be generated, and the reason is the exception from timer0. When I configure bios.CLK.MICROSECONDS to a large value, such as 10 or 20, everything will be OK.

Here, we need 5us for a special usage, I don't know whether we have some restriction about the value.

Thanks for your help.

PS: When debugging, I also found something related: after moving 2 of my project's files(not TI files) from DDR to L2, 8us can work , but less than 5us will casue error too.

 

Brs,

Zuopeng

  • Anybody who could help about this topic?

    I am really looking forward to your reply.

  • Hi Zuopeng,

    First of all, sorry about the delayed response, your post kind of fell through the cracks.

    At what frequency are you running the TCI6488?  Can you describe the error you are receiving?

    The clock module will check the tasks pending for execution on every clock tick (every 5 us).  It is possible that you are spending too much time servicing the clock tick and not enough time running your tasks.  

    Zuopeng ZHANG said:

    PS: When debugging, I also found something related: after moving 2 of my project's files(not TI files) from DDR to L2, 8us can work , but less than 5us will casue error too.

    This makes perfect sense, if your application is very large, it is likely it will not fit entirely in L2, so portions may need to be retrieved from DDR.  Reading from DDR introduces additional delays.

    Does your entire application require a clock tick of 5 us?  If you just need a particular task to run after 5 us, you might want to look at using another time on the device to provide you with the proper delay.

    Regards,

    -- Emmanuel