chore: HERV 통합 저장소 재초기화 커밋
손상된 .git 히스토리(missing tree)로 재초기화 후 작업트리 전체 커밋. .claude/ 만 제외(로컬 에이전트 설정). 구 저장소 백업(.git_corrupt_backup/) 포함. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,667 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "Nano100Series.h"
|
||||
#include "adc.h"
|
||||
#include "gpio.h"
|
||||
#include "pwm.h"
|
||||
#include "timer.h"
|
||||
#include "uart.h"
|
||||
#include "sys.h"
|
||||
#include "clk.h"
|
||||
#include "EEPROM_Emulate.h"
|
||||
|
||||
|
||||
#include "My_define.h"
|
||||
|
||||
uint32_t Read_Data(uint8_t index, uint8_t *data);
|
||||
uint32_t Write_Data(uint8_t index, uint8_t data);
|
||||
|
||||
|
||||
uint8_t page_data[EEP_SIZE];
|
||||
|
||||
|
||||
uint8_t Test_Fan1_Speed, Test_Fan2_Speed;
|
||||
uint8_t Test_Fan1_Ven_1_dan, Test_Fan1_Ven_2_dan, Test_Fan1_Ven_3_dan, Test_Fan1_Ven_4_dan, \
|
||||
Test_Fan1_Air_1_dan, Test_Fan1_Air_2_dan, Test_Fan1_Air_3_dan, Test_Fan1_Air_4_dan,\
|
||||
Test_Fan1_Bypass_1_dan, Test_Fan1_Bypass_2_dan, Test_Fan1_Bypass_3_dan, Test_Fan1_Bypass_4_dan;
|
||||
uint8_t Test_Fan2_Ven_1_dan, Test_Fan2_Ven_2_dan, Test_Fan2_Ven_3_dan, Test_Fan2_Ven_4_dan,\
|
||||
Test_Fan2_Air_1_dan, Test_Fan2_Air_2_dan, Test_Fan2_Air_3_dan , Test_Fan2_Air_4_dan,\
|
||||
Test_Fan2_Bypass_1_dan, Test_Fan2_Bypass_2_dan, Test_Fan2_Bypass_3_dan, Test_Fan2_Bypass_4_dan;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* 히스테리시스 프리셋(임계+데드밴드) <-> page_data (EEPROM 영역 43~127) */
|
||||
static void Hyst_To_Page(void)
|
||||
{
|
||||
uint8_t pp, k, o;
|
||||
page_data[EEP_HYST_PRESET] = Hyst_Preset;
|
||||
for(pp = 0; pp < 3; pp++)
|
||||
{
|
||||
page_data[EEP_HYST_DB_BASE + 0 + pp] = (uint8_t)Co2_Db[pp];
|
||||
page_data[EEP_HYST_DB_BASE + 3 + pp] = (uint8_t)Pm25_Db[pp];
|
||||
page_data[EEP_HYST_DB_BASE + 6 + pp] = (uint8_t)Pm10_Db[pp];
|
||||
page_data[EEP_HYST_DB_BASE + 9 + pp] = (uint8_t)Voc_Db[pp];
|
||||
for(k = 0; k < 4; k++)
|
||||
{
|
||||
o = (uint8_t)(pp * 8 + k * 2);
|
||||
page_data[EEP_THR_CO2_BASE + o] = (uint8_t)(Co2_Thr[pp][k] >> 8);
|
||||
page_data[EEP_THR_CO2_BASE + o + 1] = (uint8_t)(Co2_Thr[pp][k] & 0xFF);
|
||||
page_data[EEP_THR_VOC_BASE + o] = (uint8_t)(Voc_Thr[pp][k] >> 8);
|
||||
page_data[EEP_THR_VOC_BASE + o + 1] = (uint8_t)(Voc_Thr[pp][k] & 0xFF);
|
||||
page_data[EEP_THR_PM25_BASE + pp * 4 + k] = (uint8_t)Pm25_Thr[pp][k];
|
||||
page_data[EEP_THR_PM10_BASE + pp * 4 + k] = (uint8_t)Pm10_Thr[pp][k];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Hyst_From_Page(void)
|
||||
{
|
||||
uint8_t pp, k, o;
|
||||
if(page_data[EEP_HYST_PRESET] > 2) return; /* 미초기화(0xFF) -> 컴파일 기본값 유지 */
|
||||
Hyst_Preset = page_data[EEP_HYST_PRESET];
|
||||
for(pp = 0; pp < 3; pp++)
|
||||
{
|
||||
Co2_Db[pp] = page_data[EEP_HYST_DB_BASE + 0 + pp];
|
||||
Pm25_Db[pp] = page_data[EEP_HYST_DB_BASE + 3 + pp];
|
||||
Pm10_Db[pp] = page_data[EEP_HYST_DB_BASE + 6 + pp];
|
||||
Voc_Db[pp] = page_data[EEP_HYST_DB_BASE + 9 + pp];
|
||||
for(k = 0; k < 4; k++)
|
||||
{
|
||||
o = (uint8_t)(pp * 8 + k * 2);
|
||||
Co2_Thr[pp][k] = (uint16_t)(((uint16_t)page_data[EEP_THR_CO2_BASE + o] << 8) | page_data[EEP_THR_CO2_BASE + o + 1]);
|
||||
Voc_Thr[pp][k] = (uint16_t)(((uint16_t)page_data[EEP_THR_VOC_BASE + o] << 8) | page_data[EEP_THR_VOC_BASE + o + 1]);
|
||||
Pm25_Thr[pp][k] = page_data[EEP_THR_PM25_BASE + pp * 4 + k];
|
||||
Pm10_Thr[pp][k] = page_data[EEP_THR_PM10_BASE + pp * 4 + k];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void init_process(void)
|
||||
{
|
||||
uint16_t i;
|
||||
uint8_t eep_error = 0;
|
||||
|
||||
union {
|
||||
uint32_t u32_val ;
|
||||
uint8_t u8_val[4] ;
|
||||
} tran ;
|
||||
|
||||
|
||||
for(i=0; i<20; i++)Tx_roomcon232_buffer[i] = 0;
|
||||
for(i=0; i<20; i++)Tx_display_buffer[i] = 0;
|
||||
for(i=0; i<20; i++)Tx_homenet_buffer[i] = 0;
|
||||
|
||||
|
||||
for(i=0; i<EEP_SIZE; i++)Read_Data(i, &page_data[i]);
|
||||
|
||||
tran.u8_val[0] = page_data[0];
|
||||
tran.u8_val[1] = page_data[1];
|
||||
tran.u8_val[2] = page_data[2];
|
||||
tran.u8_val[3] = page_data[3];
|
||||
|
||||
if(tran.u32_val == 0x55AA55AA)
|
||||
{
|
||||
s_FAN1_VEN_1_DAN = page_data[EEP_FAN1_VEN_1_DAN];
|
||||
s_FAN1_VEN_2_DAN = page_data[EEP_FAN1_VEN_2_DAN];
|
||||
s_FAN1_VEN_3_DAN = page_data[EEP_FAN1_VEN_3_DAN];
|
||||
s_FAN1_VEN_4_DAN = page_data[EEP_FAN1_VEN_4_DAN];
|
||||
s_FAN1_AIR_1_DAN = page_data[EEP_FAN1_AIR_1_DAN];
|
||||
s_FAN1_AIR_2_DAN = page_data[EEP_FAN1_AIR_2_DAN];
|
||||
s_FAN1_AIR_3_DAN = page_data[EEP_FAN1_AIR_3_DAN];
|
||||
s_FAN1_AIR_4_DAN = page_data[EEP_FAN1_AIR_4_DAN];
|
||||
s_FAN1_BYPASS_1_DAN = page_data[EEP_FAN1_BYPASS_1_DAN];
|
||||
s_FAN1_BYPASS_2_DAN = page_data[EEP_FAN1_BYPASS_2_DAN];
|
||||
s_FAN1_BYPASS_3_DAN = page_data[EEP_FAN1_BYPASS_3_DAN];
|
||||
s_FAN1_BYPASS_4_DAN = page_data[EEP_FAN1_BYPASS_4_DAN];
|
||||
|
||||
s_FAN2_VEN_1_DAN = page_data[EEP_FAN2_VEN_1_DAN];
|
||||
s_FAN2_VEN_2_DAN = page_data[EEP_FAN2_VEN_2_DAN];
|
||||
s_FAN2_VEN_3_DAN = page_data[EEP_FAN2_VEN_3_DAN];
|
||||
s_FAN2_VEN_4_DAN = page_data[EEP_FAN2_VEN_4_DAN];
|
||||
s_FAN2_AIR_1_DAN = page_data[EEP_FAN2_AIR_1_DAN];
|
||||
s_FAN2_AIR_2_DAN = page_data[EEP_FAN2_AIR_2_DAN];
|
||||
s_FAN2_AIR_3_DAN = page_data[EEP_FAN2_AIR_3_DAN];
|
||||
s_FAN2_AIR_4_DAN = page_data[EEP_FAN2_AIR_4_DAN];
|
||||
s_FAN2_BYPASS_1_DAN = page_data[EEP_FAN2_BYPASS_1_DAN];
|
||||
s_FAN2_BYPASS_2_DAN = page_data[EEP_FAN2_BYPASS_2_DAN];
|
||||
s_FAN2_BYPASS_3_DAN = page_data[EEP_FAN2_BYPASS_3_DAN];
|
||||
s_FAN2_BYPASS_4_DAN = page_data[EEP_FAN2_BYPASS_4_DAN];
|
||||
|
||||
Filter_timer_clean = ((uint16_t)page_data[EEP_FILTER_CLEAN_HOUR_H]<<8) + (uint16_t)page_data[EEP_FILTER_CLEAN_HOUR_L];
|
||||
Filter_timer_change = ((uint16_t)page_data[EEP_FILTER_CHANGE_HOUR_H]<<8) + (uint16_t)page_data[EEP_FILTER_CHANGE_HOUR_L];
|
||||
Soja_timer_change = ((uint16_t)page_data[EEP_SOJA_CHANGE_HOUR_H]<<8) + (uint16_t)page_data[EEP_SOJA_CHANGE_HOUR_L];
|
||||
|
||||
BlackOut_Power_On = page_data[EEP_BLACKOUT_POWER_ON];
|
||||
BlackOut_Run_Mode = page_data[EEP_BLACKOUT_RUN_MODE];
|
||||
BlackOut_Fan_Mode = page_data[EEP_BLACKOUT_FAN_MODE];
|
||||
|
||||
Hyst_From_Page(); /* 히스테리시스 임계/데드밴드/프리셋 로드(미초기화면 기본값 유지) */
|
||||
}
|
||||
else
|
||||
{
|
||||
tran.u32_val = 0x55AA55AA;
|
||||
page_data[0] = tran.u8_val[0];
|
||||
page_data[1] = tran.u8_val[1];
|
||||
page_data[2] = tran.u8_val[2];
|
||||
page_data[3] = tran.u8_val[3];
|
||||
|
||||
////////////////////////////////////////////////
|
||||
|
||||
/* VSP 기본값 = 사양서 DL H-ERV VSP 실측표 (FAN1=SA 급기, FAN2=EA 배기) */
|
||||
s_FAN1_VEN_1_DAN = 56;
|
||||
s_FAN1_VEN_2_DAN = 63;
|
||||
s_FAN1_VEN_3_DAN = 70;
|
||||
s_FAN1_VEN_4_DAN = 86;
|
||||
|
||||
s_FAN1_AIR_1_DAN = 65;
|
||||
s_FAN1_AIR_2_DAN = 72;
|
||||
s_FAN1_AIR_3_DAN = 78;
|
||||
s_FAN1_AIR_4_DAN = 80;
|
||||
|
||||
s_FAN1_BYPASS_1_DAN = 67;
|
||||
s_FAN1_BYPASS_2_DAN = 67;
|
||||
s_FAN1_BYPASS_3_DAN = 67;
|
||||
s_FAN1_BYPASS_4_DAN = 67;
|
||||
|
||||
s_FAN2_VEN_1_DAN = 57;
|
||||
s_FAN2_VEN_2_DAN = 63;
|
||||
s_FAN2_VEN_3_DAN = 70;
|
||||
s_FAN2_VEN_4_DAN = 85;
|
||||
|
||||
s_FAN2_AIR_1_DAN = 0; /* 공청 EA 미사용 */
|
||||
s_FAN2_AIR_2_DAN = 0;
|
||||
s_FAN2_AIR_3_DAN = 0;
|
||||
s_FAN2_AIR_4_DAN = 0;
|
||||
|
||||
s_FAN2_BYPASS_1_DAN = 75;
|
||||
s_FAN2_BYPASS_2_DAN = 75;
|
||||
s_FAN2_BYPASS_3_DAN = 75;
|
||||
s_FAN2_BYPASS_4_DAN = 75;
|
||||
|
||||
////////////////////////////////////////////////
|
||||
|
||||
|
||||
Filter_timer_clean = 0;
|
||||
Filter_timer_change = 0;
|
||||
Soja_timer_change = 0;
|
||||
|
||||
page_data[EEP_FAN1_VEN_1_DAN] = s_FAN1_VEN_1_DAN;
|
||||
page_data[EEP_FAN1_VEN_2_DAN] = s_FAN1_VEN_2_DAN;
|
||||
page_data[EEP_FAN1_VEN_3_DAN] = s_FAN1_VEN_3_DAN;
|
||||
page_data[EEP_FAN1_VEN_4_DAN] = s_FAN1_VEN_4_DAN;
|
||||
page_data[EEP_FAN1_AIR_1_DAN] = s_FAN1_AIR_1_DAN;
|
||||
page_data[EEP_FAN1_AIR_2_DAN] = s_FAN1_AIR_2_DAN;
|
||||
page_data[EEP_FAN1_AIR_3_DAN] = s_FAN1_AIR_3_DAN;
|
||||
page_data[EEP_FAN1_AIR_4_DAN] = s_FAN1_AIR_4_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_1_DAN] = s_FAN1_BYPASS_1_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_2_DAN] = s_FAN1_BYPASS_2_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_3_DAN] = s_FAN1_BYPASS_3_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_4_DAN] = s_FAN1_BYPASS_4_DAN;
|
||||
|
||||
page_data[EEP_FAN2_VEN_1_DAN] = s_FAN2_VEN_1_DAN;
|
||||
page_data[EEP_FAN2_VEN_2_DAN] = s_FAN2_VEN_2_DAN;
|
||||
page_data[EEP_FAN2_VEN_3_DAN] = s_FAN2_VEN_3_DAN;
|
||||
page_data[EEP_FAN2_VEN_4_DAN] = s_FAN2_VEN_4_DAN;
|
||||
page_data[EEP_FAN2_AIR_1_DAN] = s_FAN2_AIR_1_DAN;
|
||||
page_data[EEP_FAN2_AIR_2_DAN] = s_FAN2_AIR_2_DAN;
|
||||
page_data[EEP_FAN2_AIR_3_DAN] = s_FAN2_AIR_3_DAN;
|
||||
page_data[EEP_FAN2_AIR_4_DAN] = s_FAN2_AIR_4_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_1_DAN] = s_FAN2_BYPASS_1_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_2_DAN] = s_FAN2_BYPASS_2_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_3_DAN] = s_FAN2_BYPASS_3_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_4_DAN] = s_FAN2_BYPASS_4_DAN;
|
||||
|
||||
page_data[EEP_FILTER_CLEAN_HOUR_H] = (uint8_t)((Filter_timer_clean&0xFF00)>>8);
|
||||
page_data[EEP_FILTER_CLEAN_HOUR_L] = (uint8_t)(Filter_timer_clean&0x00FF);
|
||||
page_data[EEP_FILTER_CHANGE_HOUR_H] = (uint8_t)((Filter_timer_change&0xFF00)>>8);
|
||||
page_data[EEP_FILTER_CHANGE_HOUR_L] = (uint8_t)(Filter_timer_change&0x00FF);
|
||||
page_data[EEP_SOJA_CHANGE_HOUR_H] = (uint8_t)((Soja_timer_change&0xFF00)>>8);
|
||||
page_data[EEP_SOJA_CHANGE_HOUR_L] = (uint8_t)(Soja_timer_change&0x00FF);
|
||||
|
||||
page_data[EEP_BLACKOUT_POWER_ON] = Power_On;
|
||||
page_data[EEP_BLACKOUT_RUN_MODE] = Run_Mode;
|
||||
page_data[EEP_BLACKOUT_FAN_MODE] = Fan_Mode;
|
||||
|
||||
Hyst_To_Page(); /* 히스테리시스 임계/데드밴드/프리셋 기본값 저장 */
|
||||
|
||||
for(i=0; i<EEP_SIZE ; i++)Write_Data(i, page_data[i]);
|
||||
}
|
||||
|
||||
|
||||
Test_Fan1_Ven_1_dan = s_FAN1_VEN_1_DAN;
|
||||
Test_Fan1_Ven_2_dan = s_FAN1_VEN_2_DAN;
|
||||
Test_Fan1_Ven_3_dan = s_FAN1_VEN_3_DAN;
|
||||
Test_Fan1_Ven_4_dan = s_FAN1_VEN_4_DAN;
|
||||
Test_Fan1_Air_1_dan = s_FAN1_AIR_1_DAN;
|
||||
Test_Fan1_Air_2_dan = s_FAN1_AIR_2_DAN;
|
||||
Test_Fan1_Air_3_dan = s_FAN1_AIR_3_DAN;
|
||||
Test_Fan1_Air_4_dan = s_FAN1_AIR_4_DAN;
|
||||
Test_Fan1_Bypass_1_dan = s_FAN1_BYPASS_1_DAN;
|
||||
Test_Fan1_Bypass_2_dan = s_FAN1_BYPASS_2_DAN;
|
||||
Test_Fan1_Bypass_3_dan = s_FAN1_BYPASS_3_DAN;
|
||||
Test_Fan1_Bypass_4_dan = s_FAN1_BYPASS_4_DAN;
|
||||
|
||||
Test_Fan2_Ven_1_dan = s_FAN2_VEN_1_DAN;
|
||||
Test_Fan2_Ven_2_dan = s_FAN2_VEN_2_DAN;
|
||||
Test_Fan2_Ven_3_dan = s_FAN2_VEN_3_DAN;
|
||||
Test_Fan2_Ven_4_dan = s_FAN2_VEN_4_DAN;
|
||||
Test_Fan2_Air_1_dan = s_FAN2_AIR_1_DAN;
|
||||
Test_Fan2_Air_2_dan = s_FAN2_AIR_2_DAN;
|
||||
Test_Fan2_Air_3_dan = s_FAN2_AIR_3_DAN;
|
||||
Test_Fan2_Air_4_dan = s_FAN2_AIR_4_DAN;
|
||||
Test_Fan2_Bypass_1_dan = s_FAN2_BYPASS_1_DAN;
|
||||
Test_Fan2_Bypass_2_dan = s_FAN2_BYPASS_2_DAN;
|
||||
Test_Fan2_Bypass_3_dan = s_FAN2_BYPASS_3_DAN;
|
||||
Test_Fan2_Bypass_4_dan = s_FAN2_BYPASS_4_DAN;
|
||||
|
||||
//////////////////////// disp init ////////////////////////
|
||||
|
||||
Step_motor_init();
|
||||
delay_ms(100);
|
||||
|
||||
for(i=0; i<10; i++)
|
||||
{
|
||||
ADC_Sensing();
|
||||
delay_ms(20);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//*****************************************************
|
||||
// Humidity Convertion
|
||||
//*****************************************************
|
||||
//5th Degree Polynomial Fit: y=a+bx+cx^2+dx^3...
|
||||
//Coefficient Data:
|
||||
#define Ha -4.87601734329E+001
|
||||
#define Hb 8.96436964233E-002
|
||||
#define Hc -6.50196401698E-005
|
||||
#define Hd 3.36616112090E-008
|
||||
#define He -7.78888646058E-012
|
||||
#define Hf 6.68092914464E-016
|
||||
|
||||
float Humidity_Conversion(float V)
|
||||
{
|
||||
float Ret = 0;
|
||||
|
||||
V *= 1000;
|
||||
|
||||
Ret = Ha + (Hb * V) + (Hc * (V * V)) + (Hd * (V * V * V)) + (He * (V * V * V * V)) + (Hf * (V * V * V * V * V));
|
||||
|
||||
|
||||
if(Ret <= 0)Ret = 0;
|
||||
else if(Ret >= 99.9)Ret = 99.9;
|
||||
|
||||
return(Ret);
|
||||
}
|
||||
|
||||
// LNTK103FF
|
||||
|
||||
#define T_a 3.08197700643E-002
|
||||
#define T_b 8.77312053750E+002
|
||||
#define T_c -3.17755936684E+003
|
||||
#define T_d 5.62092429082E+003
|
||||
#define T_e -5.86906412922E+003
|
||||
#define T_f 3.82840309167E+003
|
||||
#define T_g -1.57651548838E+003
|
||||
#define T_h 3.97983185914E+002
|
||||
#define T_i -5.61894921403E+001
|
||||
#define T_j 3.39457675113E+000
|
||||
|
||||
|
||||
|
||||
#define PowerSupplyVoltage 3.300 //
|
||||
|
||||
float Temperature_Conversion(float V)
|
||||
{
|
||||
|
||||
return( T_a + T_b*V + T_c*V*V + T_d*V*V*V + T_e*V*V*V*V + T_f*V*V*V*V*V + T_g*V*V*V*V*V*V +\
|
||||
T_h*V*V*V*V*V*V*V + T_i*V*V*V*V*V*V*V*V + T_j*V*V*V*V*V*V*V*V*V );
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
// ADC Power Input
|
||||
|
||||
float VoltageConversion(unsigned int in_data)
|
||||
{
|
||||
return((float)((float)in_data) * (PowerSupplyVoltage / 4095));
|
||||
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
||||
float Humidity_Read(uint16_t data)
|
||||
{
|
||||
float Retf, fTmp;
|
||||
|
||||
fTmp = VoltageConversion(data);
|
||||
|
||||
if(fTmp < 0.1)Retf = 0;
|
||||
else Retf = Humidity_Conversion(fTmp)*10;
|
||||
|
||||
|
||||
return(Retf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
float Temperature_Read(uint16_t data)
|
||||
{
|
||||
float Retf, fTmp;
|
||||
|
||||
fTmp = VoltageConversion(data);
|
||||
|
||||
Retf = Temperature_Conversion(fTmp) ; //
|
||||
|
||||
return(Retf);
|
||||
}
|
||||
|
||||
float Float_Aeverage_calculator(float val, float * array_val)
|
||||
{
|
||||
uint8_t i;
|
||||
float max = -10000;
|
||||
float min = 10000;
|
||||
float sum = 0;
|
||||
float Rval = 0;
|
||||
|
||||
for(i=9; i>0; i--)
|
||||
{
|
||||
*(array_val+i) = *(array_val+i-1);
|
||||
}
|
||||
*array_val = val;
|
||||
|
||||
for(i=0; i<10; i++)
|
||||
{
|
||||
if(array_val[i] >= max)
|
||||
{
|
||||
max = array_val[i];
|
||||
}
|
||||
if(array_val[i] <= min)
|
||||
{
|
||||
min = array_val[i];
|
||||
}
|
||||
sum += array_val[i];
|
||||
}
|
||||
Rval = (float)((sum - max - min)/8);
|
||||
|
||||
return(Rval);
|
||||
}
|
||||
|
||||
|
||||
uint16_t Aeverage_calculator(uint16_t val, uint16_t * array_val)
|
||||
{
|
||||
uint8_t i;
|
||||
uint16_t max = 0;
|
||||
uint16_t min = 10000;
|
||||
uint32_t sum = 0;
|
||||
uint16_t Rval = 0;
|
||||
|
||||
for(i=9; i>0; i--)
|
||||
{
|
||||
*(array_val+i) = *(array_val+i-1);
|
||||
}
|
||||
*array_val = val;
|
||||
|
||||
for(i=0; i<10; i++)
|
||||
{
|
||||
if(array_val[i] >= max)
|
||||
{
|
||||
max = array_val[i];
|
||||
}
|
||||
if(array_val[i] <= min)
|
||||
{
|
||||
min = array_val[i];
|
||||
}
|
||||
sum += array_val[i];
|
||||
}
|
||||
Rval = (uint16_t)((sum - max - min)/8);
|
||||
|
||||
return(Rval);
|
||||
}
|
||||
|
||||
uint16_t Current_Read(uint16_t adc_current)
|
||||
{
|
||||
return adc_current;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern volatile uint8_t ADC_Complete;
|
||||
|
||||
volatile uint8_t Err_Code = 0;
|
||||
|
||||
uint16_t adc_result = 0;
|
||||
uint16_t Main_Current;
|
||||
signed int Out_Temperature = 0;
|
||||
signed int In_Temperature = 0;
|
||||
|
||||
uint8_t Sen_Pos = 0;
|
||||
|
||||
int16_t Volum1_value = 0, Volum2_value = 0;
|
||||
|
||||
float Avr_Temperature_1[10]={0,0,0,0,0,0,0,0,0,0};
|
||||
float Avr_Temperature_2[10]={0,0,0,0,0,0,0,0,0,0};
|
||||
uint16_t Avr_Vol_1[10]={0,0,0,0,0,0,0,0,0,0};
|
||||
uint16_t Avr_Vol_2[10]={0,0,0,0,0,0,0,0,0,0};
|
||||
uint16_t Avr_Current[10]={0,0,0,0,0,0,0,0,0,0};
|
||||
|
||||
|
||||
uint8_t Temp_sensor_error = 0;
|
||||
void ADC_Sensing(void)
|
||||
{
|
||||
float fTmp = 0;
|
||||
signed int sTmp = 0;
|
||||
uint16_t uTmp = 0;
|
||||
|
||||
|
||||
if(ADC_Complete == 1)
|
||||
{
|
||||
ADC_Complete = 0;
|
||||
|
||||
adc_result = ADC_GET_CONVERSION_DATA(ADC, 4); // in
|
||||
uTmp = Aeverage_calculator(adc_result, Avr_Current);
|
||||
Main_Current = Current_Read(uTmp);
|
||||
//////////// in
|
||||
/* adc_current = ADC_GET_CONVERSION_DATA(ADC, 0); // in
|
||||
fTmp = Temperature_Read(adc_result);
|
||||
|
||||
if(fTmp < 0) fTmp *= 1.05;
|
||||
sTmp = (signed int)fTmp;
|
||||
|
||||
|
||||
|
||||
if((sTmp > 85) || (sTmp < -40))
|
||||
{
|
||||
Temp_sensor_error |= 1;
|
||||
In_Temperature = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
sTmp = Float_Aeverage_calculator(sTmp, Avr_Temperature_1);
|
||||
Temp_sensor_error &= ~1;
|
||||
|
||||
if(sTmp >= 85)In_Temperature = 85;
|
||||
else if(sTmp <= -20)In_Temperature = -20;
|
||||
else In_Temperature = sTmp;
|
||||
}
|
||||
|
||||
*/
|
||||
//////////// out
|
||||
adc_result = ADC_GET_CONVERSION_DATA(ADC, 1); // out
|
||||
fTmp = Temperature_Read(adc_result);
|
||||
|
||||
if(fTmp < 0) fTmp *= 1.05;
|
||||
sTmp = (signed int)fTmp;
|
||||
|
||||
|
||||
if((sTmp > 85) || (sTmp < -40))
|
||||
{
|
||||
Temp_sensor_error |= 2;
|
||||
Out_Temperature = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
sTmp = Float_Aeverage_calculator(sTmp, Avr_Temperature_2);
|
||||
Temp_sensor_error &= ~2;
|
||||
|
||||
if(sTmp >= 85)Out_Temperature = 85;
|
||||
else if(sTmp <= -20)Out_Temperature = -20;
|
||||
else Out_Temperature = sTmp;
|
||||
}
|
||||
|
||||
|
||||
//if(Temp_sensor_error)Err_Code |= ERROR_TEMP_SENSOR;
|
||||
//else Err_Code &= ~ERROR_TEMP_SENSOR;
|
||||
|
||||
|
||||
////////////// vol 1
|
||||
adc_result = ADC_GET_CONVERSION_DATA(ADC, 2);
|
||||
//fTmp = Aeverage_calculator(adc_result, Avr_Vol_2);
|
||||
Volum1_value = 125 - (signed int)((float)adc_result/4.095/4) + 50; // -100 ~ 100
|
||||
|
||||
//////////////// vol 2
|
||||
adc_result = ADC_GET_CONVERSION_DATA(ADC, 3);
|
||||
//fTmp = Aeverage_calculator(adc_result, Avr_Vol_1);
|
||||
Volum2_value = 125 - (signed int)((float)adc_result/4.095/4) + 50; // -100 ~ 100
|
||||
|
||||
}
|
||||
ADC_START_CONV(ADC);
|
||||
}
|
||||
|
||||
void EEP_Save_process(void)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
/* (구 PC메뉴용 Test_Fan -> s_FAN 복사 제거 : 대시보드 CTRL_VSP 로 설정한 s_FAN 값을 그대로 저장) */
|
||||
|
||||
page_data[EEP_FAN1_VEN_1_DAN] = s_FAN1_VEN_1_DAN;
|
||||
page_data[EEP_FAN1_VEN_2_DAN] = s_FAN1_VEN_2_DAN;
|
||||
page_data[EEP_FAN1_VEN_3_DAN] = s_FAN1_VEN_3_DAN;
|
||||
page_data[EEP_FAN1_VEN_4_DAN] = s_FAN1_VEN_4_DAN;
|
||||
page_data[EEP_FAN1_AIR_1_DAN] = s_FAN1_AIR_1_DAN;
|
||||
page_data[EEP_FAN1_AIR_2_DAN] = s_FAN1_AIR_2_DAN;
|
||||
page_data[EEP_FAN1_AIR_3_DAN] = s_FAN1_AIR_3_DAN;
|
||||
page_data[EEP_FAN1_AIR_4_DAN] = s_FAN1_AIR_4_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_1_DAN] = s_FAN1_BYPASS_1_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_2_DAN] = s_FAN1_BYPASS_2_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_3_DAN] = s_FAN1_BYPASS_3_DAN;
|
||||
page_data[EEP_FAN1_BYPASS_4_DAN] = s_FAN1_BYPASS_4_DAN;
|
||||
|
||||
page_data[EEP_FAN2_VEN_1_DAN] = s_FAN2_VEN_1_DAN;
|
||||
page_data[EEP_FAN2_VEN_2_DAN] = s_FAN2_VEN_2_DAN;
|
||||
page_data[EEP_FAN2_VEN_3_DAN] = s_FAN2_VEN_3_DAN;
|
||||
page_data[EEP_FAN2_VEN_4_DAN] = s_FAN2_VEN_4_DAN;
|
||||
page_data[EEP_FAN2_AIR_1_DAN] = s_FAN2_AIR_1_DAN;
|
||||
page_data[EEP_FAN2_AIR_2_DAN] = s_FAN2_AIR_2_DAN;
|
||||
page_data[EEP_FAN2_AIR_3_DAN] = s_FAN2_AIR_3_DAN;
|
||||
page_data[EEP_FAN2_AIR_4_DAN] = s_FAN2_AIR_4_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_1_DAN] = s_FAN2_BYPASS_1_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_2_DAN] = s_FAN2_BYPASS_2_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_3_DAN] = s_FAN2_BYPASS_3_DAN;
|
||||
page_data[EEP_FAN2_BYPASS_4_DAN] = s_FAN2_BYPASS_4_DAN;
|
||||
|
||||
page_data[EEP_FILTER_CLEAN_HOUR_H] = (uint8_t)((Filter_timer_clean&0xFF00)>>8);
|
||||
page_data[EEP_FILTER_CLEAN_HOUR_L] = (uint8_t)(Filter_timer_clean&0x00FF);
|
||||
page_data[EEP_FILTER_CHANGE_HOUR_H] = (uint8_t)((Filter_timer_change&0xFF00)>>8);
|
||||
page_data[EEP_FILTER_CHANGE_HOUR_L] = (uint8_t)(Filter_timer_change&0x00FF);
|
||||
page_data[EEP_SOJA_CHANGE_HOUR_H] = (uint8_t)((Soja_timer_change&0xFF00)>>8);
|
||||
page_data[EEP_SOJA_CHANGE_HOUR_L] = (uint8_t)(Soja_timer_change&0x00FF);
|
||||
|
||||
page_data[EEP_BLACKOUT_POWER_ON] = Power_On;
|
||||
page_data[EEP_BLACKOUT_RUN_MODE] = Run_Mode;
|
||||
page_data[EEP_BLACKOUT_FAN_MODE] = Fan_Mode;
|
||||
|
||||
Hyst_To_Page(); /* 히스테리시스 임계/데드밴드/프리셋 저장 (대시보드 0x06/0x07/0x0D) */
|
||||
|
||||
for(i=0; i<EEP_SIZE ; i++)Write_Data(i, page_data[i]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
uint8_t Filter_Reset_Process(void)
|
||||
{
|
||||
Err_Code &= ~(ERROR_FILTER_CHANGE|ERROR_FILTER_CLEAN|ERROR_SOJA_CHANGE);
|
||||
if((Filter_timer_clean == 0)&&(Filter_timer_change == 0)&&(Filter_timer_change == 0))return(0);
|
||||
|
||||
Filter_timer_clean = 0;
|
||||
if(Filter_timer_change >= 4000)Filter_timer_change = 0;
|
||||
if(Soja_timer_change >= 20000)Soja_timer_change = 0;
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Reserve_Time_Update(uint8_t rtime)
|
||||
{
|
||||
if(Roomcon_connect_mode == 0)
|
||||
{
|
||||
Set_Reserve_timer_sec = (uint32_t)rtime * 3600;
|
||||
Reserve_timer_sec = Set_Reserve_timer_sec;
|
||||
Pre_Reserve_hour = rtime;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(rtime != Pre_Reserve_hour)
|
||||
{
|
||||
Set_Reserve_timer_sec = (uint32_t)rtime * 3600;
|
||||
Pre_Reserve_hour = rtime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern uint8_t Power_On;
|
||||
extern volatile uint8_t Run_Mode, Fan_Mode;
|
||||
void Power_off_process(uint8_t set)
|
||||
{ uint8_t i = 0;
|
||||
|
||||
Reserve_hour = 0;
|
||||
Pre_Reserve_hour = 0;
|
||||
Reserve_timer_sec = 0;
|
||||
Fan_Mode = 0;
|
||||
Run_Mode = 0;
|
||||
Power_On = 0;
|
||||
for(i=1; i<7; i++)Diffuser_Power[i] = 0; //////diffuser off
|
||||
|
||||
|
||||
if(set == 1)
|
||||
{
|
||||
Set_Reserve_timer_sec = 0;
|
||||
Set_Run_Mode = 0;
|
||||
Set_Fan_Mode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t BlackOut_Power_On = 0;
|
||||
uint8_t BlackOut_Run_Mode = 0;
|
||||
uint8_t BlackOut_Fan_Mode = 0;
|
||||
void Pre_Mode_Control(void)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
if((BlackOut_Power_On != Power_On)||(BlackOut_Run_Mode != Run_Mode)||(BlackOut_Fan_Mode != Fan_Mode))
|
||||
{
|
||||
page_data[EEP_BLACKOUT_POWER_ON] = Power_On;
|
||||
page_data[EEP_BLACKOUT_RUN_MODE] = Run_Mode;
|
||||
page_data[EEP_BLACKOUT_FAN_MODE] = Fan_Mode;
|
||||
|
||||
for(i=EEP_BLACKOUT_POWER_ON; i<EEP_SIZE ; i++)Write_Data(i, page_data[i]);
|
||||
}
|
||||
|
||||
BlackOut_Power_On = Power_On;
|
||||
BlackOut_Run_Mode = Run_Mode;
|
||||
BlackOut_Fan_Mode = Fan_Mode;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user