nobody wrote on Thursday, September 07, 2006:
Is any restrictions calling taskYIELD from TickHook?
freertos version v4.1.0
ATMEGA GCC port
>>-This code is working->>
SIGNAL( SIG_OVERFLOW0 )
{
portBASE_TYPE xTaskWoken = pdFALSE;
TCNT0 = 125;
TmrTickCtr++;
if (TmrTickCtr >= TMR_DLY_TICKS)
{
TmrTickCtr = 0;
xTaskWoken = xSemaphoreGiveFromISR( TmrSemTenths, xTaskWoken );
}
if( xTaskWoken != pdFALSE )
{
taskYIELD ();
}
}
>>-but this code not->>
void vApplicationTickHook( void )
{
portBASE_TYPE xTaskWoken = pdFALSE;
TmrTickCtr++;
if (TmrTickCtr >= TMR_DLY_TICKS)
{
TmrTickCtr = 0;
xTaskWoken = xSemaphoreGiveFromISR( TmrSemTenths, xTaskWoken );
}
if( xTaskWoken != pdFALSE )
{
taskYIELD ();
}
}
stack underflow at vPortYieldFromTick()