AnsweredAssumed Answered

Using raise() function to force interrupt

Question asked by AstroMedGlen on Dec 18, 2009
Latest reply on Dec 21, 2009 by AstroMedGlen

Hello,

 

    I have a C project in which I need to force a IRQ0 interrupt several times before I start responding to real ones. I'm finding that when I use the raise() or raisensm() function to force an interrupt the DSP will no longer respond to real interrupts afterwards. If I do not use a raise function at all, the DSP responds normally to real external interrupts.

 

     Also, the reverse happens as well, If I receive a real interrupt before I force one, then I can no longer force them either.

 

I initialize the interrupt with:

 

// Set up interrupt
*pSYSCTL |= IRQ0EN;
sysreg_bit_set(sysreg_MODE2,IRQ0E);        // edge triggered
interrupts (SIG_IRQ0, timer_isr_ASM);

 

Then I would force it with:

 

raisensm(SIG_IRQ0);

or

raise(SIG_IRQ0);

 

My ISR is wriiten in assembly and I use the C marcos for calling asm functions from C:

 

_timer_isr_ASM:

 

    entry;  // stack support macro for ASM interfacing.

  

    my asm code....

 

_timer_isr_ASM.end: exit;  // stack support macro for ASM interfacing.

 

Any assistance with this problem would be very helpful.

 

Thank you,

Glen

Outcomes