/*
 * 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;

    //


}