void SIG_OUTPUT_COMPARE3A( void ) { //vSystemTimer++; //sei(); //incSystemTimer(); vPortYieldFromTick(); asm volatile ( "reti" ); }
ISR (TCC0_OVF_vect, ISR_NAKED) { /* * Context switch function used by the tick. This must be identical to * vPortYield() from the call to vTaskSwitchContext() onwards. The only * difference from vPortYield() is the tick count is incremented as the * call comes from the tick ISR. */ vPortYieldFromTick(); asm volatile ( "reti" ); }
void RT_VECT (void) { // For the preemptive scheduler, enable a context switch #if configUSE_PREEMPTION == 1 vPortYieldFromTick (); asm volatile ( "reti" ); #else // For the cooperative scheduler, all this does is increment the tick count. // We don't need to switch context; that's done by manual calls to taskYIELD() vTaskIncrementTick (); #endif }
void SIG_OUTPUT_COMPARE1A( void ) { vPortYieldFromTick(); asm volatile ( "reti" ); }
void TIMER1_COMPA_vect( void ) { vPortYieldFromTick(); asm volatile ( "reti" ); }
/* * Tick ISR for preemptive scheduler. We can use a __task attribute as * the context is saved at the start of vPortYieldFromTick(). The tick * count is incremented after the context is saved. */ __task void SIG_OUTPUT_COMPARE1A( void ) { vPortYieldFromTick(); asm( "reti" ); }
ISR (TCC0_OVF_vect, ISR_NAKED) { vPortYieldFromTick(); asm volatile ( "reti" ); }
//#warning "Timer3 used for PRE-EMPTIVE scheduler." ISR(TIMER3_COMPA_vect, ISR_NAKED) { vPortYieldFromTick(); asm volatile ( "reti" ); }
ISR(portSCHEDULER_ISR, ISR_NAKED) { vPortYieldFromTick(); __asm__ __volatile__ ( "reti" ); }
ISR(TCC1_OVF_vect,ISR_NAKED) { vPortYieldFromTick(); }