AnsweredAssumed Answered

_timer_start_oneshot_after  kills my application

Question asked by Jeremy Sanchez on Sep 19, 2009
Latest reply on Oct 9, 2009 by Craig Honegger

I would like to know the reason the following code results in INTERRUPT STACK OVERFLOW.

 

The function is an Edge Triggered Interrupt and problem comes when I try to start a one shot timer.

Timer component is created before with priority 3 and 2000 stack. I have a periodic timer running and 4 interrupts (Edge Triggered Interrupts) can start another timer each. Therefore, I can have 5 timers running at the same time. Problem comes when trying to create the first timer within an interrupt.

 


static void CleanWiegandDoor1(_timer_id timer_id,pointer event_ptr,uint_32 seconds,uint_32 milliseconds){
     Door1Counter = 0;
}

void DMA_T0_ISR(pointer dummy_param){   if(!Door2Counter){
    _timer_start_oneshot_after( CleanWiegandDoor2, 0 , TIMER_KERNEL_TIME_MODE, 50 );   }   Door2Counter++;   if(Door2Counter >= WiegandBitQty){       Door2Counter = 0;      FifoInsertDataID(codeReadD2, 2); //Codigo y La Puerta      codeReadD2 = 0;   }   DTIM_clr_flag(0);   return;}

 

 Regards

 

Outcomes