Increment epoch time from vTickISR

savindra wrote on Wednesday, March 01, 2017:

Hi ,

I am following below method to sync my external RTC with internal timer.
Incrementing epoch millliseconds from vTickISR.

But i want to sync my epoch milliseconds with external RTC just after my system startsup.
But vTickISR is called when FreeRTOS scheduler is started so i have to wait till scheduler is started.
Is there any function in FreeRTOS that can tell me that scheduler is started so that once scheduler is started
i can sync my epcohms with RTC and it keep on incrementing just after syncing.

LiBIncEpochTime()
{
g_ulEpochMs++;
}

#pragma interrupt ( vTickISR( vect = VECT( configTICKVECTOR ), enable ) )
void vTickISR( void )
{
/ Increment the tick, and perform any processing the new tick value
necessitates. /
///increment epoch seconds
LIBIncEpochTime();

setipl( configMAXSYSCALLINTERRUPTPRIORITY );
{
	if( xTaskIncrementTick() != pdFALSE )
	{
		taskYIELD();
	}
}
setipl( configKERNELINTERRUPTPRIORITY );

}*

Regards,
Savindra

rtel wrote on Wednesday, March 01, 2017:

Look at line 552 (at the time of writing) in the following file.

https://sourceforge.net/p/freertos/code/HEAD/tree/trunk/FreeRTOS/Source/timers.c

If you set configUSE_DAEMON_TASK_STARTUP_HOOK to 1 you must provide an
implementation of:

void vApplicationDaemonTaskStartupHook( void );

Assuming the timer task is the highest priority task in the system -
which is normally the case - then vApplicationDaemonTaskStartupHook()
will get called once when the first task starts executing.

Does that meet your needs?