zvonko69 wrote on Wednesday, May 12, 2010:
hi, this is the sample code from freertos website
, how do i use portYIEED_FROM_ISR with atmega32, i cant find this macro in the portable code,
or can i just use taskYIELD() macro inside an ISR ?
/* Timer ISR */
void vTimerISR( void * pvParameters )
{
static unsigned portCHAR ucLocalTickCount = 0;
static signed portBASE_TYPE xHigherPriorityTaskWoken;
/* A timer tick has occurred. */
… Do other time functions.
/* Is it time for vATask() to run? */
xHigherPriorityTaskWoken = pdFALSE;
ucLocalTickCount++;
if( ucLocalTickCount >= TICKS_TO_WAIT )
{
/* Unblock the task by releasing the semaphore. */
xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );
/* Reset the count so we release the semaphore again in 10 ticks time. */
ucLocalTickCount = 0;
}
/* If xHigherPriorityTaskWoken was set to true you
we should yield. The actual macro used here is
port specific. */
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}