/*
 * temper_p_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 "temper_p_tools.h"
///////////////////////////////////////////////
void nagrev_auto_on_off(void)
{
   //min_real_int_temper_air

//   if (edrk.temper_edrk.max_real_int_temper_water<TEMPER_NAGREF_ON)
//     edrk.to_ing.bits.NAGREV_OFF = 0;
//
//   if (edrk.temper_edrk.max_real_int_temper_water>TEMPER_NAGREF_OFF)
//     edrk.to_ing.bits.NAGREV_OFF = 1;

   if (edrk.temper_edrk.min_real_int_temper_air<TEMPER_NAGREF_ON_1 && edrk.temper_edrk.max_real_int_temper_air<TEMPER_NAGREF_ON_2)
     edrk.to_ing.bits.NAGREV_OFF = 0;

   if (edrk.temper_edrk.min_real_int_temper_air>TEMPER_NAGREF_OFF_1 || edrk.temper_edrk.max_real_int_temper_air>TEMPER_NAGREF_OFF_2)
     edrk.to_ing.bits.NAGREV_OFF = 1;

}
///////////////////////////////////////////////



//#define koef_P_Water_filter 1600000 //0.095367431640625
void calc_p_water_edrk(void)
{
    _iq iqtain,iq_temp;
    static _iq koef_P_Water_filter = _IQ (0.1/2.0); // 5 сек фильтр

    edrk.p_water_edrk.adc_p_water[0]  = ADC_f[1][14];

    edrk.p_water_edrk.real_p_water[0] = (_IQtoF(analog.P_Water_internal) * NORMA_ACP_P - 4.0) / 1.6;
    edrk.p_water_edrk.real_int_p_water[0] = edrk.p_water_edrk.real_p_water[0] * K_P_WATER_TO_SVU;


    iqtain = _IQ(edrk.p_water_edrk.real_p_water[0]/100.0);
    iq_temp = _IQ(edrk.p_water_edrk.filter_real_p_water[0]/100.0);

    if (edrk.p_water_edrk.flag_init_filter_temp[0]==0)
    {
      iq_temp = iqtain;
      edrk.p_water_edrk.flag_init_filter_temp[0]=1;
    }

//  iq_temp_engine[i] = exp_regul_iq(koef_Temper_ENGINE_filter, iq_temp_engine[i], iqtain);

    iq_temp +=  _IQmpy( (iqtain-iq_temp),  koef_P_Water_filter);
    edrk.p_water_edrk.filter_real_p_water[0] = _IQtoF(iq_temp)*100.0;
    edrk.p_water_edrk.filter_real_int_p_water[0] = edrk.p_water_edrk.filter_real_p_water[0]*K_P_WATER_TO_SVU;



}

//////////////////////////////////////////////////////////

