Other Parts Discussed in Thread: HALCOGEN,
I'm developing a firmware for the TMS570LS3137 that relies on interrupts. Until recently, everything is working, but somehow the interrupts stopped working reliably. Other than the code generated by HalCoGen, the debug code is very simple:
int main(void)
{
gioInit(); /* IO pins init */
_enable_IRQ();
gioEnableNotification(gioPORTB,2);
while(true);
return;
}
uint32 testCounter = 0;
/* USER CODE END */
#pragma WEAK(gioNotification)
void gioNotification(gioPORT_t *port, uint32 bit)
{
testCounter++;
}
The HCG file has the IRQ channel 9 (GIO Int A) set, GIO for the respective pins are set to high priority, and the function for notification handle is set at the VIM RAN tab, slot 9 (it is the gioHighLevelInterrupt from HCG that simply calls the gioNotification above). The counter, of course, does not goes up, even though it does with another code, from scratch, only with GIO. Ocasionally, it will increment in a very short period after booting.
The I register at CPSR is 0, IntDet and IntENASet are 1 for the corresponding pins, and the IntFlg remains 0, even though I can see the values changing in the DIN register, and the notification is never called, or sometimes called a few times to never be called again.
Any pointers to where to investigate or how to solve this are very welcome!








