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.

UCD3138A: UCD3138A HSFB EVM

Part Number: UCD3138A

Hey IAN,

Could you please share the app notes related to HSFB firmware ,so as to have a

  • Deeper insight on how the firmware for CPCC module is written for HSFB.
  • Know How to write an interrupt service routine from scratch for IRQ,FIQ and software interrupt as well especially for UCD3138A.
  • Parallelly synchronize two HSFB EVMs, Powering them , implementing CBC fault and Hardware configuration of whole setup.

Thanks,

Amartya Singh

  • Hi Amartya,

    Nice to meet you, I am the firmware engineer in UCD team.

    Sorry to inform you, Ian has retired from TI.

    UCD team have no such app note that can meet your requests.

    Q1: CPCC module doesn't work in HSFB.

    Q2: You can follow HFSB demo code for interrupt routine design.

    Q3:  Parallelly two HSFB module function cannot be supported by this generation UCD device.

    Best Regards!

    Jacob

  • One comment about parallel operation. You still can parallel them with current sharing, but it is hard to synchronize the switching  frequency. 

  • Hey Sean,

    Actually we are trying to generate an interrupt using DPWM PRD INT, through standard interrupt (IRQ). While downloading the firmware into the chip, the fusion GUI is not getting into program mode. I have shared my initializations with you. Can you help us debug the issue....

    void init_interrupt(void)
    {
    Dpwm0Regs.DPWMINT.bit.PRD_INT_EN =1;
    disable_interrupt();
    write_reqmask(CIMINT_ALL_DPWM0); //DPWM0 interrupt(End of 16th period)(int-priority29)
    enable_interrupt();
    }

    #pragma INTERRUPT(standard_interrupt,IRQ)
    void standard_interrupt(void)
    {
    if (FeCtrl0Regs.EADCVALUE.bit.ERROR_VALUE < min_value)
    {
    min_value = FeCtrl0Regs.EADCVALUE.bit.ERROR_VALUE;
    }
    else if (FeCtrl0Regs.EADCVALUE.bit.ERROR_VALUE > max_value)
    {
    max_value = FeCtrl0Regs.EADCVALUE.bit.ERROR_VALUE;
    }

    Dpwm0Regs.DPWMINT.bit.PRD_INT_EN =1; //clear flag
    }

    we are calling the init_interrupt function in the main() program.

  • What is DPWM period?

    Can you enter program mode if Dpwm0Regs.DPWMINT.bit.PRD_INT_EN =0?

    Thanks,
    Sean

  • Hey Sean,

    DPWM period is 65 usec and  we were able to enter the program mode ,the problem we are facing is , how to update ERROR_VALUE(signed 9bits) into a variable(int 16) which is min_value and max_value as mentioned in the firmware above and where /how to place them inside interrupt service routine? It seems like the values/variables are not getting updated once the firmware is uploaded.

  • Hello,

    You are using  standard_interrupt(void). This interrupt is defined from TImer16, not from DPWM period interrupt. Make sure timer interrupt flag is cleared.

    Regards,

    Sean

  • Thanks Sean for the reply the issue is now resolved.