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.

C6748 RTOS HWI Nesting

Other Parts Discussed in Thread: ADS1274, SYSBIOS

I am running  CCS Version: 6.0.1.00040, TI-RTOS for C6000 2.0.1.23

I have 5 HWIs, UART2, SPI0, GPIO bank 8 pin 12, GPIO bank 2 pin 4 and a Timer. All are using the MaskingOption_SELF.

The GPIO bank 8 pin 12 is to the data ready line from the ADS1274, which starts the SPI transfer. The ready line is at 10kHz.

The Timer runs at 1 Hz and posts a message via the UART2 with information from the SPI transfer.

Everything works when HWI nesting is disabled.

The problem happens when HWI nesting is enabled. The UART2 interrupt eventually becomes permanently disabled. If I change the masking option on the UART2 to MaskingOption_ALL, then the Timer interrupt will become permanently disabled.

Why does enabling HWI nesting cause my interrupts to become permanently disabled?

  • Can you clarify what you mean by "enabling Hwi nesting"?

    MaskingOption_SELF means allowing everyone else to be enabled except yourself.  So in other words, Hwi nesting is not disabled when this is set to SELF.  Its only your own Hwi is disabled (masked out)...which typically should be the case because when your executing your ISR, you don't want interrupt yourself.

    MaskingOption_ALL will mask everyone.  In this case, it is disabling nesting Hwis.

    Judah

  • In the app.cfg, there is the Hwi module. In the module settings, there is a check box for "Enable interrupt nesting". This check box is I am referring to when enabling Hwi nesting.

    I understand how the masking works, the problem is that when nesting is enabled, when the masking option is MaskingOption_SELF for the low speed interrupts (and I cannot change the masking option for the Timer), the low speed interrupts will become permanently disabled. They will work once or twice and then stop working all together.

  • Thanks for the clarification.  On the C6000, the default is to enable Hwi nesting and only then does it use the masking options.

    I think you need to dig a little deeper to figure out why its stopped because there could be many reasons.  There should be nothing in SYSBIOS that is preventing the interrupt from running again.  Things to look for:

    1.  Is the interrupt flagged in the IFR?

    2.  Is the interrupt still enabled in IER?

    3.  In the case of the Timer, is the Timer still ticking?

    Judah