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.

CCS/TMS320F28379D: CPU2 and IPC Interrupt

Part Number: TMS320F28379D

Tool/software: Code Composer Studio

Hello,

I have a problem where after a random number of runs, CPU2 somehow resets itself and stops calling its IPC interrupt even after the flag is set in CPU1. I noticed that it seems to do this because it will randomly enter the code file F2837xD_CodeStartBranch.asm after the end of the IPC interrupt which caused CPU2 to just reset itself. 

I am not sure why it is doing this. Some other information: I have CPU1 set the flag for CPU2's IPC interrupt inside of CPU1's adc interrupt which runs at 100kHz. 

Thanks,

Christine

  • Christine,

    Well I feel there is some missing information. Can you answer the following questions?

    1) What is the source of CPU2.reset?

    2) Did you already check RESC (Reset Cause Register available in CPU2)? If so, what are the contents?

    3) Is CPU1 sending reset signal to CPU2? Have you checked CPU1.RESC register? If so, what are the contents?

    4) Did you already check where CPU2 is stuck?

    Regards,
    Manoj
  • 1) Still not sure, all I noticed is that sometimes it will enter the file I mentioned above while I step through the interrupt.

    2) I checked it just now and it holds this value: 0xC0000000

    3) I'm not sure if CPU1 is sending it. In it's RESC register it says: 0xC000010C

    4) When I pause CPU2, it just shows it is inside the while loop of the main function where it should be until an interrupt is raised but it seems like it does not ever call its interrupt even if CPU1 sets the flag. CPU2 does call its interrupt for maybe half a second before it stops calling it again. Maybe it isn't getting reset but something weird is happening I think. 

    The main reason I thought cpu2 was getting reset was that I set a flag inside the ipc interrupt and it does get set to one initially but then goes back to zero after the interrupt stops working.

  • I just got my IPC interrupt to work!

    The way I fixed it was because I already had a set of code where the IPC interrupt worked for some reason so I just used that code and changed the EPWM numbers to the ones I wanted to use. The difference between this working code and the other that didn't was that the action registers for the EPWM were based off the CMPA and CMPB values rather than using ZRO and CAU on CPU2. I'm not sure why that would fix this though.