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.

TIDA-01094: Measurement Problem at System Power-On

Part Number: TIDA-01094
Other Parts Discussed in Thread: MSP430F6779A

Hello TI Team,

We are developing a three phase energy meter on TIDA-01094 Reference.

When we are connecting the meter like mono-phase,at first System Power-On,the energy meter is measuring current ,also sometimes voltage,  at other phases (no connection L1-L2,Only Line 3 Connected) .This situation countinues a few seconds.After a few seconds ,meter works stabile.Can you help us about this subject?

  • Hello Candan, 

    can you please explain in more detail the good and bad behavior?

    "Energy Meter is measuring current, also sometimes voltage"  - how do you exactly know if it is the voltage or the current at other phases L1 and L2? 

    " After a few seconds ,meter works stable." - what does "stable" mean?



  • Hello Milen,

    Bad Behavior is current measurement (180A,170A ... decreasing to 0) on L1-L2 phase(Not connected phases) at first system power-on.After a few seconds this phase's currents are meausured as "0 A". Also active power,energy is measuring like as reversed during this time. At three phase connection ,we don' t have problem like this.

    We analized the software.Our observation;

    - adc_i_current[0] and adc_i_current[1] values are becoming equal -4194305(0xFFBFFFFF).

  • Hello Candan,

    thanks a lot for the additional details and your SW analysis, now I understand your problem.

    I think that the you get large values right after system power-on, like 180A or 170A and then down to 0.A, indicates that at start-up there is some 

    wrong ADC data which gets processed until correct values are being processed.

    After a few seconds, as you describe it, the MSP430 Energy algorithm calculates the correct (or 0A) values on both unconnected L1 and L2.

    Q: Is this behavior happening on each unconnected phase?

    For example, if you connect L1 and leave L2 and L3 unconnected: will L1 work properly after system power-on and L2 and L3 shows same problem with the current measurement?



  • Hello Milen,

    Q: Is this behavior happening on each unconnected phase?

    Yes.In Our test setup only L3 is connected.Because L3 phase supplies power to the system.

    L1 and L2 is unconnected.L1 and L2 shows same behaviour with the current measurement.

    Not: We use 3 SD24ADC Bit stream input channel of 7 Channel in MSP430F6779A MCU for current meausurements.


  • Hello Candan,

    I think that the effect you are seeing is because of the time it takes for the dc filters to settle.

    Setting the initial value for the current’s dc filter variable can be done using the PC GUI; however, care must be taken to deal with the current samples being 24-bit but the initial current DC filter’s value being 16-bits. 

    For example, let's say that the GUI's "Current DC offset" value is showing -682.757. You need to divide this current DC offset variable by 256 before rounding. This will give you -2  as a good value to use for the current’s initial DC filter value. 

    The initial value for the current’s dc filter variable of an uncalibrated meter can be set by modifying the DEFAULT_I_DC_ESTIMATE_A macro for phase A, the DEFAULT_I_DC_ESTIMATE_B macro for phase B, and the DEFAULT_I_DC_ESTIMATE_C macro for phase C.

    Flashing the MSPs with an initial value of the DC filters that is close enough to the final dc filter variable value may make the meter startup quick enough for many meters; however, if it is desired to have the meter start up as quick as possible, you may want to set the initial value of the dc filter when calibrating. 

    In our code, the GUI asks for all of the calibration factors before changing these values during calibration.  The voltage and current DC filter values are some of the parameters that are asked for.  After asking and obtaining all of the calibration factors, the GUI would calculate new metrology parameters for all of the calibration factors except the DC filter values, which are set to the value that was sent to the GUI when it asked for the calibration factors. 

    Due to this, we can store the most recent DC filter values into the initial DC filter variable calibration factor by modifying the get_i_dc_estimate and get_v_dc_estimate functions to send the most recent DC filter values.

    int16_t get_i_dc_estimate(int phx, int which)   {

    //#if defined(NEUTRAL_MONITOR_SUPPORT)

    //    if (phx == FAKE_PHASE_NEUTRAL)

    //    {

    //    #if NUM_PHASES > 1

    //        return cal_info->neutral.initial_dc_estimate[which];

    //    #else

    //        return cal_info->phases[0].current[1].initial_dc_estimate[which];

    //    #endif

    //    }


        //return cal_info->phases[phx].current[0].initial_dc_estimate[which];


        return (dc_filter_current_estimate(working_data.phases[phx].metrology.current[0].I_dc_estimate[0])>>16);



    int16_t get_v_dc_estimate(int phx, int which)  {

        //return cal_info->phases[phx].initial_v_dc_estimate[which];

      return (dc_filter_voltage_estimate(working_data.phases[phx].metrology.V_dc_estimate[0])>>8);


    I suggest to close this thread and have a direct e-mail conversation, please write to:



  • Thanks Milen.

    We will try your suggestions.

    Yes, I am closing this thread. I will write your e-mail for trying results.