Other Parts Discussed in Thread: SYSBIOS
Hi,
I am trying to calculate how much real-time it takes for a certain task. To do this I wanted to verify my timestamp implementation. Below you can find a simple task. This is the only task running on TI RTOS, The freq.lo value is read as 600.000.000 which is expected since that is what I entered to BIOS.cpuFreq.lo. However, the elapsed value reads about 575.000.000 ticks when RTOS returns to the task after Task_sleep(1000). Shouldn't the tick values be more than 600.000.000 and not less? Which one is false, my Timestamp_get32() or Task_sleep(1000)?
void mainTask(UArg arg0, UArg arg1) { int* custom_count; UInt32 elapsed; UInt32 startTicks, endTicks; Types_FreqHz freq; custom_count = malloc(sizeof(int)); *custom_count = 0; Timestamp_getFreq(&freq); appPrint("Freq: %d\n", freq.lo); while(1) { startTicks = Timestamp_get32(); (*custom_count) = (*custom_count) + 1; appPrint("Count: %d\n", *custom_count); Task_sleep(1000); endTicks = Timestamp_get32(); elapsed = endTicks - startTicks; appPrint("Your calculations took %d ticks to run.\n", elapsed ); } }