Post Go back to editing

Masking the SPORT2 interrupt on ADSP-21488 doesn't prevent the interrupt from being serviced

Hi Folks

On ADSP-21488, masking the SPORT2 interrupt by using asm("bit clr IMASK P7I;"); doesn't seem to prevent the interrupt from being serviced.

Also, if I single step while watching the value of IMASK in a register window in VDSP, I don't see the value change.

Any ideas please?

Many thanks

Probbie

  •  Hi Probbie,

    The SPORTxI signals are routed by default to programmable interrupts as described in the list below.


    • To service SPORTs 1, 3, 5, 6, unmask (set = 1) the P3I, P4I, P5I, and P16I bits in the IMASK register.
    • To service SPORTs 0, 2, 4, 7, unmask (set = 1) the P7IMSK, P8IMSK, P9IMSK, P11IMSK bits in the LIRPTL register. To disable you can mask the corresponding register.

    You can disable the "Mask interrupts during step" option while testing your code. When this option is enabled VDSP++ might also access the IMASK and LIRPTL registers to avoid interrupts during single step.

    Best Regards,

    Jithul

  • Hi Jithul


    Sorry for the delay in responding - I have only just seen your answer.
    The reference to using P8IMSK in LIRPL on page 11-55 of the 21-214xx Processor Reference manual is a known inaccuracy. The correct register bit is apparently P7IMSK.
    I have tried using both - neither seem to work..
    Thank you for suggesting the Target option "Mask interrupts during step". However, the value of IMASK in the Interrupts Register window does not change when I single step, regardless of this setting.


    Many thanks
    Best regards
    Probbie

  • Hi Probbie,

    Thanks for your update, could you please share a simple example code to replicate the issue on Ez-Kit?

    Best Regards,

    Jithul

  • Hi Jithul

    I haven't had chance to port the problem code to an EZ-Kit yet.

    Furthermore, Having re-read the Linker manual and spotted this:
    "Due to a hardware anomaly on all SHARC chips, code that modifies interrupt latch registers must not be executed from external memory. To minimize the impact of this restriction, the library functions that modify the latch registers are located in the seg_init_code section, which should be located in internal memory.",
    I have subsequently moved the function which manipulates this register to seg_int_code, but the problem persists.

    Best regards
    Probbie

  • Hi Probbie,

    Did you get a chance to port the code to Ez-Kit?

    Best Regards,

    Jithul