This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Interrupts aren't triggered anymore

Heya! I'm a newbie to DSP/BIOS.

My hardware platform is a TI28335 processor and I'm on DSP/BIOS v5.42.0.07

My project is pretty simple at the moment - there are three interrupts so far: two from the SCI port (RX/TX) and one from the SPI-A port (RX).

The SCI interrupts work perfectly fine, but the SPI-A RX interrupt acts strange.

Whenever I receive data on the SPI port, the SPI ISR is triggered (I've set a breakpoint and checked this) but all the interrupts stop working completely (i.e. I never see them triggered) after the first SPI interrupt.

This is a snippet from my .tcf file:

bios.PIE.instance("PIE_INT6_1").fxn = prog.extern("spia_RxTxIsr_vd"/*, "asm"*/);
bios.PIE.instance("PIE_INT6_1").useDispatcher = 1;
bios.PIE.instance("PIE_INT6_1").interruptMask0 = "all";

In my spia.c source:

#pragma CODE_SECTION(spia_RxTxIsr_vd, "ramfuncs")
void spia_RxTxIsr_vd(void) {

  if (spiaProcess_sta.state == spia_STATE_BUSY)
    {
     if (spiaProcess_sta.recCtr_u16 < spiaProcess_sta.recLength_u16)
     {
       spiaProcess_sta.recCtr_u16++;
       SpiaRegs.SPITXBUF = (*spiaProcess_sta.txData_u16ptr++) << 8;
     }
     else
     {
       spiaProcess_sta.state = spia_STATE_IDLE;
     }

   *spiaProcess_sta.rxData_u16ptr++ = (SpiaRegs.SPIRXBUF & 0xFF);
  }

  PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; // Must acknowledge the PIE group
}

Any ideas? Am I missing something obvious? 

  • Hi Nimish --

    Do you know if you are still getting timer interrupts?    Or if it is just your serial interrupt that is stopping.   You can verify that timer is still ticking by using ROV and looking at the KNL module and checking the tick value which should be incrementing.   Do you know if the serial port requires an ACK?   Can you try commenting out the last line of your ISR above to see if BIOS is already doing this PIE ack internally?   And your extra ACK might be causing a problem?  I can look into this more tomorrow but these experiments might help.

    -Karl-