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.

PIE interrupts within BIOS not working (any HWI's)

I am currently making a project using CCS 5.5 and DSP Bios 5.42 with the hardwae being the DSP 28335. The project is up and running and everything is working utilizing PRD functions to control the timing of my functions.

I now need to add a HWI into the code to receive SCI communication. I have tried setting up the PIE in the tcf file to call my HWI function however, even though data is coming into and out of the SCI the interrupt function is never called. I have even tried to set up a ISR outside of the bios to call the functions and it is never called using the PIE Vector table. Can you provide any insight as to why the functions would never be called or provide a detailed example of HWI's in DSP BIOS.

my first attempt was the set up the PIE 9.1 and 9.2 interrupts in the tcf file pointing to _myHWI (my hwi function) as well as including the the main loop clearing the IFR and IER and enabling the interupt via:

PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER9.bit.INTx1=1; // PIE Group 9, int1
PieCtrlRegs.PIEIER9.bit.INTx2=1; // PIE Group 9, INT2

as well as setting the mask to "all"

the code still runs and functions normally but the function mHWI() is never called.

with this failing i attempted to bypass the tcf files and just set up a ISR using the PIE vector without using the bios tcf functionality similar to what is done in the none bios examples and what the SPRAAX9 document says is possible.

this is a copy of all relevant code i have used to do this:

 interrupt void myHWI(void);

void main()
{

InitSciaGpio(); //sets up GPIO pins to be used for SCI control
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.SCIRXINTA = &myHWI;
PieVectTable.SCITXINTA = &myHWI;
EDIS; // This is needed to disable write to EALLOW protected registers

scia_fifo_init(); // inits the FIFO of the SCI registers

PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER9.bit.INTx1=1; // PIE Group 9, int1
PieCtrlRegs.PIEIER9.bit.INTx2=1; // PIE Group 9, INT2
IER = 0x100; // Enable CPU INT
EINT;

return;
}

interrupt void myHWI(void){
HWI_count++;
return;
}

 I  believe this  is the proper way to set up this PIE interrupt but  again the function is never run even though the code builds and runs fine with all other functions running exactly as before. The only thing i know if missing is clearing the flag for the PIE after the interrupt is triggered but the functions never gets run for this to make a difference. Any insight on this issue and how to get the PIE working would be greatly appreciated.