Adding time stamp for my thread executions

nobody wrote on Tuesday, April 26, 2005:

Hi!

I need to add some time stamps for my sampling, for this I have used following code:

xLastWakeTime = xTaskGetTickCount();
   
        for(;:wink:
        {
        portTickType old_wake_time = xLastWakeTime; 
    // Wait for the next cycle.
        vTaskDelayUntil( &xLastWakeTime, xFrequency );
       
double millisec=(double)((xLastWakeTime-old_wake_time)/portTICK_RATE_MS);
        char data[40];
    sprintf(data, " X =%d; Y =%d; Z =%d\r\n", millisek, acc[1], acc[2]);

Im getting strange values… Why doesn’t this work?

Thanks!
MB

rtel wrote on Tuesday, April 26, 2005:

Hi,

Which port and compiler are you using?

A couple of points:

char data[40] - do you have enough stack space to allocate 40 bytes?  Maybe static char data[40] would help.  sprintf will use lots of stack also.

In the sprintf you are using %d (int format) to print a double.

Lastly - I presume you are wanting a time stamp in milliseconds?  portTICK_RATE_MS is the time in MS between each tick.  If you have a tick rate of 500hz (for example) then portTICK_RATE_MS will be 2.  Then, if 10 ticks have passed between xLastWakeTime and old_wake_time this is 10 * 2 milliseconds.  10 / 2 will give you 5ms, which I presume is not what you want.

Regards.

nobody wrote on Wednesday, April 27, 2005:

Hello!

Thank you for helping med with my bloopers, problem solved!

//MB