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.

TMS320F28335: Watchdog and the XINTF not properly reset issue?

Guru 20045 points
Other Parts Discussed in Thread: TMS320F28335

Hello,

Our board has TMS320F28335 XINTF's zone 7 interfaced to flash.  I can't get the XINTF to work and I thought the issue might be the "XINTF not properly reset on power-up" issue that is described in the errata.  

The TMS320F28335 errata says that the XINT peripheral may not power-on reset properly.  Is that also true when resetting the target with an XDS100v2 debugger?

I noticed during debugging the WDFLG is always set. Also, when I try to clear the WDFLG (i.e. write a 1 to that bit), the debugger doesn't show the flag as cleared.

Is there any way to debug the XINTF in this situation?

Stephen 

  • Will CCS's CPU Reset functionality properly reset the XINTF?
  • Hello,

    The code shown below is at the top of my main function. On entry into main, the debugger's Registers window shows WDCR is equal to 0x0040.  After I click on resume, the code ends up in the while(1) loop and never resets.  

    Why isn't the watchdog reset occurring?

    Stephen

    if(!(SysCtrlRegs.WDCR & 0x0080))  //check WDFLag
    {
        SysCtrlRegs.WDCR = 0x0000;
        while(1){};
    }
    
    SysCtrlRegs.WDCR = 0x00E8;  //This will also disable the WDog

  • What am I doing wrong?

  • Steven,

    WDCR register is EALLOW protected, so you will have to have an EALLOW before that code.

    Best Regards
    Santosh
  • Hello Santosh,

    Can I test the Watchdog reset with the XDS100v2 debugger attached to the target?  Currently, I have to disconnect (physically) the jtag connector from the target.

    Stephen

  • Steve,
    I believe you can. Try below steps.

    1.> Load your code (I believe you are loading code to RAM, if loading code to flash and you set the boot mode pins to boot to flash, then load code and do step 2, 3 and simply run. It should boot to your code in flash and do a watchdog reset and hit the break point you set up in step 3.
    2.> Your PC would be pointing to main, now Open Dis-assembly window
    3.> do a debug reset and where the PC points to in Dis-assembly window, put a hardware break point.
    4.> Now do a debug "restart", not debug reset. It should be the button close to the "run button". This should put PC back to main()
    5.> Now just run the code which does the watchdog reset.
    6.> your PC should hit the break point you put at the reset vector, in step 3.


    hope this helps.

    Best Regards
    Santosh
  • Hello Santosh,

    Fantastic.  Ok, I got zone 7 of the XINTF to work (at least the chip select is working:) ) with the example code (Example_2833xDMA_xintf_to_ram project in control suite).  However, XINTF doesn't work with my code.

    In my code, I write to an address as follows (0x200000 , 0x555 and 0x55 are all #defined in the code)

    *((Uint16*)(0x200000UL+0x555UL)) = 0x55U

    Is there any difference in using this way over using a variable.

    Stephen

  • Hello Santosh,

    Ok, I think I know what the issue is.  init_zone7() in the example code doesn't EALLOW/EDIS protect SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1.  That register needs to be EALLOW/EDIS protected.

    I had used parts of the example code in my program, however I didn't use InitPeripheralClocks() which does EALLOW/EDIS protect SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1.

    Stephen