AnsweredAssumed Answered

Sharc ADSP21363 SPORT_0 Interrupts lost

Question asked by sttberlin on Oct 27, 2010
Latest reply on Oct 29, 2010 by DivyaS

Hi everybody,

I'm using an SHARC ADSP21363. I have connected an ADC at SPORT_0 witch receive data in a cycle of 10µs from the adc. At the end of every transfer an SPORT_0 interrupt is pending.


In short form, my source code look like that:


void main()

init(); // initialize DSP (registers, SPORT, etc.)






     if(0 != (SPIHI & Register_IRPTL)){

          SPI_handler(); // communication, interaction, controlling adcs,...




void ADC_interrupt(int flag){


// read buffer with ADC-samples


// trigger on certain events


// transmit results




And here comes my problem.

Normally the 10µs are more then enough for doing all the things the ISR have to do with the ADC-datas including the transmission of the results. But under certain circumstances, the ISR may need a little more time then 10µs for more complicated calculations. That means, an other SPORT_0- interrupt is pending, while the last is still active. An that's the moment, an interrupt is lost, because as far as I understood the information of a pending interrupt is cleared even when the ISR is leaving.


My idea is using a timer. I start the timer at the begin of the ISR and read the time at the end. And so I can calculate wether I'm late or not. But I'm sure there is a better way to solve the problem. Isn't it?