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/TMS320F28035: TMS320F28035

Part Number: TMS320F28035
Other Parts Discussed in Thread: CONTROLSUITE

Tool/software: Code Composer Studio

Hi,


I am wokring on following kits: www.ti.com/.../TMDSDOCK28035. I am developing a sine wave genration application and using a Example SolarMicroInv_F2803x from controlSUITE.

I have connected sine wave input and reference as per below adc register.

    ChSel[4] = 1;       // A1 - IGRID  adc result 4
    ChSel[5] = 1;       // A1 - IGRID adc result 5
    ChSel[6] = 9;       // B1 - VGRID  adc result 6
    ChSel[7] = 7;       // A7 - Ref_1.65V  adc result 7
    ChSel[8] = 5;       // A5 - Ref_0.5V  adc result 8

I can successfully read sine wave on this adc pine and can able to see in graph given in code compose studio ->Tools->Graph-> Dual time.

I want to calculate Vrms and input frequency using following given example code :


    //TODO AC Measurements
    //---------------------------------------------------------------------
    // Grid Frequency Measurements
    //---------------------------------------------------------------------
    ACFreq_SysTicks = (ECap1Regs.CAP1 + ECap1Regs.CAP2 + ECap1Regs.CAP3
            + ECap1Regs.CAP4) << 3;
    ACFreq = _IQ4div(_IQ4(CPU_FREQ), ACFreq_SysTicks);

    if (ECap1Regs.TSCTR > ECAP_TimerMaxVal
            || (ECap1Regs.CAP1 > ECAP_TimerMaxVal)
            || (ECap1Regs.CAP2 > ECAP_TimerMaxVal)
            || (ECap1Regs.CAP3 > ECAP_TimerMaxVal)) {
        ACFreq_SysTicks = 0;
        ACFreq = 0;
    }

    if (ACFreq < _IQ4(GRID_MIN_FREQ))
        UF_Flag = 1;
    else
        UF_Flag = 0;

    if (ACFreq > _IQ4(GRID_MAX_FREQ))
        OF_Flag = 1;
    else
        OF_Flag = 0;

    MATH_EMAVG2_IQ_MACRO((_IQ24abs(inv_meas_vol_inst)), inv_emavg_vol,
            _IQ24(0.0003));
    Gui_Vavg = _IQ16mpy((int32)inv_emavg_vol>>8,_IQ16(AC_PEAK_SENSE));

    if (Gui_Vavg < _IQ16(GRID_MIN_VRMS))
        UV_Flag = 1;
    else
        UV_Flag = 0;

    if (Gui_Vavg > _IQ16(GRID_MAX_VRMS))
        OV_Flag = 1;
    else
        OV_Flag = 0;

    if (UF_Flag == 0 && Gui_Vavg > _IQ16(40.0)) {
        //Calculate RMS input voltage and input frequency
        sine_mains.Iin = inv_meas_cur_inst >> 9;
        sine_mains.Vin = inv_meas_vol_inst >> 9;
        SINEANALYZER_DIFF_wPWR_IQ_MACRO(sine_mains);

        VRMS = (sine_mains.Vrms) << 9;//    Convert sine_mainsV.Vrms from Q15 to Q24 and save as VrectRMS
        IRMS = (sine_mains.Irms) << 9;//    Convert sine_mainsV.Irms from Q15 to Q24 and save as IrectRMS
        PRMS = (sine_mains.Prms) << 9;//    Convert sine_mainsV.Prms from Q15 to Q24 and save as PinRMS

        Gui_Prms = (sine_mains.Prms * K_Prms) >> 15;
        Gui_Irms = (sine_mains.Irms * K_Irms) >> 15;
        Gui_Vrms = (sine_mains.Vrms * K_Vrms) >> 15;

        /*if(Gui_Vrms<_IQ6(GRID_MIN_VRMS))
         UV_Flag=1;
         else
         UV_Flag=0;

         if(Gui_Vrms>_IQ6(GRID_MAX_VRMS))
         OV_Flag=1;
         else
         OV_Flag=0;
         */
    } else {
        VRMS = 0;//    Convert sine_mainsV.Vrms from Q15 to Q24 and save as VrectRMS
        IRMS = 0;//    Convert sine_mainsV.Irms from Q15 to Q24 and save as IrectRMS
        PRMS = 0;//    Convert sine_mainsV.Prms from Q15 to Q24 and save as PinRMS

        Gui_Prms = 0;
        Gui_Irms = 0;
        Gui_Vrms = 0;

        SINEANALYZER_DIFF_wPWR_IQ_init(&sine_mains);
        sine_mains.Vin = 0;
        sine_mains.Iin = 0;
        sine_mains.SampleFreq = _IQ15(1000.0);
        sine_mains.Threshold = _IQ15(0.1);
        sine_mains.nsamplesMax=1000/UNIVERSAL_GRID_MIN_FREQ;
        sine_mains.nsamplesMin=1000/UNIVERSAL_GRID_MAX_FREQ;

    }

    Gui_Vpv = _IQ20mpy(pv_meas_vol_avg>>4,_IQ20(PV_VOL_SENSE_MAX));
    Gui_Ipv = _IQ20mpy(pv_meas_cur_avg>>4,_IQ20(PV_CURR_SENSE_MAX));
    Gui_Vbus = _IQ20mpy(vbus_meas_avg>>4,_IQ20(VBUS_VOL_SENSE_MAX));

    
and initialization of capture     

/**********************************************************/
/********************** ECAP INIT *************************/
/**********************************************************/
void InitECapture() {

    ECap1Regs.ECEINT.all = 0x0000;             // Disable all capture interrupts
    ECap1Regs.ECCLR.all = 0xFFFF;              // Clear all CAP interrupt flags
    ECap1Regs.ECCTL1.bit.CAPLDEN = 0;        // Disable CAP1-CAP4 register loads
    ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;      // Make sure the counter is stopped

    // Configure peripheral registers
    ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;      // Operation in Continuous Mode
    ECap1Regs.ECCTL2.bit.STOP_WRAP = 3;        // Wrap after 4 events
    ECap1Regs.ECCTL1.bit.CAP1POL = 1;          // Falling edge
    ECap1Regs.ECCTL1.bit.CAP2POL = 0;          // Rising edge
    ECap1Regs.ECCTL1.bit.CAP3POL = 1;          // Falling edge
    ECap1Regs.ECCTL1.bit.CAP4POL = 0;          // Rising edge
    ECap1Regs.ECCTL1.bit.CTRRST1 = 1;          // Difference operation
    ECap1Regs.ECCTL1.bit.CTRRST2 = 1;          // Difference operation
    ECap1Regs.ECCTL1.bit.CTRRST3 = 1;          // Difference operation
    ECap1Regs.ECCTL1.bit.CTRRST4 = 1;          // Difference operation
    ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;         // Enable sync in
    ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0;        // Pass through
    ECap1Regs.ECCTL1.bit.CAPLDEN = 1;          // Enable capture units

    ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;        // Start Counter
    //ECap1Regs.ECCTL2.bit.REARM = 1;            // arm one-shot
    ECap1Regs.ECCTL1.bit.CAPLDEN = 1;         // Enable CAP1-CAP4 register loads
    // ECap1Regs.ECEINT.bit.CEVT4 = 1;            // 4 events = interrupt

}


I want to get value of vrms and ac input frequency but not getting value of following variable.
        ACFreq_SysTicks,
        ACFreq
        VRMS
        Gui_Vrms

Please help me to get AcFreq and VRMS value in Kits.
Do I need to do other connection to get value of AcFreq and VRMS.

Thanks,

Jignesh Patel