DSPRelated.com
Forums

C5402 DSK INTERRUPT PROBLEM

Started by Unknown November 5, 2001
I have a problem with interrupts on the C5402 DSK. I use the IDLE 1
instruction to wait until a BRINT1 interrupt occurs from the AD50
codec, indicated by IFR@0h. When this occurs, the program does not
jump to vector table and hence to the ISR, instead it loops around
and waits for the next interrupt to occur. At the time of the
interrupt, INTM=0 and IMR@0h. If I comment out the IDLE 1
instruction and replace it with INTR 26 to force it a BRINT1
interrupt, it jumps to the vector table and executes the ISR okay.

Does anyone know what would cause the IDLE 1 to not jump to ISR apart
from the obvious ie. IMR bit for BRINT1 not set, and INTM=1 ?

Note, my vector table is remapped to 0x80.

Regards

Maurizio Gencarelli
Avoinics Engineer
Royal Australian Air Force



Hello,

I'm new to the newsgroup, but I have had some experience with these serial
ports, and I have a theory about what's going on. If memory serves, the
serial port receive interrupt occurs on a shift-register-to-DRR copy event.
If the DRR has not been read since the serial port was enabled, there's a
chance that there's data waiting to be read. If that's the case, there will
be no subsequent copying of data from the shift register to the DRR until
that data is read, and hence no interrupt event to vector you to your ISR.
I had this problem with DMA synchronization events once.

To fix it, I would always do an unconditional read from the serial port's
DRR register to free the logjam immediately after enabling interrupts. This
way I know there won't be a logjam in the serial port.

Hope this helps,
Dave Helsley -----Original Message-----
From: [mailto:]
Sent: Monday, November 05, 2001 5:18 AM
To:
Subject: [c54x] C5402 DSK INTERRUPT PROBLEM I have a problem with interrupts on the C5402 DSK. I use the IDLE 1
instruction to wait until a BRINT1 interrupt occurs from the AD50
codec, indicated by IFR@0h. When this occurs, the program does not
jump to vector table and hence to the ISR, instead it loops around
and waits for the next interrupt to occur. At the time of the
interrupt, INTM=0 and IMR@0h. If I comment out the IDLE 1
instruction and replace it with INTR 26 to force it a BRINT1
interrupt, it jumps to the vector table and executes the ISR okay.

Does anyone know what would cause the IDLE 1 to not jump to ISR apart
from the obvious ie. IMR bit for BRINT1 not set, and INTM=1 ?

Note, my vector table is remapped to 0x80.

Regards

Maurizio Gencarelli
Avoinics Engineer
Royal Australian Air Force
_____________________________________
Note: If you do a simple "reply" with your email client, only the author of
this message will receive your answer. You need to do a "reply all" if you
want your answer to be distributed to the entire group.

_____________________________________
About this discussion group:

To Join: Send an email to

To Post: Send an email to

To Leave: Send an email to

Archives: http://www.yahoogroups.com/group/c54x

Other Groups: http://www.dsprelated.com ">http://docs.yahoo.com/info/terms/