/*
 * pll_tools.c
 *
 *  Created on: 13 нояб. 2024 г.
 *      Author: Evgeniy_Sokolov
 */


#include <edrk_main.h>

#include <params.h>
#include <params_alg.h>
#include <params_norma.h>
#include <params_pwm24.h>
#include <params_temper_p.h>
#include <project.h>
#include "IQmathLib.h"
#include "mathlib.h"
#include "adc_tools.h"
#include "limit_power.h"
#include "pll_tools.h"


//#pragma DATA_SECTION(pll1, ".slow_vars")
PLL_REC pll1 = PLL_REC_DEFAULT;



void init_50hz_input_net50hz(void)
{

    //1. ИнициализациЯ

        pll1.setup.freq_run_pll = (FREQ_RUN_PLL); // частота запуска расчета Гц.
        pll1.setup.rotation_u_cba = 0;//0;//1; // чередование фаз: 0 - правильное A-B-C, 1 - неправильное A-C-B

        pll1.init(&pll1); // расчет и инициализациЯ внутренних переменных

    // Конец Инициализации

}

void calc_pll_50hz(void)
{

    // передача данных в алгоритм.
    pll1.input.Input_U_AB = analog.iqUin_A1B1;
    pll1.input.Input_U_BC = analog.iqUin_B1C1;
    pll1.input.Input_U_CA = analog.iqUin_C1A1;

    // расчет, запускать с частотой указанной в setup.freq_run_pll
     pll1.calc_pll(&pll1);
// Конец расчета


}


void get_freq_50hz_float(void)
{
    float int_delta_freq_test;
    // 3. Получение данных у нормальном виде.

         // получение данных о частотен сети в Гц*100.
         // можно вызывать реже - только длЯ получения данных.
         pll1.get_freq_float(&pll1);

         if (edrk.Status_Ready.bits.preImitationReady2)
             edrk.freq_50hz_1 = 5001;
         else
             edrk.freq_50hz_1 = pll1.output.int_freq_net;

         if (delta_freq_test>0)
         {
             int_delta_freq_test = _IQtoF( delta_freq_test) * pll1.setup.freq_run_pll / PI * 50.00; // freq*100
             edrk.freq_50hz_1 -= int_delta_freq_test;
         }

    //


}

void get_freq_50hz_iq(void)
{

    // 3. Получение данных у нормальном виде.

         // получение данных о частотен сети в Гц*100.
         // можно вызывать реже - только длЯ получения данных.
         pll1.get_freq_iq(&pll1);

         if (edrk.Status_Ready.bits.preImitationReady2)
             edrk.iq_freq_50hz = level_50hz;
         else
             edrk.iq_freq_50hz = pll1.output.iq_freq_net;

         if (delta_freq_test>0)
             edrk.iq_freq_50hz -= delta_freq_test;

    //


}

