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?