106 lines
2.3 KiB
C
106 lines
2.3 KiB
C
|
/*
|
|||
|
* pll_tools.c
|
|||
|
*
|
|||
|
* Created on: 13 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 2024 <EFBFBD>.
|
|||
|
* 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. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
pll1.setup.freq_run_pll = (FREQ_RUN_PLL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
|
|||
|
pll1.setup.rotation_u_cba = 0;//0;//1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>: 0 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A-B-C, 1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> A-C-B
|
|||
|
|
|||
|
pll1.init(&pll1); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void calc_pll_50hz(void)
|
|||
|
{
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
pll1.input.Input_U_AB = analog.iqUin_A1B1;
|
|||
|
pll1.input.Input_U_BC = analog.iqUin_B1C1;
|
|||
|
pll1.input.Input_U_CA = analog.iqUin_C1A1;
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> setup.freq_run_pll
|
|||
|
pll1.calc_pll(&pll1);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void get_freq_50hz_float(void)
|
|||
|
{
|
|||
|
float int_delta_freq_test;
|
|||
|
// 3. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><>*100.
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
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. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><>*100.
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
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;
|
|||
|
|
|||
|
//
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|