This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Would calculation affect timer

I am using a power profiler to measure the timing of my program and I found something wrong. So I tested with a simple pure timer.

So first I set the timer during to 300ms

#define half_epoch_during		APP_TIMER_TICKS(300)
err_code = app_timer_create(&half_epoch_timer, APP_TIMER_MODE_SINGLE_SHOT, half_epoch_timer_handler);
err_code=app_timer_start(half_epoch_timer,half_epoch_during,NULL);

And I did nothing in the callback function

static void half_epoch_timer_handler (void * p_context)
{}

The timing is all right. I measure a periodic change in current every 300ms. Then I add a for loop to simulate calculations in the callback function.

static void half_epoch_timer_handler (void * p_context)
{
	int d;
	for (int i =0; i<3000000; i++)
	{	
		d = i;
	}
}

And now, the timing is wrong. I can measure a current change every 240ms. So my question is why would calculation make the timer shorter?

ps: My board is nRF52840 PDK.

Parents
  • Yes. The problem is I am not even sure which timing is right. Is the power profiler somehow compress the X axis. Or Something running on the board would make the timer wrong.

    The truth is my job was using BLE stack to scan periodically. So I set a timer to start the scan every time. So the callback function is just invoking the scan_start() function which is not a lot of opcodes. But the compression of time shows the same pattern as a FOR loop.

Reply
  • Yes. The problem is I am not even sure which timing is right. Is the power profiler somehow compress the X axis. Or Something running on the board would make the timer wrong.

    The truth is my job was using BLE stack to scan periodically. So I set a timer to start the scan every time. So the callback function is just invoking the scan_start() function which is not a lot of opcodes. But the compression of time shows the same pattern as a FOR loop.

Children
No Data
Related