SYS/BIOS: 6.33.5.46
Part: Piccolo 28069
IDE: CCS v5.2.1.00018
Compiler: v6.1.0
XDCtools: v3.23.3.53
Board: Piccolo ControlCard w/ added CAN transceiver on breadboard.
Hello,
I'm having issues with a custom build of SYS/BIOS when using zero latency interrupts as well as BIOS controlled interrupts. During execution of code at some point the SYS/BIOS ti_sysbios_family_c28_Hwi_Module__state__V.globalEnable boolean is set to 1 however when looking at the IER register the BIOS controlled pie groups are in fact NOT enabled, the IER is set to my zero latency mask (0x809). This results in BIOS controlled interrupts never being re-enabled.
ti_sysbios_family_c28_Hwi_restore__E is called from the idle task to restore the global interrupts and when the code is run it falls through the conditional and just returns, resulting in the BIOS controlled interrupts not being re-enabled. For reference:
Void ti_sysbios_family_c28_Hwi_restore__E(UInt key)
{
UInt intmKey;
if (key == 1 && ti_sysbios_family_c28_Hwi_Module__state__V.globalEnable == 0) {
ti_sysbios_family_c28_Hwi_Module__state__V.globalEnable = TRUE;
intmKey = __disable_interrupts();
IER |= ti_sysbios_family_c28_Hwi_Module__state__V.shadowIER;
__restore_interrupts(intmKey);
}
else if (key == 0 && ti_sysbios_family_c28_Hwi_Module__state__V.globalEnable == 1) {
ti_sysbios_family_c28_Hwi_Module__state__V.globalEnable = 0;
intmKey = __disable_interrupts();
IER &= 0x809;
__restore_interrupts(intmKey);
}
}
The only BIOS controlled interrupts going off during execution are CAN receive and transmit.
I added some code to the idle task so that I can break when the problem occurs however I'm not sure what to look at as far as finding what is causing this.
Anyone have any ideas?