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.

Issue concerning interrupt handling in TI-RTOS

Hello everybody,

I have a question concerning interrupt handling using TI-RTOS version 2.12.1.33 on a TMS320F2837xD processor. We registered a set of interrupts with the effect that some previously enabled interrupts were disabled afterwards.

We configured four interrupts using Hwi_create and afterwards using Hwi_enableInterrupt to enable the interrupt. Precisely we registered XINT2 (1,5), IPC1 (1,14), XINT1 (1,4), IPC0 (1,13) in the described order, which lead to a behavior that is still inexplicable to us. The result was that IPC1 was not enabled after the registration process.

What we discovered is that calling Hwi_create for XINT1 disabled the previously enabled IPC1 interrupt. More generally a call of Hwi_create disabled every previously enabled interrupt with a y-index greater than 8 (on the right side of the PIE Channel Mapping table).

A look in the debugger lead us to the following line of code in the Hwi_disablePIEIER function of the HWI.c file, were a set of PIEIERx.y bits is cleared.

   *((UInt16 *)PIECTRL_ADDR + (groupNum * 2)) &= (~pieMask & 0xff);

What surprised us is that due to the AND-operation of the 16-bit pie mask with 0xff every interrupt with y greater than 8 is disabled anyway (no matter what value pieMask holds).

Could this possibly be a bug or did we simply forget some important configuration? Maybe a preprocessor definition for a special processor family or similar?

As an additional information Hwi_create was called with:

         Hwi_Params p;

         Hwi_Params_init(&p);

         p.enableAck = true;

         p.enableInt = false;

The disableMask is set to its default value MaskingOption_SELF.

Kind regards,

Tobias