V1.1 For EVIC
Dependencies: SDFileSystem max32630fthr USBDevice
Revision 3:35b05d91568d, committed 2020-06-22
- Comitter:
- china_sn0w
- Date:
- Mon Jun 22 05:27:48 2020 +0000
- Parent:
- 2:3a8f285d261a
- Commit message:
- 1.2Alpha;
Changed in this revision
--- a/CmdHandler.cpp Thu May 28 02:32:15 2020 +0000 +++ b/CmdHandler.cpp Mon Jun 22 05:27:48 2020 +0000 @@ -33,6 +33,9 @@ extern uint16_t histogram_pos_num; extern uint16_t histogram_per_pos; +extern uint16_t range_step_num; +extern uint16_t range_per_step; + void CmdHandleTask(void) { uint8_t ret; @@ -161,7 +164,7 @@ case VAN_SINGLE_MEAS:// 单次测量 if(HandleOneTimeMeasure() == 0) - UART_CmdAckSend(READ_CMD | 0x80, VAN_SINGLE_MEAS, _uart_send_pbuff, 4); + UART_CmdAckSend(READ_CMD | 0x80, VAN_SINGLE_MEAS, _uart_send_pbuff, 10); else UART_CmdAckSend(READ_CMD | 0x10, VAN_SINGLE_MEAS, _uart_send_pbuff, 2); break; @@ -211,6 +214,13 @@ histogram_pos_num = pd[6] + pd[7]*256; histogram_per_pos = pd[8] + pd[9]*256; } + else if(pd[5] == 0xF2) + { + histogram_mode = 5; + range_step_num = pd[6] + pd[7]*256; + range_per_step = 0; + //histogram_per_pos = pd[8] + pd[9]*256; + } break; case VAN_MOVING_CTL_CMD: @@ -257,6 +267,50 @@ else UART_CmdAckSend(READ_CMD | 0x10, VAN_GET_TDC_PHASE_CMD, _uart_send_pbuff, 2); break; + + case VAN_SET_WINDOW_CMD: + if(SetWindow(pd) == 0) + UART_CmdAckSend(WRITE_CMD | 0x80, VAN_SET_WINDOW_CMD, _uart_send_pbuff, 2); + else + UART_CmdAckSend(WRITE_CMD | 0x10, VAN_SET_WINDOW_CMD, _uart_send_pbuff, 2); + break; + + case VAN_RCO_TRIM_CMD: + if(RCO_Trim(_uart_send_pbuff) == 0) + { + _uart_send_pbuff[1] = _uart_send_pbuff[0]; + _uart_send_pbuff[0] = 0; + UART_CmdAckSend(READ_CMD | 0x80, VAN_RCO_TRIM_CMD, _uart_send_pbuff, 2); + } + else + { + _uart_send_pbuff[1] = _uart_send_pbuff[0]; + _uart_send_pbuff[0] = 1; + UART_CmdAckSend(READ_CMD | 0x10, VAN_RCO_TRIM_CMD, _uart_send_pbuff, 2); + } + break; + + case VAN_BVD_TRIM_CMD: + if(BVD_Trim(_uart_send_pbuff) == 0) + { + _uart_send_pbuff[1] = _uart_send_pbuff[0]; + _uart_send_pbuff[0] = 0; + UART_CmdAckSend(READ_CMD | 0x80, VAN_BVD_TRIM_CMD, _uart_send_pbuff, 2); + } + else + { + _uart_send_pbuff[1] = _uart_send_pbuff[0]; + _uart_send_pbuff[0] = 0; + UART_CmdAckSend(READ_CMD | 0x10, VAN_BVD_TRIM_CMD, _uart_send_pbuff, 2); + } + break; + + case VAN_PIXEL_EN_CMD: + if(Pixel_Enable(_uart_send_pbuff) == 0) + UART_CmdAckSend(READ_CMD | 0x80, VAN_PIXEL_EN_CMD, _uart_send_pbuff, 2); + else + UART_CmdAckSend(READ_CMD | 0x10, VAN_PIXEL_EN_CMD, _uart_send_pbuff, 2); + break; default: @@ -297,7 +351,7 @@ uint8_t HandleOneTimeMeasure(void) { - return OneTimeMeasure((uint16_t*)_uart_send_pbuff, (uint16_t*)(_uart_send_pbuff + 2)); + return OneTimeMeasure((uint16_t*)_uart_send_pbuff, (uint16_t*)(_uart_send_pbuff + 2), (uint32_t*)(_uart_send_pbuff + 4), (uint16_t*)(_uart_send_pbuff + 8)); } uint8_t HandleContinuousMeasure(uint8_t *pd) @@ -359,12 +413,16 @@ return ret; } -uint8_t HandleContinuousMeasureReport(uint16_t lsb, uint16_t milimeter) +uint8_t HandleContinuousMeasureReport(uint16_t lsb, uint16_t milimeter, uint32_t peak, uint16_t noise_level) { memcpy(_uart_send_pbuff, &lsb, 2); memcpy(_uart_send_pbuff + 2, &milimeter, 2); + + memcpy(_uart_send_pbuff + 4, &peak, 4); + memcpy(_uart_send_pbuff + 8, &noise_level, 2); + - UART_CmdAckSend(READ_CMD | 0x80, VAN_CONTIU_MEAS, _uart_send_pbuff, 4); + UART_CmdAckSend(READ_CMD | 0x80, VAN_CONTIU_MEAS, _uart_send_pbuff, 10); return 0; }
--- a/CmdHandler.h Thu May 28 02:32:15 2020 +0000 +++ b/CmdHandler.h Mon Jun 22 05:27:48 2020 +0000 @@ -74,6 +74,11 @@ #define VAN_DCR_TEST_CMD 0x5C #define VAN_DELAYLINE_TEST_CMD 0x5D #define VAN_GET_TDC_PHASE_CMD 0x5E +#define VAN_SET_WINDOW_CMD 0x5F + +#define VAN_RCO_TRIM_CMD 0x60 +#define VAN_BVD_TRIM_CMD 0x61 +#define VAN_PIXEL_EN_CMD 0x62 @@ -89,7 +94,7 @@ uint8_t HandleContinuousMeasure(uint8_t *pd); uint8_t HandleReadHistogram(uint8_t tdc_idx); uint8_t HandleDownloadFW(uint8_t *pd, uint16_t cmdLen); -uint8_t HandleContinuousMeasureReport(uint16_t lsb, uint16_t milimeter); +uint8_t HandleContinuousMeasureReport(uint16_t lsb, uint16_t milimeter, uint32_t peak, uint16_t noise_level); uint8_t HandleSwitch(uint8_t *pd, uint16_t cmdLen); void HandleChipReset(void);
--- a/DUT_RegConfig.cpp Thu May 28 02:32:15 2020 +0000 +++ b/DUT_RegConfig.cpp Mon Jun 22 05:27:48 2020 +0000 @@ -23,10 +23,14 @@ Semaphore chip_int_semph(1); extern DigitalOut xSHUT; extern I2C i2c_v; +extern DigitalOut TRIM_EN; uint16_t histogram_pos_num = 0; uint16_t histogram_per_pos = 0; +uint16_t range_step_num = 0; +uint16_t range_per_step = 0; + extern const uint8_t reg_table[]; extern const uint8_t Firmware_Ranging[]; extern uint8_t _uart_send_pbuff[CMD_BUF_LEN] ; @@ -36,24 +40,42 @@ xSHUT = 0; wait_ms(30); xSHUT = 1; + wait_ms(30); } -void DUT_RegInit(void) +void SetBitThree(uint8_t rco, uint8_t tdc, uint8_t dcr) +{ + WriteOneReg(0x37, rco); + WriteOneReg(0xE4, tdc); + WriteOneReg(0xC0, dcr); +} + +void DUT_RegInit(uint8_t rco, uint8_t tdc, uint8_t dcr) { LoadRegTable(); - for(uint16_t i = 0; i < 256; i++) { - //WriteOneReg(dut_reg[i].addr, dut_reg[i].value); - dut_reg[i].addr = i; - dut_reg[i].value = 0x00; + for(uint16_t i = 0; i < 256; i++) + { + WriteOneReg(dut_reg[i].addr, dut_reg[i].value); } + + SetBitThree(rco, tdc, dcr); } - void DUT_FirmwareInit(void) { WriteFW(LoadFirmware()); } +void DeviceAllInit(uint8_t rco, uint8_t tdc, uint8_t dcr) +{ + ChipInitReset(); + wait_ms(100); + DUT_RegInit(rco, tdc, dcr); + wait_ms(100); + DUT_FirmwareInit(); + wait_ms(100); +} + void Enable_DUT_Interrupt(void) { int_enable = 1; @@ -77,19 +99,23 @@ } } + + void HistogramReport() { uint8_t ret = 0; - uint16_t lsb, mili; + uint16_t lsb, mili, noise_level; + uint32_t peak; uint16_t histogram_pos = 0; uint16_t histogram_num = 0; + uint16_t range_step = 0; while(1) { if(histogram_mode == 1) { //ReadOneReg(REG_SYS_CFG, &sys_cfg_save); //WriteOneReg(REG_SYS_CFG, 0x00); - ret = OneTimeMeasure(&lsb, &mili); + ret = OneTimeMeasure(&lsb, &mili, &peak, &noise_level); if(ret != 0) { histogram_mode = 0; } else { @@ -104,7 +130,7 @@ } else if(histogram_mode == 2) { //ReadOneReg(REG_SYS_CFG, &sys_cfg_save); //WriteOneReg(REG_SYS_CFG, 0x00); - ret = OneTimeMeasure(&lsb, &mili); + ret = OneTimeMeasure(&lsb, &mili, &peak, &noise_level); if(ret != 0) { histogram_mode = 0; } else { @@ -134,7 +160,7 @@ } //ReadOneReg(REG_SYS_CFG, &sys_cfg_save); //WriteOneReg(REG_SYS_CFG, 0x00); - ret = OneTimeMeasure(&lsb, &mili); + ret = OneTimeMeasure(&lsb, &mili, &peak, &noise_level); if(ret != 0) { histogram_mode = 0; } else { @@ -154,7 +180,7 @@ } else if(histogram_mode == 4) { //ReadOneReg(REG_SYS_CFG, &sys_cfg_save); //WriteOneReg(REG_SYS_CFG, 0x00); - ret = OneTimeMeasure(&lsb, &mili); + ret = OneTimeMeasure(&lsb, &mili, &peak, &noise_level); if(ret != 0) { histogram_mode = 0; } else { @@ -170,9 +196,43 @@ } } //WriteOneReg(REG_SYS_CFG, sys_cfg_save); - }else { + } else if(histogram_mode == 5) { + + if(range_per_step == 0) { + range_step++; + if(range_step >= range_step_num) { + histogram_mode = 0; + } + ServoRun(1, 10); + while(CheckUntil()) wait_ms(100); + + range_per_step = 0; + ret = ContinuousMeasure(); + if(ret != 0) { + histogram_mode = 0; + } else { + while(range_per_step<256 && histogram_mode == 5) { + wait_ms(100); + } + StoreHistogram(range_step, 0, 0); + wait_ms(5); + StoreHistogram(range_step, 0, 1); + wait_ms(5); + StoreHistogram(range_step, 0, 2); + wait_ms(5); + StoreHistogram(range_step, 0, 3); + wait_ms(5); + range_per_step = 0; + + } + } + + + + } else { histogram_num = 0; histogram_pos = 0; + range_step = 0; histogram_pos_num = 0; histogram_per_pos = 0; } @@ -180,18 +240,51 @@ } } +void StoreMeasureData(uint16_t lsb, uint16_t milimeter, uint32_t peak, uint16_t noise_level, uint16_t i) +{ + histogram[0][4*i] = 0; + histogram[0][4*i+1] = 0; + histogram[0][4*i+2] = lsb >> 8; + histogram[0][4*i+3] = lsb ; + + histogram[1][4*i] = 0; + histogram[1][4*i+1] = 0; + histogram[1][4*i+2] = milimeter >> 8; + histogram[1][4*i+3] = milimeter ; + + histogram[2][4*i] = peak >> 24; + histogram[2][4*i+1] = peak >> 16; + histogram[2][4*i+2] = peak >> 8; + histogram[2][4*i+3] = peak ; + + histogram[3][4*i] = 0; + histogram[3][4*i+1] = 0; + histogram[3][4*i+2] = noise_level >> 8; + histogram[3][4*i+3] = noise_level ; + +} + void ContinuousMeasureReport() { - uint16_t lsb, milimeter; + uint16_t lsb, milimeter, noise_level; + uint32_t peak; uint8_t int_flag = 0; uint16_t time_out = 0; while(1) { chip_int_semph.wait(); - - if(RaadContinuousMeasure(&lsb, &milimeter) == 0) { - HandleContinuousMeasureReport(lsb, milimeter); + if(histogram_mode == 5) { + if(RaadContinuousMeasure(&lsb, &milimeter, &peak, &noise_level) == 0) { + StoreMeasureData(lsb, milimeter, peak, noise_level, range_per_step++); + if(range_per_step == 256) { + StopContinuousMeasure(); + } + } + } else { + if(RaadContinuousMeasure(&lsb, &milimeter, &peak, &noise_level) == 0) { + HandleContinuousMeasureReport(lsb, milimeter, peak, noise_level); + } } } @@ -290,6 +383,7 @@ ret = ReadOneReg (REG_PW_CTRL, ®_pw_ctrl); ret = WriteOneReg(REG_PW_CTRL, reg_pw_ctrl | (0x01<<3)); //set otp_ld_done ret = WriteOneReg(REG_PW_CTRL, reg_pw_ctrl | (0x01<<3) | (0x01<<1)); //set otp_ld_done, pw_ctrl_lp + ret = WriteOneReg(REG_MCU_CFG, 0x01); ret = WriteOneReg(REG_CMD, 0x01); ret = WriteOneReg(REG_SIZE, 0x02); ret = WriteOneReg(REG_SCRATCH_PAD_BASE+0x00, *((uint8_t*)(&ram_addr_base) )); @@ -303,19 +397,21 @@ ret = ReadOneReg(0x0c+i, &histogram[tdc_index][32*j + i]); } } + ret = WriteOneReg(REG_MCU_CFG, 0x03); ret = WriteOneReg(REG_SYS_CFG, reg_sys_cfg & ~(0x01<<0)); //clear sc_en ret = WriteOneReg(REG_PW_CTRL, reg_pw_ctrl | (0x01<<1)); //restore power control register - ret = WriteOneReg(REG_PW_CTRL, reg_pw_ctrl & ~(0x01<<1)); //clear pw_ctrl_lp + ret = WriteOneReg(REG_PW_CTRL, reg_pw_ctrl); //clear pw_ctrl_lp return ret; } -uint8_t OneTimeMeasure(uint16_t *lsb, uint16_t *milimeter) +uint8_t OneTimeMeasure(uint16_t *lsb, uint16_t *milimeter, uint32_t *peak, uint16_t *noise_level) { uint8_t ret = 0; uint8_t reg_pw_ctrl; uint8_t reg_sys_cfg; uint32_t timeout = 0; + uint8_t flag = 0; int_mark = 1;//One Time Measure @@ -324,6 +420,7 @@ //ret = ReadOneReg (REG_PW_CTRL, ®_pw_ctrl); //ret = WriteOneReg(REG_PW_CTRL, reg_pw_ctrl | (0x01<<3)); //set otp_ld_done //ret = WriteOneReg(REG_PW_CTRL, (reg_pw_ctrl | (0x01<<3)) & ~(0x01<<1)); //set otp_ld_done, clear pw_ctrl_lp + //ret = WriteOneReg(0x08, 0x00); ret = WriteOneReg(REG_CMD, 0x0E); //ret = WriteOneReg(REG_SIZE, 0x00); @@ -331,6 +428,11 @@ while(int_mark == 1 && timeout != 0) { timeout--; wait_ms(5); + //ReadOneReg(0x08, &flag); + // if(flag == 0xFF) + //{ + // int_mark = 0; + // } } if(timeout == 0) { @@ -344,6 +446,14 @@ ret = ReadOneReg(0x18, (uint8_t*)milimeter); ret = ReadOneReg(0x19, (uint8_t*)milimeter + 1); + ret = ReadOneReg(0x26, (uint8_t*)noise_level); + ret = ReadOneReg(0x27, (uint8_t*)noise_level + 1); + + ret = ReadOneReg(0x28, (uint8_t*)peak ); + ret = ReadOneReg(0x29, (uint8_t*)peak + 1); + ret = ReadOneReg(0x2a, (uint8_t*)peak + 2); + ret = ReadOneReg(0x2b, (uint8_t*)peak + 3); + } //ret = WriteOneReg(REG_SYS_CFG, reg_sys_cfg & ~(0x01<<0)); //clear sc_en @@ -374,7 +484,7 @@ return ret; } -uint8_t RaadContinuousMeasure(uint16_t *lsb, uint16_t *milimeter) +uint8_t RaadContinuousMeasure(uint16_t *lsb, uint16_t *milimeter, uint32_t *peak, uint16_t *noise_level) { uint8_t ret = 0; uint8_t reg_pw_ctrl; @@ -394,6 +504,14 @@ ret = ReadOneReg(0x18, (uint8_t*)milimeter); ret = ReadOneReg(0x19, (uint8_t*)milimeter + 1); + ret = ReadOneReg(0x26, (uint8_t*)noise_level); + ret = ReadOneReg(0x27, (uint8_t*)noise_level + 1); + + ret = ReadOneReg(0x28, (uint8_t*)peak ); + ret = ReadOneReg(0x29, (uint8_t*)peak + 1); + ret = ReadOneReg(0x2a, (uint8_t*)peak + 2); + ret = ReadOneReg(0x2b, (uint8_t*)peak + 3); + //ret = WriteOneReg(REG_SYS_CFG, reg_sys_cfg & ~(0x01<<0)); //clear sc_en return ret; @@ -460,10 +578,11 @@ uint8_t ret = 0; uint32_t timeout = 0; memset(dcr_matrix, 0x00, 17*9*2); - WriteOneReg(0x50, 0x01); - WriteOneReg(0xBD, 0x01); - wait_ms(100); - WriteOneReg(0xD8, 0xF0); + //WriteOneReg(0x50, 0x01); + //WriteOneReg(0xBD, 0x01); + //wait_ms(100); + //WriteOneReg(0xD8, 0xF0); + WriteOneReg(0xC0, vspad); for(uint8_t group = 0; group < 9; group++) { WriteOneReg(0x0C, group); @@ -495,7 +614,7 @@ uint8_t DelayLineTest(uint8_t phase, uint8_t* buf) { uint8_t ret = 0; - uint32_t timeout = 0; + uint32_t timeout = 0; WriteOneReg(0xE4, phase); wait_ms(10); @@ -511,12 +630,12 @@ while(int_mark == 1 && timeout != 0) { timeout--; wait_ms(100); - } + } for(uint8_t tdc = 0; tdc < 9; tdc++) { ret = ReadOneReg(0x0c + tdc*2, buf + step*18 + tdc*2 + 1); wait_ms(1); - ret = ReadOneReg(0x0c + tdc*2 + 1, buf + step*18 + tdc*2); - wait_ms(1); + ret = ReadOneReg(0x0c + tdc*2 + 1, buf + step*18 + tdc*2); + wait_ms(1); } } @@ -552,4 +671,198 @@ return 0; } +uint8_t SetWindow(uint8_t* pd) +{ + uint8_t ret = 0; + uint8_t buf[14]; + + memset(buf, 0x00, 14); + + buf[0] |= (pd[5]&0xF); + buf[0] |= ((pd[6] << 4)&0xF0); + + buf[1] |= (pd[7]&0xF); + buf[1] |= ((pd[8] << 4)&0xF0); + + buf[2] |= (pd[9]&0xF); + buf[2] |= ((pd[10] << 4)&0xF0); + + buf[3] |= (pd[11]&0xF); + buf[3] |= ((pd[12] << 4)&0xF0); + + buf[4] |= (pd[13]&0xF); + buf[4] |= ((pd[14] << 4)&0xF0); + + buf[5] |= (pd[15]&0xF); + buf[5] |= ((pd[16] << 4)&0xF0); + + buf[6] |= (pd[17]&0xF); + buf[6] |= ((pd[18] << 4)&0xF0); + + buf[7] |= (pd[19]&0xF); + buf[7] |= ((pd[20] << 4)&0xF0); + + buf[8] = 0x00;// Fisrt 16LSB cut off + buf[9] = 0xFF; + + buf[10] = 0x01;// Ref PAD switch + + buf[11] = 0x1F;// TDC Resolution 1F = 31 + + buf[12] = 0x0C;// Length + buf[13] = 0x09;//CMD + + for(uint8_t i = 0; i < 12; i++) + { + WriteOneReg(0x0C + i, buf[i]); + } + + WriteOneReg(0x0B, 0x0C); + WriteOneReg(0x0A, 0x09); + + return 0; +} +uint8_t RCO_Trim(uint8_t *rco) +{ + uint8_t ret = 0; + uint8_t value = 0, result = 0; + + TRIM_EN = 1; + + //==================First BAND=====================// + ChipInitReset(); + ret = WriteOneReg(0xED , 0x03); + ret = WriteOneReg(0xEC , 0x36); + ret = WriteOneReg(0x3D , 0xC0); + ret = WriteOneReg(0xE8 , 0x00); + ret = WriteOneReg(0xEA , 0x3F); + ret = WriteOneReg(0x3D , 0xC8); + ret = WriteOneReg(0xED , 0x83); + + wait_ms(1000); + + ret = ReadOneReg(0xFA, &value); + ret = ReadOneReg(0xFB, &result); + + if((result&0xC0) == 0xC0) + { + *rco = value; + ChipInitReset(); + TRIM_EN = 0; + return 0; + } + + //==================Second BAND=====================// + ChipInitReset(); + ret = WriteOneReg(0xED , 0x03); + ret = WriteOneReg(0xEC , 0x36); + ret = WriteOneReg(0x3D , 0xC0); + ret = WriteOneReg(0xE8 , 0x00); + ret = WriteOneReg(0xEA , 0x7F); + ret = WriteOneReg(0xEB , 0x40); + ret = WriteOneReg(0x3D , 0xC8); + ret = WriteOneReg(0xED , 0x83); + + wait_ms(1000); + + ret = ReadOneReg(0xFA, &value); + ret = ReadOneReg(0xFB, &result); + + if((result&0xC0) == 0xC0) + { + *rco = value; + ChipInitReset(); + TRIM_EN = 0; + return 0; + } + + //==================Third BAND=====================// + ChipInitReset(); + ret = WriteOneReg(0xED , 0x03); + ret = WriteOneReg(0xEC , 0x36); + ret = WriteOneReg(0x3D , 0xC0); + ret = WriteOneReg(0xE8 , 0x00); + ret = WriteOneReg(0xEA , 0xBF); + ret = WriteOneReg(0xEB , 0x80); + ret = WriteOneReg(0x3D , 0xC8); + ret = WriteOneReg(0xED , 0x83); + + wait_ms(1000); + + ret = ReadOneReg(0xFA, &value); + ret = ReadOneReg(0xFB, &result); + + if((result&0xC0) == 0xC0) + { + *rco = value; + ChipInitReset(); + TRIM_EN = 0; + return 0; + } + + //==================Fourth BAND=====================// + ChipInitReset(); + ret = WriteOneReg(0xED , 0x03); + ret = WriteOneReg(0xEC , 0x36); + ret = WriteOneReg(0x3D , 0xC0); + ret = WriteOneReg(0xE8 , 0x00); + ret = WriteOneReg(0xEA , 0xFF); + ret = WriteOneReg(0xEB , 0xC0); + ret = WriteOneReg(0x3D , 0xC8); + ret = WriteOneReg(0xED , 0x83); + + wait_ms(1000); + + ret = ReadOneReg(0xFA, &value); + ret = ReadOneReg(0xFB, &result); + + if((result&0xC0) == 0xC0) + { + *rco = value; + ChipInitReset(); + TRIM_EN = 0; + return 0; + } + + ChipInitReset(); + TRIM_EN = 0; + return 1; +} + +uint8_t BVD_Trim(uint8_t *bvd) +{ + uint8_t ret = 0; + uint32_t timeout = 0; + + WriteOneReg(0xC0, 0x00); + wait_ms(1); + + timeout = 600; + int_mark = 1; + WriteOneReg(0x0A, 0x08); + while(int_mark == 1 && timeout != 0) { + timeout--; + wait_ms(100); + } + //osDelay(80); + + ret = ReadOneReg(0xC0, bvd); + + if(timeout == 0) + return 1; + + return 0; +} + +uint8_t Pixel_Enable(uint8_t *buf) +{ + for(uint8_t i = 0; i < 18; i++) + { + WriteOneReg(0xC2 + i, buf[i]); + } + + return 0; +} + +
--- a/DUT_RegConfig.h Thu May 28 02:32:15 2020 +0000 +++ b/DUT_RegConfig.h Mon Jun 22 05:27:48 2020 +0000 @@ -28,9 +28,11 @@ uint8_t value; }DUTREG; +void DeviceAllInit(uint8_t rco, uint8_t tdc, uint8_t dcr); + void DUT_FirmwareInit(void); void ChipInitReset(void); -void DUT_RegInit(void); +void DUT_RegInit(uint8_t rco, uint8_t tdc, uint8_t dcr); void Enable_DUT_Interrupt(void); void Disable_DUT_Interrupt(void); void InterruptHandle(void); @@ -43,14 +45,17 @@ uint8_t ReadAllRegToTable(void); uint8_t WriteFW(uint16_t size); uint8_t vangogh_ram_rd(uint8_t tdc); -uint8_t OneTimeMeasure(uint16_t *lsb, uint16_t *milimeter); +uint8_t OneTimeMeasure(uint16_t *lsb, uint16_t *milimeter, uint32_t *peak, uint16_t *noise_level); uint8_t ContinuousMeasure(void); -uint8_t RaadContinuousMeasure(uint16_t *lsb, uint16_t *milimeter); +uint8_t RaadContinuousMeasure(uint16_t *lsb, uint16_t *milimeter, uint32_t *peak, uint16_t *noise_level); uint8_t StopContinuousMeasure(void); uint8_t DCRTest(uint8_t vspad, uint8_t test_time); uint8_t DelayLineTest(uint8_t phase, uint8_t* buf); uint8_t GetTdcPhase(uint8_t* buf); - +uint8_t SetWindow(uint8_t* pd); +uint8_t RCO_Trim(uint8_t *rco); +uint8_t BVD_Trim(uint8_t *bvd); +uint8_t Pixel_Enable(uint8_t *buf); void StoreHistogram(uint16_t histogram_pos, uint16_t histogram_num, uint8_t tdc);
--- a/Firmware.cpp Thu May 28 02:32:15 2020 +0000 +++ b/Firmware.cpp Mon Jun 22 05:27:48 2020 +0000 @@ -6,206 +6,304 @@ const uint8_t Firmware_Ranging[] = { - 0x02,0x00,0x06,0x02,0x0b,0xb3,0x78,0x3f,0xe4,0xf6,0xd8,0xfd,0x75,0x81,0xbf,0x02, - 0x00,0x66,0x00,0x02,0x09,0xd5,0xe4,0xfd,0xfc,0xc3,0xed,0x9f,0xec,0x9e,0x50,0x18, - 0xe4,0xfb,0xfa,0x00,0x00,0x00,0x0b,0xbb,0x00,0x01,0x0a,0xba,0x05,0xf5,0xbb,0xd1, - 0xf2,0x0d,0xbd,0x00,0x01,0x0c,0x80,0xe1,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x02,0x0b,0x58,0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x06,0x00,0x00, - 0x00,0x00,0x00,0x02,0x09,0x19,0x00,0x00,0x00,0x00,0x00,0x02,0x05,0x10,0x00,0x00, - 0x00,0x00,0x00,0x02,0x0a,0x73,0x75,0x2a,0x40,0x75,0xff,0x01,0x7d,0x0c,0x7c,0x00, - 0x7f,0x07,0x12,0x0c,0x5e,0xe4,0xf5,0x26,0xe5,0x26,0x24,0x0c,0xff,0xe5,0x26,0x24, - 0x01,0xfd,0xe4,0x33,0xfc,0x12,0x0c,0x5e,0x05,0x26,0xe5,0x26,0xc3,0x94,0x20,0x40, - 0xe7,0xe4,0x78,0x2f,0xf6,0x08,0x76,0x01,0xfb,0x12,0x0c,0x3f,0x75,0x88,0x05,0x75, - 0xe8,0x1e,0x75,0xa8,0x86,0x78,0x31,0xe6,0x64,0x09,0x60,0x03,0x02,0x01,0x73,0xf6, - 0xfb,0x7a,0x00,0x79,0x28,0x7f,0x0c,0x12,0x0c,0x45,0x7d,0x05,0x7c,0x00,0x7f,0xa4, - 0x12,0x0c,0x5e,0x7d,0x01,0x7f,0x50,0x12,0x0c,0x23,0xe5,0x28,0xb4,0x0f,0x00,0x40, - 0x03,0x02,0x01,0x63,0x90,0x00,0xdb,0xf8,0x28,0x28,0x73,0x02,0x01,0x08,0x02,0x01, - 0x0c,0x02,0x01,0x12,0x02,0x01,0x18,0x02,0x01,0x1e,0x02,0x01,0x24,0x02,0x01,0x2a, - 0x02,0x01,0x30,0x02,0x01,0x36,0x02,0x01,0x3c,0x02,0x01,0x45,0x02,0x01,0x4b,0x02, - 0x01,0x51,0x02,0x01,0x57,0x02,0x01,0x5d,0x7f,0x7d,0x80,0x02,0x7f,0xfa,0x7e,0x00, - 0x80,0x2e,0x7f,0xf4,0x7e,0x01,0x80,0x28,0x7f,0xe8,0x7e,0x03,0x80,0x22,0x7f,0xd0, - 0x7e,0x07,0x80,0x1c,0x7f,0xa0,0x7e,0x0f,0x80,0x16,0x7f,0x40,0x7e,0x1f,0x80,0x10, - 0x7f,0x80,0x7e,0x3e,0x80,0x0a,0x7f,0x00,0x7e,0x7d,0x80,0x04,0x7f,0x00,0x7e,0xfa, - 0x12,0x0c,0x2a,0x80,0x25,0x7f,0x80,0x7e,0x00,0x80,0x1c,0x7f,0x00,0x7e,0x01,0x80, - 0x16,0x7f,0x00,0x7e,0x02,0x80,0x10,0x7f,0x00,0x7e,0x04,0x80,0x0a,0x7f,0x00,0x7e, - 0x08,0x80,0x04,0x7f,0x00,0x7e,0x02,0x12,0x00,0x16,0x7d,0x04,0x7c,0x00,0x7f,0xa4, - 0x02,0x04,0xe6,0x78,0x31,0xe6,0x64,0x0a,0x60,0x03,0x02,0x02,0x59,0xf6,0xfb,0x7a, - 0x00,0x79,0x29,0x7f,0xe4,0x12,0x0c,0x45,0x53,0x29,0xc0,0x78,0x2c,0xe6,0xb4,0x10, - 0x00,0x40,0x03,0x02,0x02,0x33,0x90,0x01,0x9d,0xf8,0x28,0x28,0x73,0x02,0x01,0xcd, - 0x02,0x01,0xd3,0x02,0x01,0xd9,0x02,0x01,0xdf,0x02,0x01,0xe5,0x02,0x01,0xeb,0x02, - 0x01,0xf1,0x02,0x01,0xf7,0x02,0x01,0xfd,0x02,0x02,0x03,0x02,0x02,0x09,0x02,0x02, - 0x0f,0x02,0x02,0x15,0x02,0x02,0x1b,0x02,0x02,0x21,0x02,0x02,0x27,0xe5,0x29,0x54, - 0x01,0x80,0x58,0xe5,0x29,0x54,0x02,0x80,0x52,0xe5,0x29,0x54,0x04,0x80,0x4c,0xe5, - 0x29,0x54,0x08,0x80,0x46,0xe5,0x29,0x54,0x11,0x80,0x40,0xe5,0x29,0x54,0x12,0x80, - 0x3a,0xe5,0x29,0x54,0x14,0x80,0x34,0xe5,0x29,0x54,0x18,0x80,0x2e,0xe5,0x29,0x54, - 0x21,0x80,0x28,0xe5,0x29,0x54,0x22,0x80,0x22,0xe5,0x29,0x54,0x24,0x80,0x1c,0xe5, - 0x29,0x54,0x28,0x80,0x16,0xe5,0x29,0x54,0x31,0x80,0x10,0xe5,0x29,0x54,0x32,0x80, - 0x0a,0xe5,0x29,0x54,0x34,0x80,0x04,0xe5,0x29,0x54,0x38,0xfd,0x7c,0x00,0x7f,0xe4, - 0x12,0x0c,0x5e,0x78,0x2c,0x06,0x7d,0x01,0x7c,0x00,0x7f,0xbd,0x12,0x0c,0x5e,0x7f, - 0x50,0x12,0x0c,0x5e,0x7d,0x10,0x7f,0x45,0x12,0x0c,0x5e,0xe4,0xfd,0x12,0x0c,0x22, - 0x7d,0x07,0x7c,0x00,0x7f,0x50,0x02,0x04,0xe6,0x78,0x31,0xe6,0xfb,0x64,0x0b,0x70, - 0x26,0xf6,0x78,0x2d,0x76,0x01,0x7d,0x01,0xfc,0x7f,0xbd,0x12,0x0c,0x5e,0x7f,0x50, - 0x12,0x0c,0x5e,0x7d,0x40,0x7f,0x45,0x12,0x0c,0x5e,0xfd,0x12,0x0c,0x22,0x7d,0xc7, - 0x7c,0x00,0x7f,0x50,0x02,0x04,0xe6,0xeb,0x64,0x0c,0x60,0x03,0x02,0x04,0xa3,0x78, - 0x31,0xf6,0xf5,0x26,0xe5,0x26,0x24,0xc2,0xff,0xe4,0xfd,0xfc,0x12,0x0c,0x5e,0x05, - 0x26,0xe5,0x26,0xc3,0x94,0x12,0x40,0xec,0xe4,0xfd,0xfc,0x7f,0xd9,0x12,0x0c,0x5e, - 0x7d,0xc0,0x0f,0x12,0x0c,0x5e,0xfb,0x7a,0x00,0x79,0x27,0x7f,0x0c,0x12,0x0c,0x45, - 0x7a,0x00,0x09,0x7f,0x0d,0x12,0x0c,0x45,0x7d,0x01,0x7f,0x50,0x12,0x0c,0x23,0x7d, - 0x11,0x7c,0x00,0x7f,0x50,0x12,0x0c,0x5e,0xe5,0x27,0xb4,0x09,0x00,0x40,0x03,0x02, - 0x03,0x76,0x90,0x02,0xe9,0xf8,0x28,0x28,0x73,0x02,0x03,0x04,0x02,0x03,0x0d,0x02, - 0x03,0x16,0x02,0x03,0x23,0x02,0x03,0x30,0x02,0x03,0x3d,0x02,0x03,0x4a,0x02,0x03, - 0x57,0x02,0x03,0x66,0x7f,0xc2,0x12,0x0c,0x56,0x7d,0x01,0x80,0x55,0x7f,0xc4,0x12, - 0x0c,0x56,0x7d,0x02,0x80,0x4c,0x7d,0xff,0x7c,0x00,0x7f,0xc6,0x12,0x0c,0x5a,0x7d, - 0x04,0x80,0x3f,0x7d,0xff,0x7c,0x00,0x7f,0xc8,0x12,0x0c,0x5a,0x7d,0x08,0x80,0x32, - 0x7d,0xff,0x7c,0x00,0x7f,0xca,0x12,0x0c,0x5a,0x7d,0x10,0x80,0x25,0x7d,0xff,0x7c, - 0x00,0x7f,0xcc,0x12,0x0c,0x5a,0x7d,0x20,0x80,0x18,0x7d,0xff,0x7c,0x00,0x7f,0xce, - 0x12,0x0c,0x5a,0x7d,0x40,0x80,0x0b,0x7d,0xff,0x7c,0x00,0x7f,0xd0,0x12,0x0c,0x5a, - 0x7d,0x80,0x7f,0xd9,0x80,0x0d,0x7d,0xff,0x7c,0x00,0x7f,0xd2,0x12,0x0c,0x5a,0x7d, - 0xc1,0x7f,0xda,0x12,0x0c,0x5e,0xe5,0x28,0xb4,0x0f,0x00,0x40,0x03,0x02,0x04,0x0f, - 0x90,0x03,0x87,0xf8,0x28,0x28,0x73,0x02,0x03,0xb4,0x02,0x03,0xb8,0x02,0x03,0xbe, - 0x02,0x03,0xc4,0x02,0x03,0xca,0x02,0x03,0xd0,0x02,0x03,0xd6,0x02,0x03,0xdc,0x02, - 0x03,0xe2,0x02,0x03,0xe8,0x02,0x03,0xf1,0x02,0x03,0xf7,0x02,0x03,0xfd,0x02,0x04, - 0x03,0x02,0x04,0x09,0x7f,0x7d,0x80,0x02,0x7f,0xfa,0x7e,0x00,0x80,0x2e,0x7f,0xf4, - 0x7e,0x01,0x80,0x28,0x7f,0xe8,0x7e,0x03,0x80,0x22,0x7f,0xd0,0x7e,0x07,0x80,0x1c, - 0x7f,0xa0,0x7e,0x0f,0x80,0x16,0x7f,0x40,0x7e,0x1f,0x80,0x10,0x7f,0x80,0x7e,0x3e, - 0x80,0x0a,0x7f,0x00,0x7e,0x7d,0x80,0x04,0x7f,0x00,0x7e,0xfa,0x12,0x0c,0x2a,0x80, - 0x25,0x7f,0x80,0x7e,0x00,0x80,0x1c,0x7f,0x00,0x7e,0x01,0x80,0x16,0x7f,0x00,0x7e, - 0x02,0x80,0x10,0x7f,0x00,0x7e,0x04,0x80,0x0a,0x7f,0x00,0x7e,0x08,0x80,0x04,0x7f, - 0x00,0x7e,0x02,0x12,0x00,0x16,0xe5,0x27,0xb4,0x0a,0x00,0x50,0x76,0x90,0x04,0x24, - 0xf8,0x28,0x28,0x73,0x02,0x04,0x42,0x02,0x04,0x49,0x02,0x04,0x50,0x02,0x04,0x57, - 0x02,0x04,0x5e,0x02,0x04,0x65,0x02,0x04,0x6c,0x02,0x04,0x73,0x02,0x04,0x7a,0x02, - 0x04,0x86,0xe4,0xfd,0xfc,0x7f,0xc2,0x80,0x36,0xe4,0xfd,0xfc,0x7f,0xc4,0x80,0x2f, - 0xe4,0xfd,0xfc,0x7f,0xc6,0x80,0x28,0xe4,0xfd,0xfc,0x7f,0xc8,0x80,0x21,0xe4,0xfd, - 0xfc,0x7f,0xca,0x80,0x1a,0xe4,0xfd,0xfc,0x7f,0xcc,0x80,0x13,0xe4,0xfd,0xfc,0x7f, - 0xce,0x80,0x0c,0xe4,0xfd,0xfc,0x7f,0xd0,0x80,0x05,0xe4,0xfd,0xfc,0x7f,0xd2,0x12, - 0x0c,0x5a,0x7f,0xd9,0x80,0x0a,0xe4,0xfd,0xfc,0x7f,0xd4,0x12,0x0c,0x5a,0x7f,0xda, - 0x12,0x0c,0x5e,0xe4,0xfd,0xfc,0x7f,0x50,0x12,0x0c,0x5e,0x75,0xff,0x03,0xf5,0xff, - 0x02,0x00,0xa5,0x78,0x31,0xe6,0x64,0x0d,0x70,0x26,0x18,0xe6,0x64,0x01,0x70,0x20, - 0xf6,0x7d,0x01,0xfc,0x7f,0xbd,0x12,0x0c,0x5e,0x7f,0x50,0x12,0x0c,0x5e,0x1d,0x7f, - 0x45,0x12,0x0c,0x5e,0x0d,0x12,0x0c,0x22,0x7d,0x0b,0x7c,0x00,0x7f,0x50,0x80,0x16, - 0x78,0x31,0xe6,0xfb,0x64,0x0e,0x70,0x14,0x78,0x2f,0xf6,0x78,0x31,0x12,0x0c,0x0b, - 0x7d,0x07,0x7c,0x00,0x7f,0x50,0x12,0x0c,0x5e,0x02,0x00,0xa5,0xeb,0x64,0x0f,0x60, - 0x03,0x02,0x00,0xa5,0x78,0x30,0xe6,0x64,0x01,0x60,0x03,0x02,0x00,0xa5,0x18,0xf6, - 0x08,0x12,0x0c,0x0b,0x7d,0x07,0x7c,0x00,0x7f,0x50,0x12,0x0c,0x5e,0x02,0x00,0xa5, + 0x02,0x00,0x06,0x02,0x11,0xf2,0x78,0x3f,0xe4,0xf6,0xd8,0xfd,0x75,0x81,0xa9,0x02, + 0x00,0x66,0x00,0x02,0x0f,0xcc,0xf6,0x7d,0x01,0xfc,0x7f,0xbd,0x12,0x12,0x8c,0x7f, + 0x50,0x12,0x12,0x8c,0x7f,0x20,0x7e,0x03,0xe4,0xfd,0xfc,0xc3,0xed,0x9f,0xec,0x9e, + 0x50,0x0a,0x00,0x00,0x00,0x0d,0xbd,0x00,0x01,0x0c,0x80,0xef,0x22,0x00,0x00,0x00, + 0x00,0x00,0x00,0x02,0x11,0x97,0x00,0x00,0x00,0x00,0x00,0x02,0x0e,0xbc,0x00,0x00, + 0x00,0x00,0x00,0x02,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x07,0xca,0x00,0x00, + 0x00,0x00,0x00,0x02,0x11,0x17,0x75,0x2c,0x50,0x75,0x2d,0x0f,0x75,0x2e,0xe0,0x75, + 0xff,0x01,0x7b,0x00,0x7a,0x00,0x79,0x29,0x7f,0x07,0x12,0x12,0x73,0xe5,0x29,0x30, + 0xe3,0x03,0x02,0x01,0x2d,0xe4,0xf5,0x27,0xe5,0x27,0x24,0x0c,0xff,0xe5,0x27,0x24, + 0x01,0xfd,0xe4,0x33,0xfc,0x12,0x12,0x8c,0x05,0x27,0xe5,0x27,0xc3,0x94,0x20,0x40, + 0xe7,0x75,0x93,0x07,0x75,0x94,0x0c,0x75,0x96,0x02,0xe4,0x78,0x50,0xf6,0x08,0xf6, + 0x08,0x76,0x21,0x08,0x76,0x43,0x08,0x76,0x23,0x08,0x76,0x01,0x08,0xf6,0x08,0xf6, + 0x08,0xf6,0x08,0x76,0xff,0x08,0x76,0x01,0x08,0x76,0x1f,0xf5,0x27,0xe5,0x27,0x24, + 0x40,0xff,0x74,0x60,0x12,0x12,0x6d,0x05,0x27,0xe5,0x27,0xc3,0x94,0x10,0x40,0xed, + 0x7b,0x00,0x7a,0x00,0x79,0x70,0x7f,0x51,0x12,0x12,0x73,0x7a,0x00,0x09,0x7f,0x52, + 0x12,0x12,0x73,0xe4,0xf5,0x27,0xe5,0x27,0x24,0xbe,0xff,0x74,0x72,0x12,0x12,0x6d, + 0x05,0x27,0xe5,0x27,0xc3,0x94,0x2c,0x40,0xed,0x7b,0x00,0x7a,0x00,0x79,0x9e,0x7f, + 0xf7,0x12,0x12,0x73,0x7a,0x00,0x09,0x7f,0xf8,0x12,0x12,0x73,0x7a,0x00,0x09,0x7f, + 0xf9,0x12,0x12,0x73,0x7d,0x0f,0x7c,0x00,0x7f,0x07,0x12,0x12,0x8c,0xe4,0xf5,0x27, + 0xe5,0x27,0x24,0x40,0xff,0x74,0x60,0x25,0x27,0xf8,0xe6,0xfd,0x7c,0x00,0x12,0x12, + 0x8c,0x05,0x27,0xe5,0x27,0xc3,0x94,0x10,0x40,0xe6,0x78,0x70,0xe6,0xfd,0x7c,0x00, + 0x7f,0x51,0x12,0x12,0x8c,0x08,0xe6,0xfd,0x0f,0x12,0x12,0x8c,0xe4,0xf5,0x27,0xe5, + 0x27,0x24,0xbe,0xff,0x74,0x72,0x25,0x27,0xf8,0xe6,0xfd,0x7c,0x00,0x12,0x12,0x8c, + 0x05,0x27,0xe5,0x27,0xc3,0x94,0x2c,0x40,0xe6,0x78,0x9e,0xe6,0xfd,0x7c,0x00,0x7f, + 0xf7,0x12,0x12,0x8c,0x08,0xe6,0xfd,0x0f,0x12,0x12,0x8c,0x08,0xe6,0xfd,0x0f,0x12, + 0x12,0x8c,0xe4,0xf5,0x27,0x78,0x58,0xe6,0xfe,0x08,0xe6,0xff,0x85,0x2e,0x82,0x85, + 0x2d,0x83,0x75,0xf0,0x02,0xe5,0x27,0x12,0x11,0x0b,0xee,0xf0,0xa3,0xef,0xf0,0x05, + 0x27,0xe5,0x27,0xb4,0x10,0xdf,0x78,0x3c,0x76,0x01,0xe4,0x78,0x38,0xf6,0xf5,0x28, + 0x78,0x4a,0xf6,0x78,0x34,0xf6,0x78,0x37,0xf6,0x18,0xf6,0x78,0x4b,0xf6,0xfb,0x7a, + 0x00,0x79,0x49,0x7f,0x0a,0x12,0x12,0x73,0x75,0x88,0x05,0x75,0xe8,0x1e,0x75,0xa8, + 0x86,0x78,0x49,0xe6,0x64,0x07,0x60,0x03,0x02,0x02,0xae,0xf6,0xfb,0x7a,0x00,0x79, + 0x39,0x7f,0x0c,0x12,0x12,0x73,0x7d,0x05,0x7c,0x00,0x7f,0xa4,0x12,0x12,0x8c,0x7d, + 0x01,0x12,0x00,0x1f,0x78,0x39,0xe6,0xb4,0x0f,0x00,0x40,0x03,0x02,0x02,0x9e,0x90, + 0x02,0x16,0xf8,0x28,0x28,0x73,0x02,0x02,0x43,0x02,0x02,0x47,0x02,0x02,0x4d,0x02, + 0x02,0x53,0x02,0x02,0x59,0x02,0x02,0x5f,0x02,0x02,0x65,0x02,0x02,0x6b,0x02,0x02, + 0x71,0x02,0x02,0x77,0x02,0x02,0x80,0x02,0x02,0x86,0x02,0x02,0x8c,0x02,0x02,0x92, + 0x02,0x02,0x98,0x7f,0x7d,0x80,0x02,0x7f,0xfa,0x7e,0x00,0x80,0x2e,0x7f,0xf4,0x7e, + 0x01,0x80,0x28,0x7f,0xe8,0x7e,0x03,0x80,0x22,0x7f,0xd0,0x7e,0x07,0x80,0x1c,0x7f, + 0xa0,0x7e,0x0f,0x80,0x16,0x7f,0x40,0x7e,0x1f,0x80,0x10,0x7f,0x80,0x7e,0x3e,0x80, + 0x0a,0x7f,0x00,0x7e,0x7d,0x80,0x04,0x7f,0x00,0x7e,0xfa,0x12,0x00,0x28,0x80,0x25, + 0x7f,0x80,0x7e,0x00,0x80,0x1c,0x7f,0x00,0x7e,0x01,0x80,0x16,0x7f,0x00,0x7e,0x02, + 0x80,0x10,0x7f,0x00,0x7e,0x04,0x80,0x0a,0x7f,0x00,0x7e,0x08,0x80,0x04,0x7f,0x00, + 0x7e,0x02,0x12,0x12,0x4a,0x7d,0x04,0x7c,0x00,0x7f,0xa4,0x02,0x07,0x7c,0x78,0x49, + 0xe6,0x64,0x09,0x70,0x52,0xf6,0xfb,0x7a,0x00,0x79,0x29,0x7f,0x0b,0x12,0x12,0x73, + 0xe4,0xf5,0x27,0xe5,0x27,0xc3,0x95,0x29,0x50,0x0e,0xe5,0x27,0x24,0x0c,0xff,0x74, + 0x50,0x12,0x12,0x6d,0x05,0x27,0x80,0xeb,0xe4,0xf5,0x27,0x78,0x58,0xe6,0xfe,0x08, + 0xe6,0xff,0x85,0x2e,0x82,0x85,0x2d,0x83,0x75,0xf0,0x02,0xe5,0x27,0x12,0x11,0x0b, + 0xee,0xf0,0xa3,0xef,0xf0,0x05,0x27,0xe5,0x27,0xb4,0x10,0xdf,0xe4,0xf5,0xff,0x7d, + 0x0f,0xfc,0x7f,0x07,0x02,0x07,0x7c,0x78,0x49,0xe6,0x64,0x0a,0x60,0x03,0x02,0x03, + 0xee,0xf6,0xfb,0x7a,0x00,0x79,0x29,0x7f,0xe4,0x12,0x12,0x73,0x53,0x29,0xc0,0x78, + 0x34,0xe6,0xb4,0x10,0x00,0x40,0x03,0x02,0x03,0xc7,0x90,0x03,0x31,0xf8,0x28,0x28, + 0x73,0x02,0x03,0x61,0x02,0x03,0x67,0x02,0x03,0x6d,0x02,0x03,0x73,0x02,0x03,0x79, + 0x02,0x03,0x7f,0x02,0x03,0x85,0x02,0x03,0x8b,0x02,0x03,0x91,0x02,0x03,0x97,0x02, + 0x03,0x9d,0x02,0x03,0xa3,0x02,0x03,0xa9,0x02,0x03,0xaf,0x02,0x03,0xb5,0x02,0x03, + 0xbb,0xe5,0x29,0x44,0x01,0x80,0x58,0xe5,0x29,0x44,0x02,0x80,0x52,0xe5,0x29,0x44, + 0x04,0x80,0x4c,0xe5,0x29,0x44,0x08,0x80,0x46,0xe5,0x29,0x44,0x11,0x80,0x40,0xe5, + 0x29,0x44,0x12,0x80,0x3a,0xe5,0x29,0x44,0x14,0x80,0x34,0xe5,0x29,0x44,0x18,0x80, + 0x2e,0xe5,0x29,0x44,0x21,0x80,0x28,0xe5,0x29,0x44,0x22,0x80,0x22,0xe5,0x29,0x44, + 0x24,0x80,0x1c,0xe5,0x29,0x44,0x28,0x80,0x16,0xe5,0x29,0x44,0x31,0x80,0x10,0xe5, + 0x29,0x44,0x32,0x80,0x0a,0xe5,0x29,0x44,0x34,0x80,0x04,0xe5,0x29,0x44,0x38,0xfd, + 0x7c,0x00,0x7f,0xe4,0x12,0x12,0x8c,0x78,0x34,0x06,0x7d,0x01,0x7c,0x00,0x7f,0xbd, + 0x12,0x12,0x8c,0x7f,0x50,0x12,0x12,0x8c,0x7d,0x10,0x7f,0x45,0x12,0x12,0x8c,0xe4, + 0xfd,0x0f,0x12,0x00,0x21,0x7d,0x07,0x7c,0x00,0x7f,0x50,0x02,0x07,0x7c,0x78,0x49, + 0xe6,0xfb,0x64,0x0b,0x70,0x27,0xf6,0x78,0x36,0x76,0x01,0x7d,0x01,0xfc,0x7f,0xbd, + 0x12,0x12,0x8c,0x7f,0x50,0x12,0x12,0x8c,0x7d,0x40,0x7f,0x45,0x12,0x12,0x8c,0xfd, + 0x0f,0x12,0x00,0x21,0x7d,0xc7,0x7c,0x00,0x7f,0x50,0x02,0x07,0x7c,0xeb,0x64,0x0c, + 0x60,0x0a,0x78,0x49,0xe6,0x64,0x08,0x60,0x03,0x02,0x07,0x4f,0xe4,0xf5,0x27,0xe5, + 0x27,0x24,0xc2,0xff,0xe4,0xfd,0xfc,0x12,0x12,0x8c,0x05,0x27,0xe5,0x27,0xc3,0x94, + 0x12,0x40,0xec,0xe4,0xfd,0xfc,0x7f,0xd9,0x12,0x12,0x8c,0x7d,0xc0,0x0f,0x12,0x12, + 0x8c,0x78,0x49,0xe6,0xb4,0x0c,0x16,0x7b,0x00,0x7a,0x00,0x79,0x28,0x7f,0x0c,0x12, + 0x12,0x73,0x7a,0x00,0x79,0x39,0x7f,0x0d,0x12,0x12,0x73,0x80,0x1b,0xe5,0x28,0xb4, + 0x09,0x16,0xe4,0xf5,0x28,0x78,0x35,0x06,0xe6,0xfd,0x7c,0x00,0x7f,0xc0,0x12,0x12, + 0x8c,0xe6,0xfd,0x7f,0x10,0x12,0x12,0x8c,0x7d,0xf0,0x7c,0x00,0x7f,0xd8,0x12,0x12, + 0x8c,0x7d,0x01,0x12,0x00,0x1a,0x7d,0x11,0x7c,0x00,0x7f,0x50,0x12,0x12,0x8c,0xe5, + 0x28,0xb4,0x09,0x00,0x40,0x03,0x02,0x05,0x3d,0x90,0x04,0xb0,0xf8,0x28,0x28,0x73, + 0x02,0x04,0xcb,0x02,0x04,0xd4,0x02,0x04,0xdd,0x02,0x04,0xea,0x02,0x04,0xf7,0x02, + 0x05,0x04,0x02,0x05,0x11,0x02,0x05,0x1e,0x02,0x05,0x2d,0x7f,0xc2,0x12,0x12,0x84, + 0x7d,0x01,0x80,0x55,0x7f,0xc4,0x12,0x12,0x84,0x7d,0x02,0x80,0x4c,0x7d,0xff,0x7c, + 0x00,0x7f,0xc6,0x12,0x12,0x88,0x7d,0x04,0x80,0x3f,0x7d,0xff,0x7c,0x00,0x7f,0xc8, + 0x12,0x12,0x88,0x7d,0x08,0x80,0x32,0x7d,0xff,0x7c,0x00,0x7f,0xca,0x12,0x12,0x88, + 0x7d,0x10,0x80,0x25,0x7d,0xff,0x7c,0x00,0x7f,0xcc,0x12,0x12,0x88,0x7d,0x20,0x80, + 0x18,0x7d,0xff,0x7c,0x00,0x7f,0xce,0x12,0x12,0x88,0x7d,0x40,0x80,0x0b,0x7d,0xff, + 0x7c,0x00,0x7f,0xd0,0x12,0x12,0x88,0x7d,0x80,0x7f,0xd9,0x80,0x0d,0x7d,0xff,0x7c, + 0x00,0x7f,0xd2,0x12,0x12,0x88,0x7d,0xc1,0x7f,0xda,0x12,0x12,0x8c,0x78,0x39,0xe6, + 0xb4,0x0f,0x00,0x40,0x03,0x02,0x05,0xd7,0x90,0x05,0x4f,0xf8,0x28,0x28,0x73,0x02, + 0x05,0x7c,0x02,0x05,0x80,0x02,0x05,0x86,0x02,0x05,0x8c,0x02,0x05,0x92,0x02,0x05, + 0x98,0x02,0x05,0x9e,0x02,0x05,0xa4,0x02,0x05,0xaa,0x02,0x05,0xb0,0x02,0x05,0xb9, + 0x02,0x05,0xbf,0x02,0x05,0xc5,0x02,0x05,0xcb,0x02,0x05,0xd1,0x7f,0x7d,0x80,0x02, + 0x7f,0xfa,0x7e,0x00,0x80,0x2e,0x7f,0xf4,0x7e,0x01,0x80,0x28,0x7f,0xe8,0x7e,0x03, + 0x80,0x22,0x7f,0xd0,0x7e,0x07,0x80,0x1c,0x7f,0xa0,0x7e,0x0f,0x80,0x16,0x7f,0x40, + 0x7e,0x1f,0x80,0x10,0x7f,0x80,0x7e,0x3e,0x80,0x0a,0x7f,0x00,0x7e,0x7d,0x80,0x04, + 0x7f,0x00,0x7e,0xfa,0x12,0x00,0x28,0x80,0x25,0x7f,0x80,0x7e,0x00,0x80,0x1c,0x7f, + 0x00,0x7e,0x01,0x80,0x16,0x7f,0x00,0x7e,0x02,0x80,0x10,0x7f,0x00,0x7e,0x04,0x80, + 0x0a,0x7f,0x00,0x7e,0x08,0x80,0x04,0x7f,0x00,0x7e,0x02,0x12,0x12,0x4a,0xe5,0x28, + 0xb4,0x0a,0x00,0x50,0x76,0x90,0x05,0xec,0xf8,0x28,0x28,0x73,0x02,0x06,0x0a,0x02, + 0x06,0x11,0x02,0x06,0x18,0x02,0x06,0x1f,0x02,0x06,0x26,0x02,0x06,0x2d,0x02,0x06, + 0x34,0x02,0x06,0x3b,0x02,0x06,0x42,0x02,0x06,0x4e,0xe4,0xfd,0xfc,0x7f,0xc2,0x80, + 0x36,0xe4,0xfd,0xfc,0x7f,0xc4,0x80,0x2f,0xe4,0xfd,0xfc,0x7f,0xc6,0x80,0x28,0xe4, + 0xfd,0xfc,0x7f,0xc8,0x80,0x21,0xe4,0xfd,0xfc,0x7f,0xca,0x80,0x1a,0xe4,0xfd,0xfc, + 0x7f,0xcc,0x80,0x13,0xe4,0xfd,0xfc,0x7f,0xce,0x80,0x0c,0xe4,0xfd,0xfc,0x7f,0xd0, + 0x80,0x05,0xe4,0xfd,0xfc,0x7f,0xd2,0x12,0x12,0x88,0x7f,0xd9,0x80,0x0a,0xe4,0xfd, + 0xfc,0x7f,0xd4,0x12,0x12,0x88,0x7f,0xda,0x12,0x12,0x8c,0xe4,0xfd,0xfc,0x7f,0x50, + 0x12,0x12,0x8c,0x78,0x49,0xe6,0x64,0x08,0x70,0x5b,0xf5,0x27,0xe5,0x27,0xc3,0x94, + 0x08,0x50,0x46,0xe5,0x27,0xc3,0x94,0x04,0xe5,0x27,0x50,0x12,0x24,0x8c,0xff,0x7b, + 0x00,0x7a,0x00,0x79,0x2a,0x12,0x12,0x73,0xe5,0x27,0x24,0x8d,0x80,0x10,0x24,0x90, + 0xff,0x7b,0x00,0x7a,0x00,0x79,0x2a,0x12,0x12,0x73,0xe5,0x27,0x24,0x91,0xff,0x7a, + 0x00,0x09,0x12,0x12,0x73,0xe5,0x2a,0xd3,0x94,0x01,0x50,0x04,0xe5,0x2b,0x60,0x03, + 0x78,0x33,0x06,0x05,0x27,0x05,0x27,0x80,0xb3,0x05,0x28,0xe5,0x28,0xfd,0x7c,0x00, + 0x7f,0x0f,0x12,0x12,0x8c,0x78,0x49,0xe6,0xff,0x64,0x0c,0x60,0x1a,0xef,0x64,0x08, + 0x60,0x03,0x02,0x01,0xe1,0x78,0x35,0xe6,0x64,0x40,0x60,0x0b,0x78,0x33,0xe6,0xd3, + 0x94,0x1e,0x50,0x03,0x02,0x01,0xe1,0xe4,0xf5,0x28,0x78,0x33,0xf6,0x78,0x49,0xe6, + 0xb4,0x08,0x1b,0x78,0x35,0xe6,0xff,0xc3,0x94,0x3c,0x50,0x09,0xef,0x24,0x04,0xfd, + 0xe4,0x33,0xfc,0x80,0x04,0x7d,0x3f,0x7c,0x00,0x7f,0xc0,0x12,0x12,0x8c,0xe4,0x78, + 0x49,0xf6,0xf5,0x27,0xe5,0x27,0x24,0xc2,0xff,0x7d,0xff,0x7c,0x00,0x12,0x12,0x8c, + 0x05,0x27,0xe5,0x27,0xc3,0x94,0x12,0x40,0xeb,0x7d,0xff,0x7c,0x00,0x7f,0xd9,0x12, + 0x12,0x8c,0x7d,0xc1,0x0f,0x12,0x12,0x8c,0x7d,0x01,0x7f,0xd8,0x12,0x12,0x8c,0x7d, + 0x07,0x7f,0xbd,0x12,0x12,0x8c,0x75,0xff,0x03,0xe4,0xf5,0xff,0x02,0x01,0xe1,0x78, + 0x49,0xe6,0x64,0x0d,0x70,0x2c,0x78,0x3c,0xe6,0x64,0x01,0x70,0x25,0xf6,0x7d,0x01, + 0xfc,0x7f,0xbd,0x12,0x12,0x8c,0x7f,0x50,0x12,0x12,0x8c,0x1d,0x7f,0x45,0x12,0x12, + 0x8c,0x0d,0x0f,0x12,0x00,0x21,0x7d,0x0b,0x7c,0x00,0x7f,0x50,0x12,0x12,0x8c,0x02, + 0x01,0xe1,0x78,0x49,0xe6,0xfb,0x64,0x0e,0x70,0x17,0x78,0x3a,0xf6,0x78,0x49,0x12, + 0x00,0x16,0x7d,0x07,0x7c,0x00,0x7f,0x50,0x12,0x12,0x8c,0x75,0x87,0x01,0x02,0x01, + 0xe1,0xeb,0x64,0x0f,0x60,0x03,0x02,0x01,0xe1,0x78,0x3c,0xe6,0x64,0x01,0x60,0x03, + 0x02,0x01,0xe1,0x78,0x3a,0xf6,0x78,0x3c,0x12,0x00,0x16,0x7d,0x07,0x7c,0x00,0x7f, + 0x50,0x12,0x12,0x8c,0x75,0x87,0x01,0x02,0x01,0xe1,0xc0,0xe0,0xc0,0xf0,0xc0,0x83, + 0xc0,0x82,0xc0,0x85,0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00, + 0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07, + 0x75,0x0d,0x00,0x75,0x0c,0x00,0x75,0x0b,0x00,0x75,0x0a,0x00,0xc0,0x94,0xc0,0x93, + 0x53,0x91,0x7f,0x78,0x36,0xe6,0x60,0x03,0x02,0x0c,0x72,0x85,0xbc,0x08,0x85,0xbd, + 0x09,0xe5,0x09,0xae,0x08,0x78,0x02,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0x24,0x00, + 0xff,0xee,0x34,0x08,0xf5,0x18,0x8f,0x19,0x8f,0x82,0xf5,0x83,0xe5,0x82,0x24,0xfc, + 0xf5,0x82,0xe5,0x83,0x34,0xff,0xf5,0x83,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe, + 0xa3,0xe0,0xff,0xe5,0x19,0x24,0x04,0xf5,0x82,0xe4,0x35,0x18,0xf5,0x83,0xe0,0xf8, + 0xa3,0xe0,0xf9,0xa3,0xe0,0xfa,0xa3,0xe0,0xfb,0xc3,0x12,0x10,0xd4,0xe5,0x19,0x40, + 0x3f,0x24,0xfc,0xf5,0x82,0xe5,0x18,0x34,0xff,0xf5,0x83,0xe0,0xf8,0xa3,0xe0,0xf9, + 0xa3,0xe0,0xfa,0xa3,0xe0,0xfb,0xe5,0x19,0x24,0x04,0xf5,0x82,0xe4,0x35,0x18,0xf5, + 0x83,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe,0xa3,0xe0,0xc3,0x9b,0xf5,0x1d,0xee, + 0x9a,0xf5,0x1c,0xed,0x99,0xf5,0x1b,0xec,0x98,0xf5,0x1a,0x75,0x26,0x00,0x80,0x3d, + 0x24,0x04,0xf5,0x82,0xe4,0x35,0x18,0xf5,0x83,0xe0,0xf8,0xa3,0xe0,0xf9,0xa3,0xe0, + 0xfa,0xa3,0xe0,0xfb,0xe5,0x19,0x24,0xfc,0xf5,0x82,0xe5,0x18,0x34,0xff,0xf5,0x83, + 0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe,0xa3,0xe0,0xc3,0x9b,0xf5,0x1d,0xee,0x9a, + 0xf5,0x1c,0xed,0x99,0xf5,0x1b,0xec,0x98,0xf5,0x1a,0x75,0x26,0x01,0xe5,0x19,0x24, + 0xfc,0xf5,0x82,0xe5,0x18,0x34,0xff,0xf5,0x83,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0, + 0xfe,0xa3,0xe0,0xff,0xe5,0x19,0x24,0x04,0xf5,0x82,0xe4,0x35,0x18,0xf5,0x83,0xe0, + 0xf8,0xa3,0xe0,0xf9,0xa3,0xe0,0xfa,0xa3,0xe0,0x2f,0xff,0xea,0x3e,0xfe,0xe9,0x3d, + 0xfd,0xe8,0x3c,0xfc,0x78,0x01,0x12,0x10,0xf8,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0, + 0x07,0x85,0x19,0x82,0x85,0x18,0x83,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe,0xa3, + 0xe0,0xff,0x78,0x02,0x12,0x10,0xf8,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xc3, + 0xef,0x9b,0xf5,0x21,0xee,0x9a,0xf5,0x20,0xed,0x99,0xf5,0x1f,0xec,0x98,0xf5,0x1e, + 0xaf,0x1d,0xae,0x1c,0xad,0x1b,0xac,0x1a,0x78,0x07,0x12,0x10,0xf8,0x8f,0x1d,0x8e, + 0x1c,0x8d,0x1b,0x8c,0x1a,0x85,0x1a,0xf1,0x85,0x1b,0xf2,0x85,0x1c,0xf3,0x85,0x1d, + 0xf4,0x85,0x1f,0xf5,0x85,0x20,0xf6,0x85,0x21,0xf7,0x00,0x00,0x00,0x85,0xf9,0x22, + 0x85,0xfa,0x23,0x85,0xfb,0x24,0x85,0xfc,0x25,0xad,0x25,0xac,0x24,0xe5,0x26,0x60, + 0x17,0xe5,0x09,0xae,0x08,0x78,0x07,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xc3,0x9d, + 0xf5,0x11,0xee,0x9c,0xf5,0x10,0x80,0x14,0xe5,0x09,0xae,0x08,0x78,0x07,0xc3,0x33, + 0xce,0x33,0xce,0xd8,0xf9,0x2d,0xf5,0x11,0xee,0x3c,0xf5,0x10,0x75,0x12,0x00,0x78, + 0x5b,0xe6,0xf5,0x13,0x85,0x10,0xe1,0x85,0x11,0xe2,0x85,0x12,0xe3,0x85,0x13,0xe4, + 0x85,0xe9,0x14,0x85,0xea,0x15,0x85,0xeb,0x16,0x85,0xec,0x17,0xaf,0x17,0xae,0x16, + 0xad,0x15,0xac,0x14,0x78,0x07,0x12,0x10,0xe5,0x8e,0x0e,0x8f,0x0f,0x78,0x5a,0xe6, + 0xff,0x70,0x04,0x78,0x3b,0x76,0x01,0xef,0x60,0x05,0x78,0x3b,0xe6,0x60,0x05,0x78, + 0x5a,0xe6,0x70,0x50,0xaf,0xbb,0xef,0xfd,0x7c,0x00,0x7f,0x0c,0x12,0x12,0x8c,0xaf, + 0xb1,0xef,0xfd,0x7f,0x0f,0x12,0x12,0x8c,0xaa,0x18,0xa9,0x19,0x7b,0x01,0x90,0x00, + 0x03,0x12,0x10,0x95,0xfd,0x7f,0x28,0x12,0x12,0x8c,0xaa,0x18,0xa9,0x19,0x90,0x00, + 0x02,0x12,0x10,0x95,0xfd,0x0f,0x12,0x12,0x8c,0xaa,0x18,0xa9,0x19,0x90,0x00,0x01, + 0x12,0x10,0x95,0xfd,0x0f,0x12,0x12,0x8c,0x85,0x19,0x82,0x85,0x18,0x83,0xe0,0xfd, + 0x0f,0x12,0x12,0x8c,0x78,0x3b,0xe6,0x70,0x03,0x02,0x0c,0x2d,0x78,0x5a,0xe6,0x70, + 0x03,0x02,0x0b,0x85,0x78,0x3d,0xe6,0xfe,0x08,0xe6,0xff,0xd3,0x95,0x09,0xee,0x95, + 0x08,0x40,0x0b,0xef,0x95,0x09,0xf6,0xee,0x95,0x08,0x18,0xf6,0x80,0x07,0x78,0x3d, + 0x76,0x00,0x08,0x76,0x00,0x78,0x3f,0xe6,0xfe,0x08,0xe6,0xff,0xd3,0x95,0x09,0xee, + 0x95,0x08,0x40,0x0b,0xef,0x95,0x09,0xf6,0xee,0x95,0x08,0x18,0xf6,0x80,0x07,0x78, + 0x3f,0x76,0x00,0x08,0x76,0x00,0x78,0x41,0xe6,0xfe,0x08,0xe6,0xff,0xd3,0x95,0x09, + 0xee,0x95,0x08,0x40,0x0b,0xef,0x95,0x09,0xf6,0xee,0x95,0x08,0x18,0xf6,0x80,0x07, + 0x78,0x41,0x76,0x00,0x08,0x76,0x00,0x78,0x43,0xe6,0xfe,0x08,0xe6,0xff,0xd3,0x95, + 0x09,0xee,0x95,0x08,0x40,0x0b,0xef,0x95,0x09,0xf6,0xee,0x95,0x08,0x18,0xf6,0x80, + 0x07,0x78,0x43,0x76,0x00,0x08,0x76,0x00,0x78,0x45,0xe6,0xfe,0x08,0xe6,0xff,0xd3, + 0x95,0x09,0xee,0x95,0x08,0x40,0x0b,0xef,0x95,0x09,0xf6,0xee,0x95,0x08,0x18,0xf6, + 0x80,0x07,0x78,0x45,0x76,0x00,0x08,0x76,0x00,0x78,0x47,0xe6,0xfe,0x08,0xe6,0xff, + 0xd3,0x95,0x0f,0xee,0x95,0x0e,0x40,0x0b,0xef,0x95,0x0f,0xf6,0xee,0x95,0x0e,0x18, + 0xf6,0x80,0x07,0x78,0x47,0x76,0x00,0x08,0x76,0x00,0x78,0x3e,0xe6,0xfd,0x7c,0x00, + 0x7f,0x0d,0x12,0x12,0x8c,0x18,0xe6,0xfd,0x0f,0x12,0x12,0x8c,0x78,0x40,0xe6,0xfd, + 0x7f,0x10,0x12,0x12,0x8c,0x18,0xe6,0xfd,0x0f,0x12,0x12,0x8c,0x78,0x42,0xe6,0xfd, + 0x0f,0x12,0x12,0x8c,0x18,0xe6,0xfd,0x0f,0x12,0x12,0x8c,0x78,0x44,0xe6,0xfd,0x0f, + 0x12,0x12,0x8c,0x18,0xe6,0xfd,0x0f,0x12,0x12,0x8c,0x78,0x46,0xe6,0xfd,0x0f,0x12, + 0x12,0x8c,0x18,0xe6,0xfd,0x0f,0x12,0x12,0x8c,0x78,0x48,0xe6,0xfd,0x0f,0x12,0x12, + 0x8c,0x18,0xe6,0x80,0x77,0xaf,0xbb,0xef,0xfd,0x7c,0x00,0x7f,0x0c,0x12,0x12,0x8c, + 0xaf,0xbd,0xef,0xfd,0x7f,0x0d,0x12,0x12,0x8c,0xaf,0xbc,0xef,0xfd,0x7f,0x0e,0x12, + 0x12,0x8c,0xaf,0xb1,0xef,0xfd,0x7f,0x0f,0x12,0x12,0x8c,0xaf,0xb3,0xef,0xfd,0x7f, + 0x10,0x12,0x12,0x8c,0xaf,0xb2,0xef,0xfd,0x7f,0x11,0x12,0x12,0x8c,0xaf,0xb5,0xef, + 0xfd,0x7f,0x12,0x12,0x12,0x8c,0xaf,0xb4,0xef,0xfd,0x7f,0x13,0x12,0x12,0x8c,0xaf, + 0xb7,0xef,0xfd,0x7f,0x14,0x12,0x12,0x8c,0xaf,0xb6,0xef,0xfd,0x7f,0x15,0x12,0x12, + 0x8c,0xaf,0xba,0xef,0xfd,0x7f,0x16,0x12,0x12,0x8c,0xaf,0xb9,0xef,0xfd,0x7f,0x17, + 0x12,0x12,0x8c,0xe5,0x0f,0xfd,0x0f,0x12,0x12,0x8c,0xe5,0x0e,0xfd,0x0f,0x12,0x12, + 0x8c,0x78,0x49,0xe6,0xb4,0x0f,0x14,0x78,0x3c,0x76,0x01,0x75,0xff,0x03,0x75,0xff, + 0x01,0x78,0x38,0xe6,0x70,0x03,0x02,0x0c,0xdb,0x80,0x03,0x75,0xff,0x03,0x75,0xff, + 0x00,0x7d,0x0e,0x7c,0x00,0x7f,0x07,0x12,0x12,0x8c,0x02,0x0c,0xdb,0x78,0x3d,0xa6, + 0x08,0x08,0xa6,0x09,0x78,0x47,0xa6,0x0e,0x08,0xa6,0x0f,0x78,0x3f,0xa6,0xb2,0x08, + 0xa6,0xb3,0x08,0xa6,0xb4,0x08,0xa6,0xb5,0x08,0xa6,0xb6,0x08,0xa6,0xb7,0x08,0xa6, + 0xb9,0x08,0xa6,0xba,0x78,0x3b,0x76,0x01,0x75,0xa6,0x00,0x75,0xa7,0x7f,0x75,0xa2, + 0x34,0x75,0xa3,0x00,0x75,0xa4,0x08,0x75,0xa5,0x00,0x75,0xa1,0x03,0x75,0xa1,0x02, + 0x80,0x69,0x78,0x4b,0xe6,0xff,0xc3,0x94,0x08,0x50,0x31,0xef,0x25,0xe0,0x24,0x0c, + 0xff,0xae,0xbd,0xee,0xfd,0x7c,0x00,0x12,0x12,0x8c,0xe6,0x25,0xe0,0x24,0x0d,0xff, + 0xae,0xbc,0xee,0xfd,0x12,0x12,0x8c,0x06,0xe6,0x25,0xe0,0x25,0xe0,0x24,0x10,0xf5, + 0xa2,0x75,0xa3,0x00,0x75,0xa1,0x01,0x75,0xa1,0x00,0x80,0x2f,0x78,0x4b,0xe6,0x25, + 0xe0,0x24,0x0c,0xff,0xae,0xbd,0xee,0xfd,0x7c,0x00,0x12,0x12,0x8c,0xe6,0x25,0xe0, + 0x24,0x0d,0xff,0xae,0xbc,0xee,0xfd,0x12,0x12,0x8c,0x78,0x36,0x76,0x00,0x7d,0x0a, + 0x7f,0x07,0x12,0x12,0x8c,0x75,0xff,0x03,0x75,0xff,0x00,0xd0,0x93,0xd0,0x94,0xd0, + 0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0, + 0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32, 0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0x85,0xc0,0x84,0xc0,0x86,0x75,0x86, 0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04, - 0xc0,0x05,0xc0,0x06,0xc0,0x07,0x75,0x0d,0x00,0x75,0x0c,0x00,0x75,0x0b,0x00,0x75, - 0x0a,0x00,0xc0,0x94,0xc0,0x93,0x53,0x91,0x7f,0x78,0x2d,0xe6,0x60,0x03,0x02,0x07, - 0x78,0x85,0xbc,0x08,0x85,0xbd,0x09,0xaf,0xbb,0xef,0xfd,0x7c,0x00,0x7f,0x0c,0x12, - 0x0c,0x5e,0xaf,0xbd,0xef,0xfd,0x7f,0x0d,0x12,0x0c,0x5e,0xaf,0xbc,0xef,0xfd,0x7f, - 0x0e,0x12,0x0c,0x5e,0xe5,0x09,0xae,0x08,0x78,0x02,0xc3,0x33,0xce,0x33,0xce,0xd8, - 0xf9,0x24,0x00,0xff,0xee,0x34,0x04,0xf5,0x18,0x8f,0x19,0xfa,0xa9,0x07,0x7b,0x01, - 0x90,0x00,0x03,0x12,0x0a,0xf3,0xfd,0x7c,0x00,0x7f,0x28,0x12,0x0c,0x5e,0xaa,0x18, - 0xa9,0x19,0x90,0x00,0x02,0x12,0x0a,0xf3,0xfd,0x0f,0x12,0x0c,0x5e,0xaa,0x18,0xa9, - 0x19,0x90,0x00,0x01,0x12,0x0a,0xf3,0xfd,0x0f,0x12,0x0c,0x5e,0x85,0x19,0x82,0x85, - 0x18,0x83,0xe0,0xfd,0x0f,0x12,0x0c,0x5e,0xe5,0x19,0x24,0xfc,0xf5,0x82,0xe5,0x18, - 0x34,0xff,0xf5,0x83,0xa3,0xa3,0xe0,0xfe,0xa3,0xe0,0xfb,0xaa,0x06,0xe5,0x19,0x24, - 0x04,0xf5,0x82,0xe4,0x35,0x18,0xf5,0x83,0xa3,0xa3,0xe0,0xfe,0xa3,0xe0,0xc3,0x9b, - 0xff,0xee,0x9a,0xfe,0x12,0x0c,0x66,0xee,0x33,0x95,0xe0,0x8f,0x1d,0x8e,0x1c,0xf5, - 0x1b,0xf5,0x1a,0xe5,0x19,0x24,0xfc,0xf5,0x82,0xe5,0x18,0x34,0xff,0xf5,0x83,0xe0, - 0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe,0xa3,0xe0,0xff,0xe5,0x19,0x24,0x04,0xf5,0x82, - 0xe4,0x35,0x18,0xf5,0x83,0xe0,0xf8,0xa3,0xe0,0xf9,0xa3,0xe0,0xfa,0xa3,0xe0,0x2f, - 0xff,0xea,0x3e,0xfe,0xe9,0x3d,0xfd,0xe8,0x3c,0xfc,0x78,0x01,0x12,0x0b,0x45,0xc0, - 0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x85,0x19,0x82,0x85,0x18,0x83,0xe0,0xfc,0xa3, - 0xe0,0xfd,0xa3,0xe0,0xfe,0xa3,0xe0,0xff,0x78,0x02,0x12,0x0b,0x45,0xd0,0x03,0xd0, - 0x02,0xd0,0x01,0xd0,0x00,0xc3,0xef,0x9b,0xf5,0x21,0xee,0x9a,0xf5,0x20,0xed,0x99, - 0xf5,0x1f,0xec,0x98,0xf5,0x1e,0xaf,0x1d,0xae,0x1c,0xad,0x1b,0xac,0x1a,0x78,0x07, - 0x12,0x0b,0x45,0x8f,0x1d,0x8e,0x1c,0x8d,0x1b,0x8c,0x1a,0x85,0x1a,0xf1,0x85,0x1b, - 0xf2,0x85,0x1c,0xf3,0x85,0x1d,0xf4,0x85,0x1f,0xf5,0x85,0x20,0xf6,0x85,0x21,0xf7, - 0x00,0x00,0x00,0x85,0xf9,0x22,0x85,0xfa,0x23,0x85,0xfb,0x24,0x85,0xfc,0x25,0xad, - 0x25,0xac,0x24,0xe5,0x09,0xae,0x08,0x78,0x07,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9, - 0x2d,0xf5,0x11,0xee,0x3c,0xf5,0x10,0x75,0x12,0x00,0x75,0x13,0x0f,0xf5,0xe1,0x85, - 0x11,0xe2,0x85,0x12,0xe3,0x85,0x13,0xe4,0x85,0xe9,0x14,0x85,0xea,0x15,0x85,0xeb, - 0x16,0x85,0xec,0x17,0xaf,0x17,0xae,0x16,0xad,0x15,0xac,0x14,0x78,0x07,0x12,0x0b, - 0x32,0x8e,0x0e,0x8f,0x0f,0xaf,0xb1,0xef,0xfd,0x7c,0x00,0x7f,0x0f,0x12,0x0c,0x5e, - 0xaf,0xb3,0xef,0xfd,0x7f,0x10,0x12,0x0c,0x5e,0xaf,0xb2,0xef,0xfd,0x7f,0x11,0x12, - 0x0c,0x5e,0xaf,0xb5,0xef,0xfd,0x7f,0x12,0x12,0x0c,0x5e,0xaf,0xb4,0xef,0xfd,0x7f, - 0x13,0x12,0x0c,0x5e,0xaf,0xb7,0xef,0xfd,0x7f,0x14,0x12,0x0c,0x5e,0xaf,0xb6,0xef, - 0xfd,0x7f,0x15,0x12,0x0c,0x5e,0xaf,0xba,0xef,0xfd,0x7f,0x16,0x12,0x0c,0x5e,0xaf, - 0xb9,0xef,0xfd,0x7f,0x17,0x12,0x0c,0x5e,0xe5,0x0f,0xfd,0x0f,0x12,0x0c,0x5e,0xe5, - 0x0e,0xfd,0x0f,0x12,0x0c,0x5e,0x78,0x31,0xe6,0xb4,0x0f,0x0b,0x18,0x76,0x01,0x75, - 0xff,0x03,0x75,0xff,0x01,0x80,0x7a,0x75,0xff,0x03,0x75,0xff,0x00,0x7d,0x0e,0x7c, - 0x00,0x7f,0x07,0x12,0x0c,0x5e,0x80,0x69,0x78,0x33,0xe6,0xff,0xc3,0x94,0x08,0x50, - 0x31,0xef,0x25,0xe0,0x24,0x0c,0xff,0xae,0xbd,0xee,0xfd,0x7c,0x00,0x12,0x0c,0x5e, - 0xe6,0x25,0xe0,0x24,0x0d,0xff,0xae,0xbc,0xee,0xfd,0x12,0x0c,0x5e,0x06,0xe6,0x25, - 0xe0,0x25,0xe0,0x24,0x10,0xf5,0xa2,0x75,0xa3,0x00,0x75,0xa1,0x01,0x75,0xa1,0x00, - 0x80,0x2f,0x78,0x33,0xe6,0x25,0xe0,0x24,0x0c,0xff,0xae,0xbd,0xee,0xfd,0x7c,0x00, - 0x12,0x0c,0x5e,0xe6,0x25,0xe0,0x24,0x0d,0xff,0xae,0xbc,0xee,0xfd,0x12,0x0c,0x5e, - 0x78,0x2d,0x76,0x00,0x7d,0x0a,0x7f,0x07,0x12,0x0c,0x5e,0x75,0xff,0x03,0x75,0xff, - 0x00,0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0, - 0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82,0xd0, - 0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0x85, - 0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01, - 0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0,0x93, - 0x53,0x91,0xdf,0x78,0x32,0xe6,0x60,0x3d,0x7b,0x00,0x7a,0x00,0x79,0x2b,0x7f,0x0c, - 0x12,0x0c,0x45,0xe5,0xfe,0xb5,0x2b,0x12,0x76,0x00,0xe4,0xfd,0xfc,0x7f,0x0d,0x12, - 0x0c,0x5e,0x75,0xff,0x03,0xf5,0xff,0x02,0x08,0xe4,0x78,0x2c,0xe6,0xb4,0x10,0x0f, - 0x78,0x32,0x76,0x00,0x7d,0x01,0x7c,0x00,0x7f,0x0d,0x12,0x0c,0x5e,0x80,0x0c,0x78, - 0x31,0x76,0x0a,0x80,0x6f,0x78,0x31,0xe6,0xb4,0x0d,0x08,0x75,0xff,0x03,0x75,0xff, - 0x00,0x80,0x61,0x78,0x2d,0xe6,0x60,0x3b,0x75,0xa6,0x01,0x75,0xa7,0xff,0x75,0xa2, - 0x10,0x75,0xa3,0x00,0x75,0xa4,0x00,0x75,0xa5,0x00,0x75,0xa9,0x00,0x75,0xaa,0x00, - 0x75,0xab,0x00,0x75,0xbe,0x00,0x75,0xbf,0x00,0x75,0xc2,0x10,0x75,0xc3,0x11,0x75, - 0xc4,0x01,0x75,0xc5,0x00,0x75,0xc6,0x00,0x75,0xc7,0x00,0x75,0xa1,0x01,0x75,0xa1, - 0x00,0x80,0x21,0x75,0xd2,0x02,0x75,0xd3,0x00,0x75,0xd4,0x10,0x75,0xd5,0x00,0x75, - 0xd6,0x14,0x75,0xd7,0x00,0x75,0xd9,0x00,0x75,0xda,0x00,0x75,0xd1,0x01,0x75,0xd1, - 0x00,0x78,0x2f,0x06,0x7d,0x07,0x7c,0x00,0x7f,0xbd,0x12,0x0c,0x5e,0xe4,0xfd,0x7f, - 0x50,0x12,0x0c,0x5e,0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04, - 0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85, - 0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0, - 0x82,0xc0,0x85,0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0, - 0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0, - 0x94,0xc0,0x93,0x53,0x91,0xbf,0x78,0x2f,0xe6,0xff,0xc3,0x94,0x08,0x50,0x21,0x75, - 0xd4,0x00,0x75,0xd5,0x00,0xef,0x25,0xe0,0x25,0xe0,0x24,0x14,0xf5,0xd6,0x75,0xd7, - 0x00,0x75,0xd9,0x00,0x75,0xda,0x00,0x75,0xd1,0x01,0x75,0xd1,0x00,0x06,0x80,0x40, - 0x75,0xa6,0x01,0x75,0xa7,0xff,0x75,0xa2,0x00,0x75,0xa3,0x00,0x75,0xa4,0x04,0x75, - 0xa5,0x00,0x75,0xa9,0x00,0x75,0xaa,0x04,0x75,0xab,0x00,0x78,0x2d,0xe6,0x60,0x1a, - 0x76,0x00,0x75,0xbe,0x00,0x75,0xbf,0x00,0x75,0xc2,0x10,0x75,0xc3,0x11,0x75,0xc4, - 0x01,0x75,0xc5,0x00,0x75,0xc6,0x00,0x75,0xc7,0x00,0x75,0xa1,0x03,0x75,0xa1,0x02, + 0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0,0x93,0x53,0x91,0xbf,0x78,0x3a,0xe6, + 0xff,0x64,0x09,0x70,0x62,0x75,0xa6,0x01,0x75,0xa7,0xf7,0xf5,0xa3,0x75,0xa4,0x08, + 0xf5,0xa5,0xf5,0xa9,0xf5,0xaa,0xf5,0xab,0x78,0x36,0xe6,0x60,0x1c,0x76,0x00,0x75, + 0xbe,0x00,0x75,0xbf,0x00,0x75,0xc2,0x10,0x75,0xc3,0x11,0x75,0xc4,0x01,0x75,0xc5, + 0x00,0x75,0xc6,0x00,0x75,0xc7,0x00,0x80,0x21,0x78,0x50,0xe6,0xf5,0xbe,0x08,0xe6, + 0xf5,0xbf,0x08,0xe6,0xf5,0xc2,0x08,0xe6,0xf5,0xc3,0x08,0xe6,0xf5,0xc4,0x08,0xe6, + 0xf5,0xc5,0x08,0xe6,0xf5,0xc6,0x08,0xe6,0xf5,0xc7,0x78,0x3b,0x76,0x00,0x75,0xa1, + 0x07,0x75,0xa1,0x06,0x02,0x0e,0x97,0xe5,0xdc,0x20,0xe0,0x0c,0xe5,0xdd,0x70,0x08, + 0xef,0x64,0x08,0x60,0x03,0x02,0x0e,0x76,0x7b,0x00,0x7a,0x00,0x79,0x32,0x7f,0x48, + 0x12,0x12,0x73,0x7a,0x00,0x19,0x7f,0x49,0x12,0x12,0x73,0xe5,0x32,0x25,0xe0,0xff, + 0xe5,0x31,0x33,0xf5,0x31,0x8f,0x32,0x75,0xd5,0x00,0x75,0xd6,0x0f,0x75,0xd7,0xe0, + 0x75,0xda,0x00,0x75,0xd2,0x00,0x75,0xd3,0x10,0xe5,0xdc,0x20,0xe0,0x04,0xe5,0xdd, + 0x60,0x20,0xe4,0x25,0x32,0xff,0xe5,0x31,0x34,0x20,0xf5,0x31,0x8f,0x32,0x7d,0x01, + 0x7c,0x00,0x7f,0x25,0x12,0x12,0x8c,0x75,0xd4,0x20,0x75,0xd9,0x20,0x75,0xa2,0x20, + 0x80,0x1d,0xe4,0x25,0x32,0xff,0xe5,0x31,0x34,0x04,0xf5,0x31,0x8f,0x32,0xe4,0xfd, + 0xfc,0x7f,0x25,0x12,0x12,0x8c,0x75,0xd4,0x04,0x75,0xd9,0x04,0x75,0xa2,0x04,0x78, + 0x3a,0x06,0x75,0x2f,0x00,0x75,0x30,0x00,0xe4,0xfd,0xed,0x75,0xf0,0x02,0xa4,0xff, + 0xc3,0xe5,0x32,0x9f,0xff,0xe5,0x31,0x95,0xf0,0x8f,0x82,0xf5,0x83,0xe0,0xfe,0xa3, + 0xe0,0x25,0x30,0xf5,0x30,0xee,0x35,0x2f,0xf5,0x2f,0x0d,0xbd,0x20,0xdc,0xe5,0x30, + 0xae,0x2f,0x78,0x05,0xce,0xc3,0x13,0xce,0x13,0xd8,0xf9,0xf5,0x30,0x8e,0x2f,0xfd, + 0x7c,0x00,0x7f,0x26,0x12,0x12,0x8c,0xe5,0x2f,0xfd,0x0f,0x12,0x12,0x8c,0x75,0xd1, + 0x03,0x75,0xd1,0x02,0x80,0x21,0x75,0xd4,0x04,0x75,0xd5,0x00,0x78,0x3a,0xe6,0x25, + 0xe0,0x25,0xe0,0x24,0x14,0xf5,0xd6,0x75,0xd7,0x00,0x75,0xda,0x00,0x75,0xd9,0x04, + 0x06,0x75,0xd1,0x01,0x75,0xd1,0x00,0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0, + 0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0, + 0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0, + 0xc0,0x83,0xc0,0x82,0xc0,0x85,0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75, + 0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06, + 0xc0,0x07,0xc0,0x94,0xc0,0x93,0x53,0x91,0xdf,0x78,0x4a,0xe6,0x60,0x3a,0xe5,0xfe, + 0x64,0x0b,0x60,0x05,0xe5,0xfe,0xb4,0x0c,0x14,0x78,0x4a,0x76,0x00,0xe4,0xfd,0xfc, + 0x7f,0x0c,0x12,0x12,0x8c,0x75,0xff,0x03,0xf5,0xff,0x02,0x0f,0x97,0x78,0x34,0xe6, + 0xb4,0x10,0x0f,0x78,0x4a,0x76,0x00,0x7d,0x01,0x7c,0x00,0x7f,0x0c,0x12,0x12,0x8c, + 0x80,0x0c,0x78,0x49,0x76,0x0a,0x80,0x6f,0x78,0x49,0xe6,0xb4,0x0d,0x08,0x75,0xff, + 0x03,0x75,0xff,0x00,0x80,0x61,0x78,0x36,0xe6,0x60,0x3b,0x75,0xa6,0x01,0x75,0xa7, + 0xff,0x75,0xa2,0x10,0x75,0xa3,0x00,0x75,0xa4,0x00,0x75,0xa5,0x00,0x75,0xa9,0x00, + 0x75,0xaa,0x00,0x75,0xab,0x00,0x75,0xbe,0x00,0x75,0xbf,0x00,0x75,0xc2,0x10,0x75, + 0xc3,0x11,0x75,0xc4,0x01,0x75,0xc5,0x00,0x75,0xc6,0x00,0x75,0xc7,0x00,0x75,0xa1, + 0x01,0x75,0xa1,0x00,0x80,0x21,0x75,0xd2,0x02,0x75,0xd3,0x00,0x75,0xd4,0x10,0x75, + 0xd5,0x00,0x75,0xd6,0x14,0x75,0xd7,0x00,0x75,0xd9,0x04,0x75,0xda,0x00,0x75,0xd1, + 0x01,0x75,0xd1,0x00,0x78,0x3a,0x06,0x7d,0x07,0x7c,0x00,0x7f,0xbd,0x12,0x12,0x8c, + 0xe4,0xfd,0x7f,0x50,0x12,0x12,0x8c,0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0, + 0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0, + 0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0, + 0xc0,0x83,0xc0,0x82,0xc0,0x85,0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75, + 0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06, + 0xc0,0x07,0xc0,0x94,0xc0,0x93,0x7b,0x00,0x7a,0x00,0x79,0x49,0x7f,0x0a,0x12,0x12, + 0x73,0x78,0x49,0xe6,0xff,0x64,0x0d,0x60,0x04,0xef,0xb4,0x0f,0x08,0x78,0x3c,0x76, + 0x01,0x78,0x38,0x80,0x1e,0xef,0xb4,0x0e,0x02,0x80,0x46,0xef,0xb4,0x0c,0x02,0x80, + 0x40,0xef,0xb4,0x0b,0x04,0x78,0x4b,0x80,0x0a,0xef,0xb4,0x0a,0x0a,0x78,0x4a,0x76, + 0x01,0x78,0x34,0x76,0x00,0x80,0x2a,0xef,0xb4,0x07,0x06,0x78,0x37,0x76,0x01,0x80, + 0x20,0xef,0xb4,0x08,0x15,0x78,0x33,0x76,0x00,0x78,0x39,0x76,0x0a,0x7b,0x00,0x7a, + 0x00,0x79,0x35,0x7f,0xc0,0x12,0x12,0x73,0x80,0x07,0x78,0x49,0xe6,0xff,0xb4,0x09, + 0x05,0x75,0xff,0x01,0x80,0x0a,0xef,0x70,0x07,0x78,0x3c,0xf6,0x78,0x38,0x76,0x01, 0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02, 0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83, - 0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0x85,0xc0, - 0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0, - 0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0,0x93,0x7b, - 0x00,0x12,0x0c,0x3f,0x78,0x31,0xe6,0xff,0x64,0x0d,0x60,0x04,0xef,0xb4,0x0f,0x04, - 0x78,0x30,0x80,0x2a,0xef,0xb4,0x0e,0x02,0x80,0x26,0xef,0xb4,0x0c,0x02,0x80,0x20, - 0xef,0xb4,0x0b,0x06,0x78,0x33,0x76,0x00,0x80,0x16,0xef,0xb4,0x0a,0x0a,0x78,0x32, - 0x76,0x01,0x78,0x2c,0x76,0x00,0x80,0x08,0xef,0xb4,0x09,0x09,0x78,0x2e,0x76,0x01, - 0x75,0xff,0x01,0x80,0x09,0x7d,0x0d,0x7c,0x00,0x7f,0x07,0x12,0x0c,0x5e,0xd0,0x93, - 0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01, - 0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0, - 0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0x85,0xc0,0x84,0xc0, - 0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0, - 0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0,0x93,0x75,0xd8,0x00, - 0x78,0x2e,0xe6,0x70,0x1f,0xaf,0xc9,0xef,0xfd,0x7c,0x00,0x7f,0x0c,0x12,0x0c,0x5e, - 0xaf,0xcf,0xef,0xfd,0x7f,0x0d,0x12,0x0c,0x5e,0xaf,0xce,0xef,0xfd,0x7f,0x0e,0x12, - 0x0c,0x5e,0x80,0x04,0x78,0x2e,0x76,0x00,0x75,0xff,0x02,0x75,0xff,0x00,0xd0,0x93, - 0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01, - 0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0, - 0xd0,0xe0,0x32,0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83, - 0xe0,0x22,0x50,0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9,0x25,0x82, - 0xf8,0xe2,0x22,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4,0x93,0x22, - 0xbb,0x01,0x06,0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb,0xfe,0x01, - 0xf3,0x22,0xe8,0x60,0x0f,0xec,0xc3,0x13,0xfc,0xed,0x13,0xfd,0xee,0x13,0xfe,0xef, - 0x13,0xff,0xd8,0xf1,0x22,0xe8,0x60,0x0f,0xef,0xc3,0x33,0xff,0xee,0x33,0xfe,0xed, - 0x33,0xfd,0xec,0x33,0xfc,0xd8,0xf1,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82, - 0xc0,0x85,0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00, - 0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94, - 0xc0,0x93,0x53,0x91,0xef,0x7d,0xee,0x7c,0x00,0x7f,0x2b,0x12,0x0c,0x5e,0xd0,0x93, - 0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01, - 0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0, - 0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0x85,0xc0,0x84,0xc0, - 0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0, - 0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0,0x93,0x7d,0xee,0x7c, - 0x00,0x7f,0x09,0x12,0x0c,0x5e,0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05, - 0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84, - 0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xf6,0x7d,0x01,0xfc,0x7f, - 0xbd,0x12,0x0c,0x5e,0x7f,0x50,0x12,0x0c,0x5e,0x7d,0x98,0x7f,0x45,0x12,0x0c,0x5e, - 0x7d,0x39,0x0f,0x12,0x0c,0x5e,0x7f,0x20,0x7e,0x03,0xe4,0xfd,0xfc,0xc3,0xed,0x9f, - 0xec,0x9e,0x50,0x0a,0x00,0x00,0x00,0x0d,0xbd,0x00,0x01,0x0c,0x80,0xef,0x22,0x7a, - 0x00,0x79,0x31,0x7f,0x0a,0x8f,0x93,0x75,0x96,0x01,0xe4,0xff,0x00,0x0f,0xbf,0x02, - 0xfb,0xe5,0x95,0x02,0x0b,0x20,0x7d,0xff,0x7c,0x00,0x12,0x0c,0x5e,0x0f,0x8d,0x94, - 0x8f,0x93,0x75,0x96,0x02,0x22,0xee,0x30,0xe7,0x07,0xc3,0xe4,0x9f,0xff,0xe4,0x9e, - 0xfe,0x22 + 0xd0,0xf0,0xd0,0xe0,0x32,0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a, + 0xf5,0x83,0xe0,0x22,0x50,0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9, + 0x25,0x82,0xf8,0xe2,0x22,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4, + 0x93,0x22,0xbb,0x01,0x06,0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb, + 0xfe,0x01,0xf3,0x22,0xeb,0x9f,0xf5,0xf0,0xea,0x9e,0x42,0xf0,0xe9,0x9d,0x42,0xf0, + 0xe8,0x9c,0x45,0xf0,0x22,0xe8,0x60,0x0f,0xec,0xc3,0x13,0xfc,0xed,0x13,0xfd,0xee, + 0x13,0xfe,0xef,0x13,0xff,0xd8,0xf1,0x22,0xe8,0x60,0x0f,0xef,0xc3,0x33,0xff,0xee, + 0x33,0xfe,0xed,0x33,0xfd,0xec,0x33,0xfc,0xd8,0xf1,0x22,0xa4,0x25,0x82,0xf5,0x82, + 0xe5,0xf0,0x35,0x83,0xf5,0x83,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0, + 0x85,0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0, + 0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0, + 0x93,0x75,0xd8,0x00,0x78,0x37,0xe6,0x70,0x1f,0xaf,0xc9,0xef,0xfd,0x7c,0x00,0x7f, + 0x0c,0x12,0x12,0x8c,0xaf,0xcf,0xef,0xfd,0x7f,0x0d,0x12,0x12,0x8c,0xaf,0xce,0xef, + 0xfd,0x7f,0x0e,0x12,0x12,0x8c,0x80,0x04,0x78,0x37,0x76,0x00,0x75,0xff,0x02,0x75, + 0xff,0x00,0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03, + 0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82, + 0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0, + 0x85,0xc0,0x84,0xc0,0x86,0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0, + 0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0, + 0x93,0x53,0x91,0xef,0x7d,0xee,0x7c,0x00,0x7f,0x2b,0x12,0x12,0x8c,0xd0,0x93,0xd0, + 0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0, + 0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0,0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0, + 0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0x85,0xc0,0x84,0xc0,0x86, + 0x75,0x86,0x00,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03, + 0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x94,0xc0,0x93,0x7d,0xee,0x7c,0x00, + 0x7f,0x09,0x12,0x12,0x8c,0xd0,0x93,0xd0,0x94,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0, + 0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x86,0xd0,0x84,0xd0, + 0x85,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xe4,0xfd,0xfc,0xc3,0xed,0x9f, + 0xec,0x9e,0x50,0x18,0xe4,0xfb,0xfa,0x00,0x00,0x00,0x0b,0xbb,0x00,0x01,0x0a,0xba, + 0x05,0xf5,0xbb,0xd1,0xf2,0x0d,0xbd,0x00,0x01,0x0c,0x80,0xe1,0x22,0x25,0x27,0xf9, + 0xe4,0xfa,0xfb,0x8f,0x93,0x75,0x96,0x01,0xe4,0xff,0x00,0x0f,0xbf,0x02,0xfb,0xe5, + 0x95,0x02,0x10,0xc2,0x7d,0xff,0x7c,0x00,0x12,0x12,0x8c,0x0f,0x8d,0x94,0x8f,0x93, + 0x75,0x96,0x02,0x22 }; uint32_t LoadFirmware(void)
--- a/RegTable.cpp Thu May 28 02:32:15 2020 +0000 +++ b/RegTable.cpp Mon Jun 22 05:27:48 2020 +0000 @@ -6,12 +6,12 @@ 0x00, 0x03, 0x01, 0x00, 0x02, 0x00, - 0x03, 0x01, + 0x03, 0x00, 0x04, 0x01, 0x05, 0x0E, 0x06, 0xD8, - 0x07, 0x0C, - 0x08, 0x00, + 0x07, 0x00, + 0x08, 0xFF, 0x09, 0x00, 0x0A, 0x05, 0x0B, 0x20, @@ -58,7 +58,7 @@ 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, - 0x37, 0x40, + 0x37, 0x58, 0x38, 0x00, 0x39, 0x00, 0x3A, 0x1F, @@ -66,16 +66,16 @@ 0x3C, 0x80, 0x3D, 0x80, 0x3E, 0x00, - 0x3F, 0x00, + 0x3F, 0x80, 0x40, 0x11, - 0x41, 0x03, + 0x41, 0x04, 0x42, 0x11, 0x43, 0x11, 0x44, 0xC1, - 0x45, 0x98, - 0x46, 0x39, + 0x45, 0xFF, + 0x46, 0xFF, 0x47, 0x00, - 0x48, 0x90, + 0x48, 0xDC, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, @@ -84,7 +84,7 @@ 0x4E, 0x00, 0x4F, 0x00, 0x50, 0x00, - 0x51, 0x0D, + 0x51, 0x0E, 0x52, 0x00, 0x53, 0xFF, 0x54, 0x03, @@ -99,35 +99,35 @@ 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, - 0x60, 0x30, - 0x61, 0x73, + 0x60, 0x00, + 0x61, 0x00, 0x62, 0x00, - 0x63, 0x30, - 0x64, 0x73, + 0x63, 0x00, + 0x64, 0x00, 0x65, 0x00, - 0x66, 0x30, - 0x67, 0x73, + 0x66, 0x01, + 0x67, 0x00, 0x68, 0x00, - 0x69, 0x30, - 0x6A, 0x73, + 0x69, 0x03, + 0x6A, 0x00, 0x6B, 0x00, - 0x6C, 0x30, - 0x6D, 0x73, + 0x6C, 0x01, + 0x6D, 0x00, 0x6E, 0x00, - 0x6F, 0x30, - 0x70, 0x73, + 0x6F, 0x01, + 0x70, 0x00, 0x71, 0x00, - 0x72, 0x30, - 0x73, 0x73, + 0x72, 0x04, + 0x73, 0x00, 0x74, 0x00, - 0x75, 0x30, - 0x76, 0x73, + 0x75, 0x03, + 0x76, 0x00, 0x77, 0x00, - 0x78, 0x30, - 0x79, 0x73, + 0x78, 0x01, + 0x79, 0x00, 0x7A, 0x00, - 0x7B, 0x30, - 0x7C, 0x73, + 0x7B, 0x17, + 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00, @@ -195,7 +195,7 @@ 0xBD, 0x07, 0xBE, 0x0F, 0xBF, 0x01, - 0xC0, 0x2D, + 0xC0, 0x1D, 0xC1, 0x00, 0xC2, 0xFF, 0xC3, 0xFF, @@ -235,7 +235,7 @@ 0xE5, 0x01, 0xE6, 0x00, 0xE7, 0x00, - 0xE8, 0x08, + 0xE8, 0x00, 0xE9, 0x00, 0xEA, 0xFF, 0xEB, 0x00, @@ -251,7 +251,7 @@ 0xF5, 0x00, 0xF6, 0x00, 0xF7, 0xFF, - 0xF8, 0x97, + 0xF8, 0xA7, 0xF9, 0x00, 0xFA, 0x00, 0xFB, 0x00,
--- a/main.cpp Thu May 28 02:32:15 2020 +0000 +++ b/main.cpp Mon Jun 22 05:27:48 2020 +0000 @@ -49,7 +49,7 @@ MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3); // Hardware serial port over DAPLink -Serial uart(P3_1, P3_0); +//Serial uart(P3_1, P3_0); I2C i2c_v(P3_4, P3_5); @@ -69,8 +69,10 @@ DigitalOut HIGH_EN(P5_6); DigitalOut A0(P4_0); -DigitalOut PULSE(P5_1); -DigitalOut DI(P5_2); +DigitalOut PULSE(P3_0); +DigitalOut DI(P3_1); + +DigitalOut TRIM_EN(P5_5); SDFileSystem sd(P0_5, P0_6, P0_4, P0_7, "sd"); // mosi, miso, sclk, cs #endif @@ -114,6 +116,7 @@ A0 = 0; DI = 0; PULSE = 0; + TRIM_EN = 0; #endif #ifdef OFILM @@ -134,10 +137,11 @@ SetVoltageAVDD(3.3); - //wait(1); - DUT_RegInit(); - wait(1); + wait(1); + //DUT_RegInit(); + //wait(1); //DUT_FirmwareInit(); + DeviceAllInit(0x68, 0xE2, 0x31); cmd_handle_thread.start(CmdHandleTask); coutinu_measure_thread.start(ContinuousMeasureReport);