Dear all,
I found in my pjt, it could not rcv INTR or running HWI ISR during my task is running after its SEM has been post.
Follow is my code,
VOID dl_process()
{
UINT8 i = 1;
volatile UINT32 uiTmp1;
while(i)
{
//SEM_pendBinary(&SemObjRxSymbolReceived, SYS_FOREVER);
//LOG_printf(&trace, "--------Receive %d DL symbol at %d (us) ", gusRxSeq, TSCL/800 );
guiTskFrameNum++;
if (guiTskFrameNum%50==0)
{
GPIO5_Write(13, 0);
}
else if (guiTskFrameNum%50==25)
{
GPIO5_Write(13, 1);
}
LOG_printf(&trace, "############DL Frame Process Number is %d", guiDlFrameNum);
for (uiTmp1=0;uiTmp1<500000;uiTmp1++)
{
asm(" NOP ");
}
asm(" NOP ");
LOG_printf(&trace, "--------DL Frame process finish %d (us) ", TSCL/800 );
}
}
VOID Timer5ISR()
{
guiDlFrameNum = (guiDlFrameNum + 1) % 1000;
if (guiDlFrameNum ==0)
{
GPIO5_Write(15, 0);
}
else if (guiDlFrameNum ==500)
{
GPIO5_Write(15, 1);
//SEM_postBinary(&SemObjRxSymbolReceived);
}
}
Timer5ISR() is a timer HWI, I set the timer to run the ISR in 1KHz . dl_process() is a task which just toggle some GPIO to make a LED flash.
Both task and HWI work will run fine if I comment the SEM_pendBinary(), the HWI will premmpt the task even if it is running.
But when I use SEM_pendBinary, the LED did not flash which means some error happen. I pause the code, found the PC stop at utl_halt, the LOG indicated that the task run only once,
So I use breakpoint in my task(), and find that the IFR has not been flagged, but the GIE and IER is enabled.
I am new to DSP/BIOS , and I use DM3730 with BIOS V5 under CCS V4.2.
I do not know why this error happen, can anyone lend me with a hand.
Best regards!