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.

TMS320F28P659DK-Q1: How to check the handler function for specific interrupt

Expert 2120 points
Part Number: TMS320F28P659DK-Q1

Tool/software:

Take the INT_ILLEGAL interrupt as example, normally we will register the handler function for the INT_ILLEGAL interrupt  by below function.

Interrupt_register(INT_ILLEGAL, &Illegal_Interrupt_Handler0);

Interrupt_register(INT_ILLEGAL, &Illegal_Interrupt_Handler1);

Interrupt_register(INT_ILLEGAL, &Illegal_Interrupt_Handler2);

But the handler function can overwrite by call Interrupt_register again.

I want to check the current handler function for specific interrupt.

How can i do it with debugger connected ?

It there other view window that I can view that handler function for each interrupt?

  • For sure, I can define many pointerts, which point to interrupt addresses.

    But it need change the code and is not quite convient.

  • Hi WZ,

    I will get back to you with a response to this query tomorrow.

    Best Regards,

    Delaney

  • Hi WZ,

    Looking at the Interrupt_register() function definition, you can see how to calculate the address of a certain interrupt in the interrupt vector table. The PIEVECTTABLE_BASE address is 0x00000D00 and the interrupt number passed in for the INT_ILLEGAL interrupt is 0x00130000. The address written to would be 0x00000D26, so you can check the contents of this address in the memory browser. Then, if you input the contents into the browser as the address, it should show you the interrupt handler name at that address.

    This is the best way I know of to check the interrupt handler being used for the INT_ILLEGAL interrupt. Let me know if this makes sense, if not I can provide some screenshots as an example as well.

    Best Regards,

    Delaney

  • Your method is all most tha same with me using the pointer.

    It is not convient, but if it is already the easiest way, it's fine.

  • Hi WZ,

    Yes, this is the easiest way I know of since the PIEVECTOR table isn't memory mapped to registers. The PIEVECTOR table wasn't mapped to registers because usually there is no reason to change the ISR handler after initialization and therefore no reason to view the table. If you want to perform different interrupt functionality in different cases, you can have a global flag that is checked in the ISR in an if statement that executes different lines of code depending on the flag value.

    Best Regards,

    Delaney