Hello,
I am trying to calculate program running time in miliseconds or microseconds.
I used PIT and RTC, but it works not correctly.
"RTC_GetDatetime" calculate in seconds and I thought that this function "PIT_GetCurrentTimerCount" returns a counted execution time.
Moreover, functions from time.h don't work on KL27 Microcontroller.
Do I have some mistakes or misunderstanding or are there some methods for the execution time?
How can the time calculated?
PIT Setting:
pit_config_t pitConfig;
PIT_GetDefaultConfig(&pitConfig);
PIT_Init(PIT, &pitConfig);
PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(1000000U, PIT_SOURCE_CLOCK));
PIT_EnableInterrupts(PIT, kPIT_Chnl_0, kPIT_TimerInterruptEnable);
EnableIRQ(PIT_IRQ_ID);
PIT_StartTimer(PIT, kPIT_Chnl_0);
PIT_IRQHandler();
PIT_IRQHandler:
void PIT_IRQHandler(void)
{
/* Clear interrupt flag.*/
PIT_ClearStatusFlags(PIT, kPIT_Chnl_0, kPIT_TimerFlag);
pitIsrFlag = true;
__DSB();
}
Start time:
int64_t start = PIT_GetCurrentTimerCount(PIT, kPIT_Chnl_0);
Calculating running time:
int64_t get_timestamp_us(int64_t start)
{
int64_t now = PIT_GetCurrentTimerCount(PIT, kPIT_Chnl_0);
return (now-start) * 1000000;
}
Best regards,
itr