Rabbit 3000 interrupt suppression problem

Hello all,

I am working on a project in which I am using RCM3200 module (Rabbit 3000).I have used two external interrupt (one with priority 3 and another with priority 2) along with one timer interrupt (software interrupt) with a priority 1.
When I am running the program it randomly suppresses the high priority interrupt (external interrupt with priority 2) and do not execute its ISR, which ultimately affects final results.

Can anyone help me to understand the problem and and its proposed solution or work around. I could not find and help from technical documents available on rabbit sites.

It will be very helpful if I get some information from Rabbit semiconductor guys for the same.

Thanks & Regards
Ketkee Thakar
:slight_smile:

Your priority 2 interrupt is supressed by your priority 3 interrupt? From the amount of information you have given no more can be guessed.

Not that I want to sound too critical, but an application that relies on interrupt priorities usually indicate a poorly written interrupt routine (unless you are working at the processors performance limits).

Is your ISR written minimalisticly, in other words, does your ISR only detect which interrupt has taken place, and does the processing of the interrupt outside the ISR (in the main loop for instance)?

kobuseng

Thanks for the reply.

I was also thinking of the same initially that high priority interrupt is creating problem but when I put the two interrupts (ext interrupt with priority 2 and 3) at same priority level (at priority 2), I observed the same problem. Moreover my project implimentation has

  1. The two external interrupts never occure simultenously.
  2. The two ISR do not share any element in main loop or with each other.

I am sure that the problem is because of interrupts and their priorities only, but not getting the cause of interrupt suppression.

Thanks & Regards
Ketkee Thakar :slight_smile:

Have you tried to run all interrupts at priority 1. On a lot of uC (not just rabbit) interrupt priorities can have strange behaviour.

kobuseng

Thanks for reply.

My application’s ISR execution timings are as follows
External Interrupt0 (Priority 3) - 29usec
External Interrupt1 (Priority 2) - 50usec
TimerA Interrupt (Priority 1) - 16.5usec

In my application the two external interrupts never occur simultenously but timerA interrupt occurs at every 498usec.
Can you suggest something considering above information?

Meanwhile I will try to run the application by keeping all interrupt priorities set at 1.

Thanks & Regards
Ketkee

Do you mean
-that the interrupt latency (time before interrupt has to service the interrupt source) has to be 29us, 50us and 16.5us,
-or that the interrupt occurs every 29us, 50us and 16.5us,
-or that each interrupt service routine takes 29us, 50us and 16.5us to complete

interrupt service routine takes 29us, 50us and 16.5us respectively to complete