#include #include #include #include #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 "My_define.h" uint8_t test_num1=0,test_num2=0,test_num3=0; uint16_t com_bunbaegi_delay = 0; volatile uint8_t Rx_bunbaegi_complete=0, Rx_homenet_complete=0, Rx_roomcon_complete=0, Rx_debug_complete=0; volatile uint8_t Tx_bunbaegi_flag = 0, Tx_homenet_flag = 0, Tx_roomcon_flag = 0, Tx_debug_flag = 0; volatile uint8_t Tx_display_flag=0; uint8_t Tx_display_buffer[25], Rx_display_buffer[25]; uint8_t Tx_homenet_buffer[60],Tx_bunbaegi_buffer[40],Tx_roomcon232_buffer[25],Tx_debug_buffer[60]; uint8_t Rx_homenet_buffer[60],Rx_bunbaegi_buffer[40],Rx_roomcon232_buffer[25],Rx_debug_buffer[20]; volatile uint8_t Reserve_hour = 0; volatile uint8_t Pre_Reserve_hour = 0; extern volatile uint8_t Err_Code; extern uint8_t Target_Fan1_Speed, Target_Fan2_Speed; extern volatile uint32_t Reserve_timer_sec; extern signed int In_Temperature; extern signed int Out_Temperature; extern uint16_t InCom_polling_timer; uint16_t SEN66_pm1p0[7] = {0,}, SEN66_pm2p5[7] = {0,}, SEN66_pm4p0[7] = {0,}, SEN66_pm10p0[7] = {0,}; int16_t SEN66_humidity_value[7] = {0}; int16_t SEN66_temperature_value[7] = {0}; int16_t SEN66_VOC_value[7] = {0}; int16_t SEN66_NOx_value[7] = {0}; uint16_t SEN66_CO2_value[7] = {0}; //uint8_t Diffuser_VSP_Mode[6] = {0}; uint8_t Diffuser_VSP_Mode = 0; uint8_t Diffuser_Power[7] = {0,}; uint8_t Diffuser_Run_Mode[7] = {0,}; uint8_t Diffuser_Fan_Speed[7] = {0,}; uint8_t Diffuser_Dmp_Ang_SA[7] = {0,}, Memory_Diffuser_Dmp_Ang_SA[7] = {0,}; //Damper Angle uint8_t Diffuser_Dmp_Ang_RA[7] = {0,}, Memory_Diffuser_Dmp_Ang_RA[7] = {0,}; //Damper Angle uint8_t Diffuser_Air_quality[7] = {0,}, Memory_Diffuser_Air_quality[7] = {0,}; /* 대시보드 수동 댐퍼 제어(CTRL_DAMPER) : 1이면 환기/공청/바이패스에서 자동 개방이 덮어쓰지 않음. 자동/부가모드/전원OFF/모드전환 시 해제. (각실 1~4 사용) */ uint8_t Diffuser_Damper_Manual[7] = {0,}; /* 대시보드 수동 LED 디밍(CTRL_LED) : 1이면 자동 추종(댐퍼개방→ON/닫힘→소등)이 덮어쓰지 않음. 모든 운전모드에서 수동값 유지, 전원OFF 시에만 해제. (각실 1~4 사용) */ uint8_t Diffuser_Led_Manual[7] = {0,}; /* (꺼짐)예약 잔여초 : CTRL_RESERVE 로 설정(N시간×3600), 1초마다 감소, 0 도달 시 전원 OFF. 0=예약없음. 최대 8h=28800 */ uint16_t Reserve_Remain_Sec = 0; uint8_t Roomcon_Num = 5, Diffuser_Num = 6, VSP_Select_Num = 0; uint8_t VSP_Status_Trans = 0; const unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; // Table of CRC values for low-order byte const unsigned char auchCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 } ; uint16_t CRC16(uint8_t *puchMsg, uint16_t usDataLen) { uint8_t uchCRCHi = 0xFF ; // high CRC byte initialized uint8_t uchCRCLo = 0xFF ; // low CRC byte initialized uint8_t uIndex ; // will index into CRC lookup table while (usDataLen--) // pass through message buffer { uIndex = uchCRCHi ^ *puchMsg++ ; // calculate the CRC uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ; uchCRCLo = auchCRCLo[uIndex] ; } return ((uint16_t)uchCRCHi << 8 | (uint16_t)uchCRCLo) ; } //-------------------- SC 1 ----------------------------------- //-------------------- BunBaeGi ------------------------------ void bunbaegi_run_mode_check(void) { } uint8_t Packet_Type = 0; uint8_t Rx_bunbaegi_Pos = 0; uint8_t Packet_Length = 0; void rx_bunbaegi_check(uint8_t data) { uint16_t iTmp = 0, icrc = 0; if(Rx_roomcon_TimeOut == 0)Rx_bunbaegi_Pos = 0; switch(Rx_bunbaegi_Pos) { case 0: if(data != 0xAA)break; Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; break; case 1: if(data != 0x01)break; Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; break; case 2: Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; if(data == 0x03){Packet_Type = 0x02;} //RoomCon else{Packet_Type = 0x01;} //Diffuser break; case 3: Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; Packet_Length = 39; break; case 4: Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; if(Packet_Type == 0x02) { if((data == 0x01)||(data == 0x02)||(data == 0x03)) //29byte { Packet_Length = 39; } } //RoomCon break; case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; break; case 28: Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; if(Packet_Length == 29) { iTmp = (uint16_t)Rx_bunbaegi_buffer[27]<<8; icrc = iTmp + (uint16_t)Rx_bunbaegi_buffer[28] ; if(icrc == CRC16(Rx_bunbaegi_buffer, 27)) { Rx_bunbaegi_complete = 1; } Rx_bunbaegi_Pos = 0; } break; case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; break; case 38: Rx_bunbaegi_buffer[Rx_bunbaegi_Pos++] = data; if(Packet_Length == 39) { iTmp = (uint16_t)Rx_bunbaegi_buffer[37]<<8; icrc = iTmp + (uint16_t)Rx_bunbaegi_buffer[38] ; if(icrc == CRC16(Rx_bunbaegi_buffer, 37)) { Rx_bunbaegi_complete = 1; } Rx_bunbaegi_Pos = 0; } break; default: Rx_bunbaegi_Pos = 0; break; } } volatile uint8_t Bunbaegi_connect_mode = 0; uint8_t bunbaegi_com_count = 0; void com_bunbaegi_process(void) { if(Rx_bunbaegi_complete == 1) { if(com_bunbaegi_delay)return; Rx_bunbaegi_complete = 0; bunbaegi_parsing(); // Roomcon_connect_mode = 1; bunbaegi_com_count = 0; } } uint8_t Light_Bright[6] = {0,0,0,0,0,0}; uint8_t sa_sel = 1; //SA ID SELECTION uint8_t ea_sel = 1; //EA ID SELECTION uint8_t rc_sel = 1; //ROOMCON ID SELECTION uint8_t tx_sel = 1; //TX MODE SELECTION [1:SA],[2:EA],[3:RoomCon] uint8_t id_tbl[6] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; uint8_t Polling_VSP_Mode = 0; void Bunbaegi_Polling(void) { uint8_t id_1 = 0, id_2 = 0; uint16_t icrc = 0; uint8_t Tmp_sel = 0; Tx_bunbaegi_buffer[0] = 0xAA; Tx_bunbaegi_buffer[1] = 0x10; Tx_bunbaegi_buffer[2] = tx_sel; if(tx_sel == 1) // TX -> SA { id_2 = sa_sel; } else if(tx_sel == 2) { id_2 = ea_sel; } else if(tx_sel == 3) // roomcon { Polling_VSP_Mode = 0x00; if(rc_sel == 1){rc_sel = 2;Polling_VSP_Mode = 0x00;} else if(rc_sel == 2){rc_sel = 3;Polling_VSP_Mode = 0x11;} else if(rc_sel == 3){rc_sel = 1;Polling_VSP_Mode = 0x12;} id_2 = 5; // room4 e����i?? roomcon } id_1 = tx_sel; //sa/ea/roomcon Tx_bunbaegi_buffer[3] = id_2; // number if(tx_sel == 3) //RoomCon Polling { if((Diffuser_VSP_Mode == 1) && (id_2==5)) // room4 e����i?? roomcon { Tx_bunbaegi_buffer[4] = Diffuser_VSP_Mode; Tx_bunbaegi_buffer[5] = (uint8_t)s_FAN1_VEN_1_DAN; Tx_bunbaegi_buffer[6] = (uint8_t)s_FAN2_VEN_1_DAN; Tx_bunbaegi_buffer[7] = (uint8_t)s_FAN1_VEN_2_DAN; Tx_bunbaegi_buffer[8] = (uint8_t)s_FAN2_VEN_2_DAN; Tx_bunbaegi_buffer[9] = (uint8_t)s_FAN1_VEN_3_DAN; Tx_bunbaegi_buffer[10] = (uint8_t)s_FAN2_VEN_3_DAN; Tx_bunbaegi_buffer[11] = (uint8_t)s_FAN1_VEN_4_DAN; Tx_bunbaegi_buffer[12] = (uint8_t)s_FAN2_VEN_4_DAN; Tx_bunbaegi_buffer[13] = 0; Tx_bunbaegi_buffer[14] = 0; //5DAN Tx_bunbaegi_buffer[15] = (uint8_t)s_FAN1_AIR_1_DAN; Tx_bunbaegi_buffer[16] = (uint8_t)s_FAN2_AIR_1_DAN; Tx_bunbaegi_buffer[17] = (uint8_t)s_FAN1_AIR_2_DAN; Tx_bunbaegi_buffer[18] = (uint8_t)s_FAN2_AIR_2_DAN; Tx_bunbaegi_buffer[19] = (uint8_t)s_FAN1_AIR_3_DAN; Tx_bunbaegi_buffer[20] = (uint8_t)s_FAN2_AIR_3_DAN; Tx_bunbaegi_buffer[21] = 0; Tx_bunbaegi_buffer[22] = 0; //4DAN Tx_bunbaegi_buffer[23] = 0; Tx_bunbaegi_buffer[24] = 0; //5DAN Tx_bunbaegi_buffer[25] = 0; Tx_bunbaegi_buffer[26] = 0; //BLANK icrc = CRC16(Tx_bunbaegi_buffer, 27); Tx_bunbaegi_buffer[27] = (uint8_t)(icrc>>8); //CRC16 Tx_bunbaegi_buffer[28] = (uint8_t)(icrc & 0x00FF); //CRC16 BUNBAGI_485_DIR = 1; SCUART_Write(SC1, Tx_bunbaegi_buffer, 29); while ( !(SC1->TRSR & SC_TRSR_TX_EMPTY_F_Msk) ); delay_us(200); BUNBAGI_485_DIR = 0; Diffuser_VSP_Mode = 0; } else if((Diffuser_VSP_Mode == 2) && (id_2==5)) // room4 e����i?? roomcon { Tx_bunbaegi_buffer[4] = Diffuser_VSP_Mode; Tx_bunbaegi_buffer[5] = s_FAN1_BYPASS_1_DAN; Tx_bunbaegi_buffer[6] = s_FAN2_BYPASS_1_DAN; Tx_bunbaegi_buffer[7] = s_FAN1_BYPASS_2_DAN; Tx_bunbaegi_buffer[8] = s_FAN2_BYPASS_2_DAN; Tx_bunbaegi_buffer[9] = s_FAN1_BYPASS_3_DAN; Tx_bunbaegi_buffer[10] = s_FAN2_BYPASS_3_DAN; Tx_bunbaegi_buffer[11] = 0; Tx_bunbaegi_buffer[12] = 0; //4DAN Tx_bunbaegi_buffer[13] = 0; Tx_bunbaegi_buffer[14] = 0; //5DAN Tx_bunbaegi_buffer[15] = 0; Tx_bunbaegi_buffer[16] = 0; //BLANK Tx_bunbaegi_buffer[17] = Roomcon_Num; Tx_bunbaegi_buffer[18] = Diffuser_Num; Tx_bunbaegi_buffer[19] = 0; Tx_bunbaegi_buffer[20] = 0; //BLANK Tx_bunbaegi_buffer[21] = 0; Tx_bunbaegi_buffer[22] = 0; //BLANK Tx_bunbaegi_buffer[23] = 0; Tx_bunbaegi_buffer[24] = 0; //BLANK Tx_bunbaegi_buffer[25] = 0; Tx_bunbaegi_buffer[26] = 0; //BLANK icrc = CRC16(Tx_bunbaegi_buffer, 27); Tx_bunbaegi_buffer[27] = (uint8_t)(icrc>>8); //CRC16 Tx_bunbaegi_buffer[28] = (uint8_t)(icrc & 0x00FF); //CRC16 BUNBAGI_485_DIR = 1; SCUART_Write(SC1, Tx_bunbaegi_buffer, 29); while ( !(SC1->TRSR & SC_TRSR_TX_EMPTY_F_Msk) ); delay_us(200); BUNBAGI_485_DIR = 0; Diffuser_VSP_Mode = 0; } else if((Diffuser_VSP_Mode == 3) && (id_2==5)) // room4 e����i?? roomcon { Tx_bunbaegi_buffer[4] = Diffuser_VSP_Mode; Tx_bunbaegi_buffer[5] = (uint8_t)Test_RPM_Vent_Reference[1]; Tx_bunbaegi_buffer[6] = (uint8_t)(Test_RPM_Vent_Reference[1]>>8); // VENT RPM REF 2DAN Tx_bunbaegi_buffer[7] = (uint8_t)Test_RPM_Vent_Delta[1]; Tx_bunbaegi_buffer[8] = (uint8_t)(Test_RPM_Vent_Delta[1]>>8); // VENT RPM DELTA 2DAN Tx_bunbaegi_buffer[9] = (uint8_t)Test_RPM_Vent_Reference[2]; Tx_bunbaegi_buffer[10] = (uint8_t)(Test_RPM_Vent_Reference[2]>>8); // VENT RPM REF 3DAN Tx_bunbaegi_buffer[11] = (uint8_t)Test_RPM_Vent_Delta[2]; Tx_bunbaegi_buffer[12] = (uint8_t)(Test_RPM_Vent_Delta[2]>>8);; //VENT RPM DELTA 3DAN Tx_bunbaegi_buffer[13] = (uint8_t)Test_RPM_Air_Reference[1]; Tx_bunbaegi_buffer[14] = (uint8_t)(Test_RPM_Air_Reference[1]>>8); //AIR RPM REF 2DAN Tx_bunbaegi_buffer[15] = (uint8_t)Test_RPM_Air_Delta[1]; Tx_bunbaegi_buffer[16] = (uint8_t)(Test_RPM_Air_Delta[1]>>8); //AIR RPM DELTA 2DAN Tx_bunbaegi_buffer[17] = (uint8_t)Test_RPM_Air_Reference[2]; Tx_bunbaegi_buffer[18] = (uint8_t)(Test_RPM_Air_Reference[2]>>8); //AIR RPM REF 3DAN Tx_bunbaegi_buffer[19] = (uint8_t)Test_RPM_Air_Delta[2]; Tx_bunbaegi_buffer[20] = (uint8_t)(Test_RPM_Air_Delta[2]>>8); //AIR RPM DELTA 3DAN Tx_bunbaegi_buffer[21] = 0; Tx_bunbaegi_buffer[22] = 0; //21byte Modbus ID Tx_bunbaegi_buffer[23] = 0; Tx_bunbaegi_buffer[24] = 0; //BLANK Tx_bunbaegi_buffer[25] = 0; Tx_bunbaegi_buffer[26] = 0; //BLANK icrc = CRC16(Tx_bunbaegi_buffer, 27); Tx_bunbaegi_buffer[27] = (uint8_t)(icrc>>8); //CRC16 Tx_bunbaegi_buffer[28] = (uint8_t)(icrc & 0x00FF); //CRC16 BUNBAGI_485_DIR = 1; SCUART_Write(SC1, Tx_bunbaegi_buffer, 29); while ( !(SC1->TRSR & SC_TRSR_TX_EMPTY_F_Msk) ); delay_us(200); BUNBAGI_485_DIR = 0; Diffuser_VSP_Mode = 0; } else { if(id_2 == 5) // room4 e����i?? roomcon { if(Polling_VSP_Mode == 0x11) //air qurity { Tx_bunbaegi_buffer[4] = 0x11; //VSP_MODE // room1 Tx_bunbaegi_buffer[5] = (uint8_t)(SEN66_pm10p0[3]>>8); Tx_bunbaegi_buffer[6] = (uint8_t)(SEN66_pm10p0[3]); Tx_bunbaegi_buffer[7] = (uint8_t)(SEN66_humidity_value[3]>>8); Tx_bunbaegi_buffer[8] = (uint8_t)(SEN66_humidity_value[3]); Tx_bunbaegi_buffer[9] = (uint8_t)(SEN66_temperature_value[3]>>8); Tx_bunbaegi_buffer[10] = (uint8_t)(SEN66_temperature_value[3]); Tx_bunbaegi_buffer[11] = (uint8_t)(SEN66_CO2_value[3]>>8); Tx_bunbaegi_buffer[12] = (uint8_t)(SEN66_CO2_value[3]); Tx_bunbaegi_buffer[13] = (uint8_t)(SEN66_VOC_value[3]>>8);; Tx_bunbaegi_buffer[14] = (uint8_t)(SEN66_VOC_value[3]); Tx_bunbaegi_buffer[15] = 0; Tx_bunbaegi_buffer[16] = 0; Tx_bunbaegi_buffer[17] = 0; Tx_bunbaegi_buffer[18] = 0; Tx_bunbaegi_buffer[19] = 0; Tx_bunbaegi_buffer[20] = 0; Tx_bunbaegi_buffer[21] = 0; //room2 Tx_bunbaegi_buffer[22] = (uint8_t)(SEN66_pm10p0[4]>>8); Tx_bunbaegi_buffer[23] = (uint8_t)(SEN66_pm10p0[4]); Tx_bunbaegi_buffer[24] = (uint8_t)(SEN66_humidity_value[4]>>8); Tx_bunbaegi_buffer[25] = (uint8_t)(SEN66_humidity_value[4]); Tx_bunbaegi_buffer[26] = (uint8_t)(SEN66_temperature_value[4]>>8); Tx_bunbaegi_buffer[27] = (uint8_t)(SEN66_temperature_value[4]); Tx_bunbaegi_buffer[28] = (uint8_t)(SEN66_CO2_value[4]>>8); Tx_bunbaegi_buffer[29] = (uint8_t)(SEN66_CO2_value[4]); Tx_bunbaegi_buffer[30] = (uint8_t)(SEN66_VOC_value[4]>>8);; Tx_bunbaegi_buffer[31] = (uint8_t)(SEN66_VOC_value[4]); Tx_bunbaegi_buffer[32] = 0; } else if(Polling_VSP_Mode == 0x12) //air qurity { Tx_bunbaegi_buffer[4] = 0x12; //VSP_MODE // room3 Tx_bunbaegi_buffer[5] = (uint8_t)(SEN66_pm10p0[5]>>8); Tx_bunbaegi_buffer[6] = (uint8_t)(SEN66_pm10p0[5]); Tx_bunbaegi_buffer[7] = (uint8_t)(SEN66_humidity_value[5]>>8); Tx_bunbaegi_buffer[8] = (uint8_t)(SEN66_humidity_value[5]); Tx_bunbaegi_buffer[9] = (uint8_t)(SEN66_temperature_value[5]>>8); Tx_bunbaegi_buffer[10] = (uint8_t)(SEN66_temperature_value[5]); Tx_bunbaegi_buffer[11] = (uint8_t)(SEN66_CO2_value[5]>>8); Tx_bunbaegi_buffer[12] = (uint8_t)(SEN66_CO2_value[5]); Tx_bunbaegi_buffer[13] = (uint8_t)(SEN66_VOC_value[5]>>8);; Tx_bunbaegi_buffer[14] = (uint8_t)(SEN66_VOC_value[5]); Tx_bunbaegi_buffer[15] = 0; Tx_bunbaegi_buffer[16] = 0; Tx_bunbaegi_buffer[17] = 0; Tx_bunbaegi_buffer[18] = 0; Tx_bunbaegi_buffer[19] = 0; Tx_bunbaegi_buffer[20] = 0; Tx_bunbaegi_buffer[21] = 0; //room4 Tx_bunbaegi_buffer[22] = (uint8_t)(SEN66_pm10p0[6]>>8); Tx_bunbaegi_buffer[23] = (uint8_t)(SEN66_pm10p0[6]); Tx_bunbaegi_buffer[24] = (uint8_t)(SEN66_humidity_value[6]>>8); Tx_bunbaegi_buffer[25] = (uint8_t)(SEN66_humidity_value[6]); Tx_bunbaegi_buffer[26] = (uint8_t)(SEN66_temperature_value[6]>>8); Tx_bunbaegi_buffer[27] = (uint8_t)(SEN66_temperature_value[6]); Tx_bunbaegi_buffer[28] = (uint8_t)(SEN66_CO2_value[6]>>8); Tx_bunbaegi_buffer[29] = (uint8_t)(SEN66_CO2_value[6]); Tx_bunbaegi_buffer[30] = (uint8_t)(SEN66_VOC_value[6]>>8);; Tx_bunbaegi_buffer[31] = (uint8_t)(SEN66_VOC_value[6]); Tx_bunbaegi_buffer[32] = 0; } else //normal { id_2 = 1; //living room Tx_bunbaegi_buffer[4] = 0x00; //VSP_MODE Tx_bunbaegi_buffer[5] = Diffuser_Power[id_2]; //Power Mode Tx_bunbaegi_buffer[6] = Diffuser_Run_Mode[id_2]; //Run Mode Tx_bunbaegi_buffer[7] = Diffuser_Fan_Speed[id_2]; //Fan Speed if(Command_request_type & TYPE_POWER)Tx_bunbaegi_buffer[5] |= 0x80; if(Command_request_type & TYPE_MODE)Tx_bunbaegi_buffer[6] |= 0x80; if(Command_request_type & TYPE_FAN_SPEED)Tx_bunbaegi_buffer[7] |= 0x80; Command_request_type = 0; Tx_bunbaegi_buffer[8] = 0; //reservation time Tx_bunbaegi_buffer[9] = UV_OnOff; //Heater/UV Tx_bunbaegi_buffer[10] = 0; //Filter Reset Tx_bunbaegi_buffer[11] = 0; //RPM Start Tx_bunbaegi_buffer[12] = 0; //RPM Stop Tx_bunbaegi_buffer[13] = (uint8_t)(SEN66_pm2p5[id_2]>>8); Tx_bunbaegi_buffer[14] = (uint8_t)(SEN66_pm2p5[id_2]); Tx_bunbaegi_buffer[15] = (uint8_t)(SEN66_pm10p0[id_2]>>8); Tx_bunbaegi_buffer[16] = (uint8_t)(SEN66_pm10p0[id_2]); Tx_bunbaegi_buffer[17] = (uint8_t)(SEN66_humidity_value[id_2]>>8); Tx_bunbaegi_buffer[18] = (uint8_t)(SEN66_humidity_value[id_2]); Tx_bunbaegi_buffer[19] = (uint8_t)(SEN66_temperature_value[id_2]>>8); Tx_bunbaegi_buffer[20] = (uint8_t)(SEN66_temperature_value[id_2]); Tx_bunbaegi_buffer[21] = (uint8_t)(SEN66_CO2_value[id_2]>>8); Tx_bunbaegi_buffer[22] = (uint8_t)(SEN66_CO2_value[id_2]); Tx_bunbaegi_buffer[23] = 0; Tx_bunbaegi_buffer[24] = 0;//(uint8_t)(Energy_Consumption>>8); Tx_bunbaegi_buffer[25] = 0;//(uint8_t)(Energy_Consumption); Tx_bunbaegi_buffer[26] = 0; Tx_bunbaegi_buffer[27] = (uint8_t)(SEN66_VOC_value[id_2]>>8);; Tx_bunbaegi_buffer[28] = (uint8_t)(SEN66_VOC_value[id_2]); Tx_bunbaegi_buffer[29] = (uint8_t)(Filter_timer_change>>8); Tx_bunbaegi_buffer[30] = (uint8_t)(Filter_timer_change); Tx_bunbaegi_buffer[31] = (uint8_t)(Soja_timer_change>>8); Tx_bunbaegi_buffer[32] = (uint8_t)(Soja_timer_change); } } else { Tx_bunbaegi_buffer[4] = 0x00; //VSP_MODE Tx_bunbaegi_buffer[5] = Diffuser_Power[id_2]; //Power Mode Tx_bunbaegi_buffer[6] = Diffuser_Run_Mode[id_2]; //Run Mode Tx_bunbaegi_buffer[7] = Diffuser_Fan_Speed[id_2]; //Fan Speed Tx_bunbaegi_buffer[8] = 0; //reservation time Tx_bunbaegi_buffer[9] = 0; //Heater/UV Tx_bunbaegi_buffer[10] = 0; //Filter Reset Tx_bunbaegi_buffer[11] = 0; //RPM Start Tx_bunbaegi_buffer[12] = 0; //RPM Stop Tx_bunbaegi_buffer[13] = (uint8_t)(SEN66_pm2p5[id_2]>>8); Tx_bunbaegi_buffer[14] = (uint8_t)(SEN66_pm2p5[id_2]); Tx_bunbaegi_buffer[15] = (uint8_t)(SEN66_pm10p0[id_2]>>8); Tx_bunbaegi_buffer[16] = (uint8_t)(SEN66_pm10p0[id_2]); Tx_bunbaegi_buffer[17] = (uint8_t)(SEN66_humidity_value[id_2]>>8); Tx_bunbaegi_buffer[18] = (uint8_t)(SEN66_humidity_value[id_2]); Tx_bunbaegi_buffer[19] = (uint8_t)(SEN66_temperature_value[id_2]>>8); Tx_bunbaegi_buffer[20] = (uint8_t)(SEN66_temperature_value[id_2]); Tx_bunbaegi_buffer[21] = (uint8_t)(SEN66_CO2_value[id_2]>>8); Tx_bunbaegi_buffer[22] = (uint8_t)(SEN66_CO2_value[id_2]); Tx_bunbaegi_buffer[23] = 0; Tx_bunbaegi_buffer[24] = 0; Tx_bunbaegi_buffer[25] = 0; Tx_bunbaegi_buffer[26] = 0; Tx_bunbaegi_buffer[27] = (uint8_t)(SEN66_VOC_value[id_2]>>8);; Tx_bunbaegi_buffer[28] = (uint8_t)(SEN66_VOC_value[id_2]); Tx_bunbaegi_buffer[29] = (uint8_t)(Filter_timer_change>>8); Tx_bunbaegi_buffer[30] = (uint8_t)(Filter_timer_change); Tx_bunbaegi_buffer[31] = (uint8_t)(Soja_timer_change>>8); Tx_bunbaegi_buffer[32] = (uint8_t)(Soja_timer_change); } Tx_bunbaegi_buffer[33] = (uint8_t)(Err_Code>>8); //Error Code Tx_bunbaegi_buffer[34] = (uint8_t)(Err_Code&0x00FF); //Error Code Tx_bunbaegi_buffer[35] = 0; Tx_bunbaegi_buffer[36] = 0; icrc = CRC16(Tx_bunbaegi_buffer, 37); Tx_bunbaegi_buffer[37] = (uint8_t)(icrc>>8); //CRC16 Tx_bunbaegi_buffer[38] = (uint8_t)(icrc & 0x00FF); //CRC16 BUNBAGI_485_DIR = 1; SCUART_Write(SC1, Tx_bunbaegi_buffer, 39); while ( !(SC1->TRSR & SC_TRSR_TX_EMPTY_F_Msk) ); delay_us(200); BUNBAGI_485_DIR = 0; } } else //////BunBaeGi Polling { Tx_bunbaegi_buffer[4] = 0x00; //VSP_MODE Tx_bunbaegi_buffer[5] = Diffuser_Power[id_2]; //Power Mode Tx_bunbaegi_buffer[6] = Diffuser_Run_Mode[id_2]; //Run Mode Tx_bunbaegi_buffer[7] = Diffuser_Fan_Speed[id_2]; //Fan Speed if(Diffuser_Run_Mode[1] == 0x02) // auto mode { Tx_bunbaegi_buffer[8] = Light_Bright[id_2]; //LED Tx_bunbaegi_buffer[9] = Diffuser_Air_quality[id_2]; //Air Quality Tx_bunbaegi_buffer[10] = Diffuser_Dmp_Ang_SA[id_2]; //Damper Angle - SA Tx_bunbaegi_buffer[11] = Diffuser_Dmp_Ang_RA[id_2]; //Damper Angle - EA Tx_bunbaegi_buffer[12] = (uint8_t)(urpm1>>8); //SA RPM Tx_bunbaegi_buffer[13] = (uint8_t)(urpm1); //SA RPM Tx_bunbaegi_buffer[14] = (uint8_t)(urpm2>>8); //EA RPM Tx_bunbaegi_buffer[15] = (uint8_t)(urpm2); //EA RPM Tx_bunbaegi_buffer[16] = 0; //SA Reset Tx_bunbaegi_buffer[17] = 0; //EA Reset Tx_bunbaegi_buffer[18] = 0; //Reserve Hour Tx_bunbaegi_buffer[19] = 0; //Blank Tx_bunbaegi_buffer[20] = 0; //Blank Tx_bunbaegi_buffer[21] = 0; //Blank Tx_bunbaegi_buffer[22] = 0; //Blank Tx_bunbaegi_buffer[23] = 0; //Version Tx_bunbaegi_buffer[24] = 0; //Version Tx_bunbaegi_buffer[25] = (uint8_t)(Err_Code>>8); //Error Code Tx_bunbaegi_buffer[26] = (uint8_t)(Err_Code&0x00FF); //Error Code } else { Tx_bunbaegi_buffer[8] = Light_Bright[id_2]; //LED Tx_bunbaegi_buffer[9] = Diffuser_Air_quality[id_2]; //Air Quality Tx_bunbaegi_buffer[10] = Diffuser_Dmp_Ang_SA[id_2]; //Damper Angle - SA Tx_bunbaegi_buffer[11] = Diffuser_Dmp_Ang_RA[id_2]; //Damper Angle - EA Tx_bunbaegi_buffer[12] = 0; //SA RPM Tx_bunbaegi_buffer[13] = 0; //SA RPM Tx_bunbaegi_buffer[14] = 0; //EA RPM Tx_bunbaegi_buffer[15] = 0; //EA RPM Tx_bunbaegi_buffer[16] = 0; //SA Reset Tx_bunbaegi_buffer[17] = 0; //EA Reset Tx_bunbaegi_buffer[18] = 0; //Reserve Hour Tx_bunbaegi_buffer[19] = 0; //Blank Tx_bunbaegi_buffer[20] = 0; //Blank Tx_bunbaegi_buffer[21] = 0; //Blank Tx_bunbaegi_buffer[22] = 0; //Blank Tx_bunbaegi_buffer[23] = 0; //Version Tx_bunbaegi_buffer[24] = 0; //Version Tx_bunbaegi_buffer[25] = (uint8_t)(Err_Code>>8); //Error Code Tx_bunbaegi_buffer[26] = (uint8_t)(Err_Code&0x00FF); //Error Code } icrc = CRC16(Tx_bunbaegi_buffer, 27); Tx_bunbaegi_buffer[27] = (uint8_t)(icrc>>8); //CRC16 Tx_bunbaegi_buffer[28] = (uint8_t)(icrc & 0x00FF); //CRC16 BUNBAGI_485_DIR = 1; SCUART_Write(SC1, Tx_bunbaegi_buffer, 29); while ( !(SC1->TRSR & SC_TRSR_TX_EMPTY_F_Msk) ); delay_us(200); BUNBAGI_485_DIR = 0; } if(tx_sel == 1) // TX -> SA { if(sa_sel++ >= 4) { tx_sel = 2; sa_sel = 1; } } else if(tx_sel == 2) { if(ea_sel++ >= 4) { ea_sel = 1; tx_sel = 3; } } else { sa_sel = 1; ea_sel = 1; tx_sel = 1; } } void Diffuser_parsing(void) { uint8_t id = 0; if(Rx_bunbaegi_buffer[2]==0x02) //EA { id = Rx_bunbaegi_buffer[3]; SEN66_pm10p0[id] = ((uint16_t)Rx_bunbaegi_buffer[12]<<8 | (uint16_t)Rx_bunbaegi_buffer[13]); SEN66_pm4p0[id] = ((uint16_t)Rx_bunbaegi_buffer[14]<<8 | (uint16_t)Rx_bunbaegi_buffer[15]); SEN66_pm2p5[id] = ((uint16_t)Rx_bunbaegi_buffer[16]<<8 | (uint16_t)Rx_bunbaegi_buffer[17]); SEN66_pm1p0[id] = ((uint16_t)Rx_bunbaegi_buffer[18]<<8 | (uint16_t)Rx_bunbaegi_buffer[19]); SEN66_humidity_value[id] = ((uint16_t)Rx_bunbaegi_buffer[20]<<8 | (uint16_t)Rx_bunbaegi_buffer[21]); SEN66_temperature_value[id] = ((uint16_t)Rx_bunbaegi_buffer[22]<<8 | (uint16_t)Rx_bunbaegi_buffer[23]); SEN66_VOC_value[id] = ((uint16_t)Rx_bunbaegi_buffer[24]<<8 | (uint16_t)Rx_bunbaegi_buffer[25]); SEN66_NOx_value[id] = ((uint16_t)Rx_bunbaegi_buffer[26]<<8 | (uint16_t)Rx_bunbaegi_buffer[27]); SEN66_CO2_value[id] = ((uint16_t)Rx_bunbaegi_buffer[28]<<8 | (uint16_t)Rx_bunbaegi_buffer[29]); /* bunbaegi_Err_Code = ((uint16_t)Rx_bunbaegi_buffer[33]<<8 | (uint16_t)Rx_bunbaegi_buffer[34]); if(bunbaegi_Err_Code == 0x0100) { if(id == 0) { Err_Code |= ERROR_SENSOR_MODULE_LIVING; } else if(id == 1) { Err_Code |= ERROR_SENSOR_MODULE_ROOM1; } else if(id == 2) { Err_Code |= ERROR_SENSOR_MODULE_ROOM2; } else if(id == 3) { Err_Code |= ERROR_SENSOR_MODULE_ROOM3; } } else { if(id == 0) { Err_Code &= ~ERROR_SENSOR_MODULE_LIVING; } else if(id == 1) { Err_Code &= ~ERROR_SENSOR_MODULE_ROOM1; } else if(id == 2) { Err_Code &= ~ERROR_SENSOR_MODULE_ROOM2; } else if(id == 3) { Err_Code &= ~ERROR_SENSOR_MODULE_ROOM3; } } */ } memset(Rx_bunbaegi_buffer, 0, sizeof(Rx_bunbaegi_buffer)); } void EachRoomCon_parsing(void) { uint8_t id = 0; id = Rx_bunbaegi_buffer[3]; Diffuser_VSP_Mode = Rx_bunbaegi_buffer[4]; if(Diffuser_VSP_Mode == 0x10) //setting { switch(Rx_bunbaegi_buffer[5]) // vsp_select { case 1: s_FAN1_VEN_1_DAN = Rx_bunbaegi_buffer[6]; s_FAN2_VEN_1_DAN = Rx_bunbaegi_buffer[7]; s_FAN1_VEN_2_DAN = Rx_bunbaegi_buffer[8]; s_FAN2_VEN_2_DAN = Rx_bunbaegi_buffer[9]; s_FAN1_VEN_3_DAN = Rx_bunbaegi_buffer[10]; s_FAN2_VEN_3_DAN = Rx_bunbaegi_buffer[11]; Test_RPM_Vent_Reference[1] = ((uint16_t)Rx_bunbaegi_buffer[18]<<8) + ((uint16_t)Rx_bunbaegi_buffer[19]); Test_RPM_Vent_Delta[1] = ((uint16_t)Rx_bunbaegi_buffer[20]<<8) + ((uint16_t)Rx_bunbaegi_buffer[21]); Test_RPM_Vent_Reference[2] = ((uint16_t)Rx_bunbaegi_buffer[22]<<8) + ((uint16_t)Rx_bunbaegi_buffer[23]); Test_RPM_Vent_Delta[2] = ((uint16_t)Rx_bunbaegi_buffer[24]<<8) + ((uint16_t)Rx_bunbaegi_buffer[25]); break; case 2: s_FAN1_AIR_1_DAN = Rx_bunbaegi_buffer[6]; s_FAN2_AIR_1_DAN = Rx_bunbaegi_buffer[7]; s_FAN1_AIR_2_DAN = Rx_bunbaegi_buffer[8]; s_FAN2_AIR_2_DAN = Rx_bunbaegi_buffer[9]; s_FAN1_AIR_3_DAN = Rx_bunbaegi_buffer[10]; s_FAN2_AIR_3_DAN = Rx_bunbaegi_buffer[11]; Test_RPM_Air_Reference[1] = ((uint16_t)Rx_bunbaegi_buffer[18]<<8) + ((uint16_t)Rx_bunbaegi_buffer[19]); Test_RPM_Air_Delta[1] = ((uint16_t)Rx_bunbaegi_buffer[20]<<8) + ((uint16_t)Rx_bunbaegi_buffer[21]); Test_RPM_Air_Reference[2] = ((uint16_t)Rx_bunbaegi_buffer[22]<<8) + ((uint16_t)Rx_bunbaegi_buffer[23]); Test_RPM_Air_Delta[2] = ((uint16_t)Rx_bunbaegi_buffer[24]<<8) + ((uint16_t)Rx_bunbaegi_buffer[25]); break; case 3: s_FAN1_BYPASS_1_DAN = Rx_bunbaegi_buffer[6]; s_FAN2_BYPASS_1_DAN = Rx_bunbaegi_buffer[7]; s_FAN1_BYPASS_2_DAN = Rx_bunbaegi_buffer[8]; s_FAN2_BYPASS_2_DAN = Rx_bunbaegi_buffer[9]; s_FAN1_BYPASS_3_DAN = Rx_bunbaegi_buffer[10]; s_FAN2_BYPASS_3_DAN = Rx_bunbaegi_buffer[11]; if(Rx_bunbaegi_buffer[36] == 1)EEP_Save_Flag = 1; break; default: break; } Roomcon_Num = Rx_bunbaegi_buffer[30]; Diffuser_Num = Rx_bunbaegi_buffer[31]; } else if(Diffuser_VSP_Mode == 0) //normal { if(id == 5) // living room { // Com_Err_Flag = 0; // Roomcon_Com_Count = 0; if(Rx_bunbaegi_buffer[5] & 0x80) { Diffuser_Power[1] = Rx_bunbaegi_buffer[5] & 0x7f; Diffuser_Power[2] = Rx_bunbaegi_buffer[5] & 0x7f; Diffuser_Power[3] = Rx_bunbaegi_buffer[5] & 0x7f; Diffuser_Power[4] = Rx_bunbaegi_buffer[5] & 0x7f; Diffuser_Power[5] = Rx_bunbaegi_buffer[5] & 0x7f; Diffuser_Power[6] = Rx_bunbaegi_buffer[5] & 0x7f; Power_On = Rx_bunbaegi_buffer[5] & 0x7f; } if(Rx_bunbaegi_buffer[6] & 0x80) { Diffuser_Run_Mode[1] = Rx_bunbaegi_buffer[6] & 0x7f; Diffuser_Run_Mode[2] = Rx_bunbaegi_buffer[6] & 0x7f; Diffuser_Run_Mode[3] = Rx_bunbaegi_buffer[6] & 0x7f; Diffuser_Run_Mode[4] = Rx_bunbaegi_buffer[6] & 0x7f; Diffuser_Run_Mode[5] = Rx_bunbaegi_buffer[6] & 0x7f; Diffuser_Run_Mode[6] = Rx_bunbaegi_buffer[6] & 0x7f; if(Diffuser_Run_Mode[1] == 0x01) Run_Mode = MODE_VENTILATION; else if(Diffuser_Run_Mode[1] == 0x02) Run_Mode = MODE_AUTO; else if(Diffuser_Run_Mode[1] == 0x04) Run_Mode = MODE_BYPASS; else if(Diffuser_Run_Mode[1] == 0x08) Run_Mode = MODE_AIRCLEAN; else Run_Mode = MODE_VENTILATION; } if(Rx_bunbaegi_buffer[7] & 0x80) { Diffuser_Fan_Speed[1] = Rx_bunbaegi_buffer[7] & 0x7f; Diffuser_Fan_Speed[2] = Rx_bunbaegi_buffer[7] & 0x7f; Diffuser_Fan_Speed[3] = Rx_bunbaegi_buffer[7] & 0x7f; Diffuser_Fan_Speed[4] = Rx_bunbaegi_buffer[7] & 0x7f; Diffuser_Fan_Speed[5] = Rx_bunbaegi_buffer[7] & 0x7f; Diffuser_Fan_Speed[6] = Rx_bunbaegi_buffer[7] & 0x7f; Fan_Mode = Rx_bunbaegi_buffer[7] & 0x7f; } if(Rx_bunbaegi_buffer[8] & 0x80) { Set_Reserve_timer_sec = (uint32_t)(Rx_bunbaegi_buffer[7] & 0x7f)*3600; } if(Rx_bunbaegi_buffer[9]&0x80) { Heater_OnOff = Rx_bunbaegi_buffer[9]&0x01; //UV_OnOff = (Rx_bunbaegi_buffer[9]>>4)&0x01; } if(Rx_bunbaegi_buffer[10] == 0x01)Filter_Reset_Flag |= 1; // if(Rx_bunbaegi_buffer[23] & 0x80) // { if(Rx_bunbaegi_buffer[23] & 0x01){Diffuser_Power[2] = 1;}else{Diffuser_Power[2] = 0;} if(Rx_bunbaegi_buffer[23] & 0x02){Diffuser_Power[3] = 1;}else{Diffuser_Power[3] = 0;} if(Rx_bunbaegi_buffer[23] & 0x04){Diffuser_Power[4] = 1;}else{Diffuser_Power[4] = 0;} if(Rx_bunbaegi_buffer[23] & 0x08){Diffuser_Power[5] = 1;}else{Diffuser_Power[5] = 0;} // } } else if(id == 0) //wrong id { } else // id 2,3,4,5 room 1 ~3 { if(Rx_bunbaegi_buffer[5] & 0x80) { Diffuser_Power[id] = Rx_bunbaegi_buffer[5] & 0x7f; } if(Rx_bunbaegi_buffer[6] & 0x80) { Diffuser_Run_Mode[id] = Rx_bunbaegi_buffer[6] & 0x7f; } if(Rx_bunbaegi_buffer[7] & 0x80) { Diffuser_Fan_Speed[id] = Rx_bunbaegi_buffer[7] & 0x7f; } } } else { ; } } void SC1_IRQHandler(void) { uint8_t data; data = SCUART_READ(SC1); rx_bunbaegi_check(data); Rx_roomcon_TimeOut = 50; return; } void InCom_process(void) { if(Rx_bunbaegi_complete == 1) { Rx_bunbaegi_complete = 0; if(Packet_Type == 0x01)//Diffuser { Diffuser_parsing(); //Display_Com_Err_Count = 0; //Err_Code &= ~ERROR_COM_DISPLAY; } else if(Packet_Type == 0x02)//RoomCon { EachRoomCon_parsing(); //Sensor_Com_Err_Count = 0; //Err_Code &= ~ERROR_COM_SENSOR; } } else if(InCom_polling_timer == 0) { InCom_polling_timer = 100; Bunbaegi_Polling(); /*if(Sensor_Com_Err_Count++ >= 20) { Sensor_Com_Err_Count = 20; Err_Code |= ERROR_COM_SENSOR; }*/ } } uint8_t Debug_TxBuff[250]; uint8_t Debug_Tx_Cycle = 0; uint16_t m_CO2_Level_1 = 600; uint16_t m_CO2_Level_2 = 700; uint16_t m_CO2_Level_3 = 800; uint16_t m_CO2_Level_4 = 900; uint16_t m_VOC_Level_1 = 250; uint16_t m_VOC_Level_2 = 300; uint16_t m_VOC_Level_3 = 350; uint16_t m_VOC_Level_4 = 400; uint16_t m_PM2_5_Level_1 = 15; uint16_t m_PM2_5_Level_2 = 30; uint16_t m_PM2_5_Level_3 = 50; uint16_t m_PM2_5_Level_4 = 70; uint8_t Ext_Run_Mode = 0; uint8_t Ext_Select_Room = 0, Pre_Ext_Select_Room = 0; uint8_t Tx_485_buff[100]; uint32_t Damper_Status_Display = 0; uint8_t Force_Damper_Mode = 0; uint8_t Force_Damper_run = 0; extern uint16_t Target_Step_Count[7];