From 0c299b56c6e8a3049c43e254ad20ace29f8e3045 Mon Sep 17 00:00:00 2001 From: David Fainitski Date: Thu, 14 Jan 2021 18:19:21 -0800 Subject: [PATCH] Add files via upload --- .../2520_EXT_board_sources_V_3.2/2520.cfgsch | 146 + .../atu_100_fw_00.cfg | 42 + .../atu_100_fw_00.ihex | 18 + .../atu_100_fw_00.log | 16 + .../atu_100_fw_00.mcppi | 68 + .../atu_100_fw_00.mcppi_callertable.txt | 4242 +++++++++++++++++ .../atu_100_fw_00_callertable.txt | 3575 ++++++++++++++ .../2520_EXT_board_sources_V_3.2/backup.c | 2 + .../2520_EXT_board_sources_V_3.2/backup.c.ini | 9 + .../2520_EXT_board_sources_V_3.2/backup.mcl | Bin 0 -> 931 bytes .../2520_EXT_board_sources_V_3.2/font5x8.h | 100 + .../font5x8.h.ini | 9 + .../2520_EXT_board_sources_V_3.2/main.c | 886 ++++ .../2520_EXT_board_sources_V_3.2/main.c.ini | 9 + .../2520_EXT_board_sources_V_3.2/main.h | 396 ++ .../2520_EXT_board_sources_V_3.2/main.h.ini | 9 + .../2520_EXT_board_sources_V_3.2/main.ini | 9 + .../2520_EXT_board_sources_V_3.2/main.mcl | Bin 0 -> 257012 bytes .../2520_EXT_board_sources_V_3.2/main_main.h | 521 ++ .../oled_control.c | 407 ++ .../oled_control.c.ini | 9 + .../oled_control.h | 30 + .../oled_control.h.ini | 9 + .../oled_control.mcl | Bin 0 -> 49893 bytes .../2520_EXT_board_sources_V_3.2/pic_init.c | 31 + .../pic_init.c.ini | 9 + .../2520_EXT_board_sources_V_3.2/pic_init.h | 27 + .../pic_init.h.ini | 9 + .../2520_EXT_board_sources_V_3.2/pic_init.mcl | Bin 0 -> 2709 bytes 29 files changed, 10588 insertions(+) create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/2520.cfgsch create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.cfg create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.ihex create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.log create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi_callertable.txt create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00_callertable.txt create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.mcl create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/font5x8.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/font5x8.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.mcl create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main_main.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.mcl create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h.ini create mode 100644 ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.mcl diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/2520.cfgsch b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/2520.cfgsch new file mode 100644 index 0000000..2f42b33 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/2520.cfgsch @@ -0,0 +1,146 @@ + + + + P18F2520 + 16 + + 34 + + Oscillator Selection + Internal oscillator block, port function on RA6 and RA7 + + + Fail-Safe Clock Monitor + Disabled + + + Internal/External Oscillator Switchover + Disabled + + + Power-up Timer + Enabled + + + Brown-out Reset + Enabled + + + Brown Out Reset Voltage + Minimum setting + + + Watchdog Timer + Enabled + + + Watchdog Timer Postscale + 1:256 + + + CCP2 MUX bit + CCP2 input/output is multiplexed with RC1 + + + PORTB A/D + Disabled + + + Low-Power Timer1 Oscillator + Disabled + + + MCLR Pin + Enabled + + + Stack Full/Underflow Reset + Enabled + + + Low Voltage Program + Disabled + + + Extended Instruction Set + Disabled + + + Background Debug + Disabled + + + Code Protection (Block 0) + Block 0 (000800-001FFFh) is not code-protected + + + Code Protection (Block 1) + Block 1 (002000-003FFFh) is not code-protected + + + Code Protection (Block 2) + Block 2 (004000-005FFFh) is not code-protected + + + Code Protection (Block 3) + Block 3 (006000-007FFFh) is not code-protected + + + Boot Block Code Protection + Disabled + + + Data EEPROM Code Protection + Disabled + + + Write Protection (Block 0) + Block 0 (000800-001FFFh) or (001000-001FFFh) is not write-protected + + + Write Protection (Block 1) + Block 1 (002000-003FFFh) is not write-protected + + + Write Protection (Block 2) + Block 2 (004000-005FFFh) is not write-protected + + + Write Protection (Block 3) + Block 3 (006000-007FFFh) is not write-protected + + + Configuration Register Write Protection + Disabled + + + Boot Block Write Protection + Disabled + + + Data EEPROM Write Protection + Disabled + + + Table Read Protection (Block 0) + Block 0 (000800-001FFFh) is not protected from table reads executed in other blocks + + + Table Read Protection (Block 1) + Block 1 (002000-003FFFh) is not protected from table reads executed in other blocks + + + Table Read Protection (Block 2) + Block 2 (004000-005FFFh) not protected from table reads executed in other blocks + + + Table Read Protection bi (Block 3) + Block 3 (006000-007FFFh) not protected from table reads executed in other blocks + + + Boot Block Table Read Protection + Disabled + + + + diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.cfg b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.cfg new file mode 100644 index 0000000..1401434 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.cfg @@ -0,0 +1,42 @@ + + + + P18F2520 + + 11 + + $300001:$0008 + + + $300002:$001A + + + $300003:$0011 + + + $300005:$0081 + + + $300006:$0081 + + + $300008:$000F + + + $300009:$00C0 + + + $30000A:$000F + + + $30000B:$00E0 + + + $30000C:$000F + + + $30000D:$0040 + + + + diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.ihex b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.ihex new file mode 100644 index 0000000..34e719e --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.ihex @@ -0,0 +1,18 @@ +:0200000400F00A +:100000004E01001513050001020007000700010062 +:100010000050011002200450100022004500FFFF94 +:100020000010002200470100022004701000FFFFB2 +:10003000001000010000FFFFFFFFFFFFFFFFFFFFB9 +:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +:10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +:10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +:1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +:1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +:1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +:1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +:1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +:1000F000FFFFFFFFFFFFFFFFFFFFFFFFFF0100000C +:00000001FF diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.log b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.log new file mode 100644 index 0000000..42c0ac6 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.log @@ -0,0 +1,16 @@ +0 1 mikroCPIC1618.exe -MSF -DBG -pP18F2520 -DL -O11111114 -fo16 -EH"D:\Projects\ATU-100\fw_EXT_3.2\2520_EXT_board_sources_V_3.2\atu_100_fw_00.ihex" -N"D:\Projects\ATU-100\fw_EXT_3.2\2520_EXT_board_sources_V_3.2\atu_100_fw_00.mcppi" -SP"C:\Users\ROLIN\Documents\Mikroelektronika\mikroC PRO for PIC\Defs\" -SP"C:\Users\ROLIN\Documents\Mikroelektronika\mikroC PRO for PIC\uses\P18\" -SP"D:\Projects\ATU-100\fw_EXT_3.2\2520_EXT_board_sources_V_3.2\" -IP"C:\Users\ROLIN\Documents\Mikroelektronika\mikroC PRO for PIC\uses\P18\" "pic_init.c" "oled_control.c" "main.c" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_Conversions.mcl" "__Lib_Button.mcl" "__Lib_ADC_A_D.mcl" "__Lib_EEPROM_256.mcl" +hint: 0 1139 Available RAM: 1515 [bytes], Available ROM: 32768 [bytes] +diagnostics: 0 122 Compilation Started pic_init.c +diagnostics: 31 123 Compiled Successfully pic_init.c +diagnostics: 0 122 Compilation Started oled_control.h +diagnostics: 407 123 Compiled Successfully oled_control.c +diagnostics: 0 122 Compilation Started oled_control.h +diagnostics: 884 123 Compiled Successfully main.c +hint: 625 1164 Variable 'delta' has been eliminated by optimizer main.c +diagnostics: 0 127 All files Compiled in 219 ms +hint: 0 1144 Used RAM (bytes): 859 (57%) Free RAM (bytes): 656 (43%) Used RAM (bytes): 859 (57%) Free RAM (bytes): 656 (43%) +hint: 0 1144 Used ROM (bytes): 25768 (79%) Free ROM (bytes): 7000 (21%) Used ROM (bytes): 25768 (79%) Free ROM (bytes): 7000 (21%) +diagnostics: 0 125 Project Linked Successfully atu_100_fw_00.mcppi +diagnostics: 0 128 Linked in 63 ms +diagnostics: 0 129 Project 'atu_100_fw_00.mcppi' completed: 297 ms +diagnostics: 0 103 Finished successfully: 05 Jan 2021, 14:36:44 atu_100_fw_00.mcppi diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi new file mode 100644 index 0000000..af79c64 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi @@ -0,0 +1,68 @@ +[DEVICE] +Name=P18F2520 +Clock=16000000 +[MEMORY_MODEL] +Value=0 +[BUILD_TYPE] +Value=0 +[ACTIVE_TAB] +Value=main.h +[USE_EEPROM] +Value=1 +[EEPROM_DEFINITION] +Value= +[USE_HEAP] +Value=0 +[HEAP_SIZE] +Value=2000 +[FILES] +File0=pic_init.c +File1=oled_control.c +File2=main.c +Count=3 +[BINARIES] +Count=0 +[IMAGES] +Count=0 +ActiveImageIndex=-1 +[OPENED_FILES] +File0=main.h +File1=oled_control.c +File2=oled_control.h +File3=main.c +File4=pic_init.c +File5=pic_init.h +Count=6 +[EEPROM] +File0=atu_100_fw_00.ihex +Count=1 +[ACTIVE_COMMENTS_FILES] +Count=0 +[OTHER_FILES] +Count=0 +[SEARCH_PATH] +Count=0 +[HEADER_PATH] +Count=0 +[HEADERS] +File0=main.h +File1=oled_control.h +File2=pic_init.h +Count=3 +[PLDS] +Count=0 +[Useses] +File0=ADC +File1=Conversions +File2=Button +File3=EEPROM +Count=4 +[EXPANDED_NODES] +Count=0 +[LIB_EXPANDED_NODES] +0=mikroE Libraries +1=System Libraries +57=C_Math +126=EEPROM +162=FLASH +Count=6 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi_callertable.txt b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi_callertable.txt new file mode 100644 index 0000000..a6e454f --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00.mcppi_callertable.txt @@ -0,0 +1,4242 @@ +main + __CC2DW + pic_init + ADC_Init + cells_init + EEPROM_Read + Bcd2Dec + Soft_I2C_Init + EEPROM_Read + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + led_init + EEPROM_Read + oled_init + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_addressing + Soft_I2C_Start + Soft_I2C_Write + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_cap + VDelay_ms + Mul_32x32_U + set_ind + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Read + lcd_prep + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + Test_init + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_prep + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + button_proc + Button + Delay_500us + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + btn_push + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + tune + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sub_tune + coarse_tune + Div_16x16_S + Div_16x16_S_L + set_ind + VDelay_ms + Mul_32x32_U + coarse_cap + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + Div_16x16_S + Div_16x16_S_L + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_cap + VDelay_ms + Mul_32x32_U + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sharp_ind + set_ind + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sharp_cap + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_sw + VDelay_ms + Mul_32x32_U + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + sharp_ind + set_ind + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sharp_cap + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + EEPROM_Write + Div_16x16_S + Div_16x16_S_L + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + EEPROM_Write + button_proc_test + Button + Delay_500us + set_sw + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + button_delay + Button + Delay_500us + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + dysp_off + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00_callertable.txt b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00_callertable.txt new file mode 100644 index 0000000..776c5d5 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/atu_100_fw_00_callertable.txt @@ -0,0 +1,3575 @@ +main + __CC2DW + pic_init + ADC_Init + cells_init + EEPROM_Read + Bcd2Dec + Soft_I2C_Init + EEPROM_Read + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + led_init + EEPROM_Read + oled_init + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_addressing + Soft_I2C_Start + Soft_I2C_Write + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + set_cap + VDelay_ms + Mul_32x32_U + set_ind + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + Button + Delay_500us + EEPROM_Read + Bcd2Dec + show_loss + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + Dec2Bcd + Div_8X8_U + EEPROM_Write + lcd_prep + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + Test_init + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_prep + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + button_proc + Button + Delay_500us + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + btn_push + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + tune + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + sub_tune + coarse_tune + Div_16x16_S + Div_16x16_S_L + set_ind + VDelay_ms + Mul_32x32_U + coarse_cap + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + Div_16x16_S + Div_16x16_S_L + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + set_cap + VDelay_ms + Mul_32x32_U + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + sharp_ind + set_ind + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + sharp_cap + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + set_sw + VDelay_ms + Mul_32x32_U + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + sharp_ind + set_ind + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + sharp_cap + set_cap + VDelay_ms + Mul_32x32_U + get_swr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + show_pwr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Compare_Double + double2int + SETIOV3224 + Button + Delay_500us + show_reset + atu_reset + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + EEPROM_Write + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + EEPROM_Write + Div_16x16_S + Div_16x16_S_L + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + EEPROM_Write + button_proc_test + Button + Delay_500us + set_sw + VDelay_ms + Mul_32x32_U + lcd_ind + IntToStr + WordToStr + Div_16X16_U + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_pwr + get_pwr + get_forward + ADC_Get_Sample + Delay_22us + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + get_reverse + ADC_Get_Sample + Delay_22us + word2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + Mul_16X16_U + correction + int2double + NRM3232 + RES032 + SETFUN32 + FIXSIGN32 + Mul_32x32_U + longint2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Div_32x32_S + SDIV3232L + COMFREM + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + Div_32x32_FP + SETFDZ32 + RES032 + SETFOV32 + SETFUN32 + Add_32x32_FP + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + SETFOV32 + double2int + SETIOV3224 + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + set_sw + VDelay_ms + Mul_32x32_U + dysp_on + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + byte2double + NRM4032 + SETFUN32 + FIXSIGN32 + SETFOV32 + RES032 + Mul_32x32_FP + RES032 + SETFOV32 + SETFUN32 + double2int + SETIOV3224 + button_delay + Button + Delay_500us + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + lcd_swr + led_wr_str + oled_wr_str + Soft_I2C_Start + Soft_I2C_Write + set_addressing + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + IntToStr + WordToStr + Div_16X16_U + set_ind + VDelay_ms + Mul_32x32_U + set_cap + VDelay_ms + Mul_32x32_U + dysp_off + send_command + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop + led_send + Soft_I2C_Start + Soft_I2C_Write + Soft_I2C_Stop diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c new file mode 100644 index 0000000..99a8091 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c @@ -0,0 +1,2 @@ + + diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c.ini new file mode 100644 index 0000000..226e6ad --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=3 +Column=1 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/backup.mcl new file mode 100644 index 0000000000000000000000000000000000000000..48858cb23f9d7da94265ab41df4b8cad3887c482 GIT binary patch literal 931 zcmZXO%TB{E5JfLVm5`9=pP&xuBUx4{Q6mLZIbn^UOBS$zO+JP_KL#v#zaN4ywlgl$ zSf26q8ISMmq(v8i;W*{!b$pz!^2M$>jWSB27%TR6c(6D+JK0>IbJ5w(;U3j>jjpS% z*(YwTi}-hjUjB+*kd>zI6Wr(aUN}&2)qZHntj(c^ETH8Jay^_w54j%Bo|M(3+AGl> zp5?pKtPh`;gdCB-c{<*{%7($yY=L*nBbZ3^0A?V12s0Etf*FY(!;D48FtO+aCJ{|+ z%puO!I?P0D&LK6nr{GUK0Eg6g1d +0x02, 0x01, 0x51, 0x09, 0x06,// ? +0x32, 0x49, 0x79, 0x41, 0x3E,// @ +0x7E, 0x11, 0x11, 0x11, 0x7E,// A +0x7F, 0x49, 0x49, 0x49, 0x36,// B +0x3E, 0x41, 0x41, 0x41, 0x22,// C +0x7F, 0x41, 0x41, 0x22, 0x1C,// D +0x7F, 0x49, 0x49, 0x49, 0x41,// E +0x7F, 0x09, 0x09, 0x01, 0x01,// F +0x3E, 0x41, 0x41, 0x51, 0x32,// G +0x7F, 0x08, 0x08, 0x08, 0x7F,// H +0x00, 0x41, 0x7F, 0x41, 0x00,// I +0x20, 0x40, 0x41, 0x3F, 0x01,// J +0x7F, 0x08, 0x14, 0x22, 0x41,// K +0x7F, 0x40, 0x40, 0x40, 0x40,// L +0x7F, 0x02, 0x04, 0x02, 0x7F,// M +0x7F, 0x04, 0x08, 0x10, 0x7F,// N +0x3E, 0x41, 0x41, 0x41, 0x3E,// O +0x7F, 0x09, 0x09, 0x09, 0x06,// P +0x3E, 0x41, 0x51, 0x21, 0x5E,// Q +0x7F, 0x09, 0x19, 0x29, 0x46,// R +0x46, 0x49, 0x49, 0x49, 0x31,// S +0x01, 0x01, 0x7F, 0x01, 0x01,// T +0x3F, 0x40, 0x40, 0x40, 0x3F,// U +0x1F, 0x20, 0x40, 0x20, 0x1F,// V +0x7F, 0x20, 0x18, 0x20, 0x7F,// W +0x63, 0x14, 0x08, 0x14, 0x63,// X +0x03, 0x04, 0x78, 0x04, 0x03,// Y +0x61, 0x51, 0x49, 0x45, 0x43,// Z +0x00, 0x00, 0x7F, 0x41, 0x41,// [ +0x02, 0x04, 0x08, 0x10, 0x20,// "\" +0x41, 0x41, 0x7F, 0x00, 0x00,// ] +0x04, 0x02, 0x01, 0x02, 0x04,// ^ +0x40, 0x40, 0x40, 0x40, 0x40,// _ +0x00, 0x01, 0x02, 0x04, 0x00,// ` +0x20, 0x54, 0x54, 0x54, 0x78,// a +0x7F, 0x48, 0x44, 0x44, 0x38,// b +0x38, 0x44, 0x44, 0x44, 0x20,// c +0x38, 0x44, 0x44, 0x48, 0x7F,// d +0x38, 0x54, 0x54, 0x54, 0x18,// e +0x08, 0x7E, 0x09, 0x01, 0x02,// f +0x08, 0x14, 0x54, 0x54, 0x3C,// g +0x7F, 0x08, 0x04, 0x04, 0x78,// h +0x00, 0x44, 0x7D, 0x40, 0x00,// i +0x20, 0x40, 0x44, 0x3D, 0x00,// j +0x00, 0x7F, 0x10, 0x28, 0x44,// k +0x00, 0x41, 0x7F, 0x40, 0x00,// l +0x7C, 0x04, 0x18, 0x04, 0x78,// m +0x7C, 0x08, 0x04, 0x04, 0x78,// n +0x38, 0x44, 0x44, 0x44, 0x38,// o +0x7C, 0x14, 0x14, 0x14, 0x08,// p +0x08, 0x14, 0x14, 0x18, 0x7C,// q +0x7C, 0x08, 0x04, 0x04, 0x08,// r +0x48, 0x54, 0x54, 0x54, 0x20,// s +0x04, 0x3F, 0x44, 0x40, 0x20,// t +0x3C, 0x40, 0x40, 0x20, 0x7C,// u +0x1C, 0x20, 0x40, 0x20, 0x1C,// v +0x3C, 0x40, 0x30, 0x40, 0x3C,// w +0x44, 0x28, 0x10, 0x28, 0x44,// x +0x0C, 0x50, 0x50, 0x50, 0x3C,// y +0x44, 0x64, 0x54, 0x4C, 0x44,// z +0x00, 0x08, 0x36, 0x41, 0x00,// { +0x00, 0x00, 0x7F, 0x00, 0x00,// | +0x00, 0x41, 0x36, 0x08, 0x00,// } +0x08, 0x08, 0x2A, 0x1C, 0x08,// -> +0x08, 0x1C, 0x2A, 0x08, 0x08 // <- +}; +// diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/font5x8.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/font5x8.h.ini new file mode 100644 index 0000000..2879890 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/font5x8.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=19 +Column=43 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c new file mode 100644 index 0000000..08e8824 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c @@ -0,0 +1,886 @@ + // ATU-100 project + // David Fainitski + // 2016 + +#include "oled_control.h" +#include "pic_init.h" +#include "main.h" + + +// Variables + int SWR_fixed_old = 0, work_int; + char work_char, work_str[7], work_str_2[7]; + float Forward; + int Power =0, Power_old = 10000; + int SWR_old = 10000; + char type, Soft_tune = 0, Auto = 0, Track = 0; + char bypas = 0, cap_mem = 0, ind_mem = 0, SW_mem = 0, Auto_mem = 0; + int Auto_delta; + char Restart = 0, Test = 0, lcd_prep_short = 0; + char L = 1, but= 0; + int Cap1, Cap2, Cap3, Cap4, Cap5, Cap6, Cap7; + int Ind1, Ind2, Ind3, Ind4, Ind5, Ind6, Ind7; + char Dysp_delay = 0; + int dysp_cnt = 0; + float dysp_cnt_mult = 2.3; + char Loss_mode = 0, Fid_loss; + char dysp = 1; + bit tune_btn_release; +//void interrupt () { +//} + + +void main() { + if(RCON.B3==0) Restart = 1; + pic_init(); + // + Delay_ms (300); + asm CLRWDT; + cells_init(); + Soft_I2C_Init(); + if(type==0) { // 2-colors led reset + LATB.B6 = 1; + LATB.B7 = 1; + } + dysp_cnt = Dysp_delay * dysp_cnt_mult; + // + Delay_ms(300); + asm CLRWDT; + // + if(PORTB.B1==0 & PORTB.B2==0) { // Test mode + Test = 1; + Auto =0; + } + if(L_q==5)L_mult = 1; + else if(L_q==6) L_mult = 2; + else if(L_q==7) L_mult = 4; + if(C_q==5) C_mult =1; + else if(C_q==6) C_mult = 2; + else if(C_q==7) C_mult = 4; + + Delay_ms(300); + asm CLRWDT; + Delay_ms(300); + asm CLRWDT; + Delay_ms(300); + asm CLRWDT; + Delay_ms(300); + asm CLRWDT; + Delay_ms(300); + asm CLRWDT; + + led_init(); + + if(PORTB.B1==0 & PORTB.B2==0 & PORTB.B0==0) { // Fast Test mode (loop) + if(type==4 | type==5) led_wr_str (0, 12, "FAST TEST", 9); // 128*64 + else if(type!=0) led_wr_str (0, 3, "FAST TEST", 9); // 1602 | 128*32 + set_cap(255); + if(L_invert==0) set_ind(255); + else set_ind(0); + set_sw(1); + asm CLRWDT; + while(1) {Delay_ms(500);asm CLRWDT;} + } + asm CLRWDT; + // + if(Button(&PORTB, 0, 100, 0)) { // Fider loss input + if(type==4 | type==5) { led_wr_str (0, 6, "Fider Loss", 10); // 128*64 + led_wr_str (2, 6, "input", 5); + led_wr_str (4, 6+3*12, "dB", 2);} + else if(type!=0) { led_wr_str (0, 0, "Fider Loss input", 16); // 1602 | 128*32 + led_wr_str (1, 3, "dB", 2);} + Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + show_loss(); + // + while(1) { + if(Button(&PORTB, 2, 50, 0)){ // BYP button + if(Fid_loss<99) { + Fid_loss ++; + show_loss(); + EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + } + while(Button(&PORTB, 2, 50, 0)) asm CLRWDT; + } + // + if(Button(&PORTB, 1, 50, 0)){ // AUTO button + if(Fid_loss>0) { + Fid_loss --; + show_loss(); + EEPROM_Write(0x34, Dec2Bcd(Fid_loss)); + } + while(Button(&PORTB, 1, 50, 0)) asm CLRWDT; + } + asm CLRWDT; + } // while + } // Fider loss input + // + if(Test==0) { + cap = EEPROM_Read(255); + ind = EEPROM_Read(254); + SW = EEPROM_Read(253); + swr_a = EEPROM_Read(252) * 256; + swr_a += EEPROM_Read(251); + set_ind(ind); + set_cap(cap); + set_sw(SW); + if(Restart==1 ) lcd_prep_short = 1; + lcd_prep(); + } + else Test_init(); + + lcd_ind(); + tune_btn_release = 1; + + + + //******************************* + + while(1) { + asm CLRWDT; + lcd_pwr(); + // + if(Test==0) button_proc(); + else button_proc_test(); + // + if(dysp_cnt!=0) dysp_cnt --; + else if(Test==0 & Dysp_delay!=0 & dysp==1){ + if(Relay_off){ + set_ind(0); + set_cap(0); + set_SW(0); + } + dysp = 0; + dysp_off(); + } + + // next While code + + } +} + + +//***************** Routines ***************** + + void button_proc_test(void) { + if(Button(&PORTB, 0, 50, 0)){ // Tune btn + Delay_ms(250); + asm CLRWDT; + if(PORTB.B0==1) { // short press button + if(SW==0) SW = 1; else SW = 0; + set_sw(SW); + lcd_ind(); + } + else { // long press button + if(L==1) L = 0; else L = 1; + if(L==1) { + if(type==4 |type==5) // 128*64 OLED + led_wr_str (0, 16+12*8, "l", 1); + else if(type!=0) // 1602 LCD & 128*32 OLED + led_wr_str (0, 8, "l", 1); + } + else { + if(type==4 |type==5) // 128*64 OLED + led_wr_str (0, 16+12*8, "c", 1); + else if(type!=0) // 1602 LCD & 128*32 OLED + led_wr_str (0, 8, "c", 1); + } + } + while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } // END Tune btn + // + if(Button(&PORTB, 2, 50, 0)){ // BYP button + asm CLRWDT; + while(PORTB.B2==0) { + if(L & ind<32*L_mult-1) { + ind ++; + set_ind(ind); + } + else if(!L & cap<32*L_mult-1) { + cap ++; + set_cap(cap); + } + lcd_ind(); + lcd_pwr(); + Delay_ms(30); + asm CLRWDT; + } + } // end of BYP button + // + if(Button(&PORTB, 1, 50, 0) & Bypas==0){ // Auto button + asm CLRWDT; + while(PORTB.B1==0) { + if(L & ind>0) { + ind --; + set_ind(ind); + } + else if(!L & cap>0) { + cap --; + set_cap(cap); + } + lcd_ind(); + lcd_pwr(); + Delay_ms(30); + asm CLRWDT; + } + } + return; +} + + +void button_proc(void) { + if(tune_btn_release==0 & Button(&PORTB, 0, 50, 1)) tune_btn_release = 1; + if(tune_btn_release==0 & Button(&PORTB, 0, 50, 0)) dysp_cnt = Dysp_delay * dysp_cnt_mult; + if((Button(&PORTB, 0, 50, 0) & tune_btn_release) | Soft_tune){ + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + Delay_ms(250); + asm CLRWDT; + if(Soft_tune == 0 & PORTB.B0==1) { // short press button + show_reset(); + bypas =0; + } + else { // long press button + p_Tx = 1; // + n_Tx = 0; // TX request + Delay_ms(250); // + btn_push(); + bypas = 0; + Soft_tune = 0; + tune_btn_release = 0; + } + } + // + if(Button(&PORTB, 2, 50, 0)){ // BYP button + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + asm CLRWDT; + if(bypas == 0) { + bypas = 1; + cap_mem = cap; + ind_mem = ind; + SW_mem = SW; + cap = 0; + if(L_invert) ind = 255; + else ind = 0; + SW = 1; + set_ind(ind); + set_cap(cap); + set_SW(SW); + if(Loss_mode==0) lcd_ind(); + Auto_mem = Auto; + Auto = 0; + } + else { + bypas = 0; + cap = cap_mem; + ind = ind_mem; + SW = SW_mem; + set_cap(cap); + set_ind(ind); + set_SW(SW); + if(Loss_mode==0) lcd_ind(); + Auto = Auto_mem; + } + if(type==4 | type==5) { // 128*64 OLED + if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + else led_wr_str (0, 16+8*12, " ", 1); + } + else if(type!=0) { // 1602 LCD or 128*32 OLED + if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + else led_wr_str (0, 8, " ", 1); + } + asm CLRWDT; + while(Button(&PORTB, 2, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } + // + if(Button(&PORTB, 1, 50, 0) & Bypas==0){ // Auto button + dysp_on(); + dysp_cnt = Dysp_delay * dysp_cnt_mult; + asm CLRWDT; + if(Auto == 0) Auto = 1; + else Auto = 0; + EEPROM_Write(2, Auto); + if(type==4 | type==5) { // 128*64 OLED + if(Auto & !Bypas) led_wr_str (0, 16+8*12, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 16+8*12, "_", 1); + else led_wr_str (0, 16+8*12, " ", 1); + } + else if(type!=0) { // 1602 LCD or 128*32 OLED + if(Auto & !Bypas) led_wr_str (0, 8, ".", 1); + else if(!Auto & Bypas) led_wr_str (0, 8, "_", 1); + else led_wr_str (0, 8, " ", 1); + } + asm CLRWDT; + while(Button(&PORTB, 1, 50, 0)) {lcd_pwr(); asm CLRWDT; } + } + return; +} + +void show_reset() { + atu_reset(); + SW = 1; + set_sw(SW); + EEPROM_Write(255, 0); + EEPROM_Write(254, 0); + EEPROM_Write(253, 1); + EEPROM_Write(252, 0); + EEPROM_Write(251, 0); + lcd_ind(); + Loss_mode = 0; + p_Tx = 0; + n_Tx = 1; + SWR = 0; + PWR = 0; + SWR_fixed_old = 0; + if(type==4 | type==5) { // 128*64 OLED + led_wr_str (2, 16, "RESET ", 8); + asm CLRWDT; + delay_ms(600); + led_wr_str (2, 16, "SWR=0.00", 8); + asm CLRWDT; + } + else if(type!=0) {// 1602 LCD & 128*32 OLED + led_wr_str (1, 0, "RESET ", 8); + asm CLRWDT; + delay_ms(600); + led_wr_str (1, 0, "SWR=0.00", 8); + asm CLRWDT; + } + else { + LATB.B6 = 1; + LATB.B7 = 1; + } + SWR_old = 10000; + Power_old = 10000; + lcd_pwr(); + return; +} + +void btn_push() { + asm CLRWDT; + if(type==4 | type==5) { // 128*64 OLED + led_wr_str (2, 16+12*4, "TUNE", 4); + } + else if(type!=0) { // 1602 LCD & 128*32 OLED + led_wr_str (1, 4, "TUNE", 4); + } + else { + LATB.B6 = 1; + LATB.B7 = 1; + } + tune(); + if(type==0) { // real-time 2-colors led work + if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } // Green + else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} // Orange + else { PORTB.B6 = 1; PORTB.B7 = 0; } // Red + } + else if(Loss_mode==0 | Loss_ind==0) lcd_ind(); + EEPROM_Write(255, cap); + EEPROM_Write(254, ind); + EEPROM_Write(253, SW); + EEPROM_Write(252, swr_a/256); + EEPROM_Write(251, swr_a%256); + SWR_old = 10000; + Power_old = 10000; + lcd_pwr(); + SWR_fixed_old = SWR; + p_Tx = 0; + n_Tx = 1; + asm CLRWDT; + return; +} + + + void lcd_prep() { + asm CLRWDT; + if(type==4 |type==5){ // 128*64 OLED + if(lcd_prep_short==0) { + led_wr_str (0, 22, "ATU-100", 7); + led_wr_str (2, 6, "EXT board", 9); + led_wr_str (4, 16, "by N7DDC", 8); + led_wr_str (6, 4, "FW ver 3.2", 10); + asm CLRWDT; + Delay_ms(600); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 16, " ", 8); + led_wr_str (2, 4, " ", 10); + led_wr_str (4, 16, " ", 8); + led_wr_str (6, 4, " ", 10); + } + Delay_ms(150); + if(P_High==1) led_wr_str (0, 16, "PWR= 0W", 8); + else led_wr_str (0, 16, "PWR=0.0W", 8); + led_wr_str (2, 16, "SWR=0.00", 8); + if(Auto) led_wr_str (0, 16+8*12, ".", 1); + } + else if(type!=0) { // 1602 LCD & 128*32 OLED + if(lcd_prep_short==0) { + led_wr_str (0, 4, "ATU-100", 7); + led_wr_str (1, 3, "EXT board", 9); + asm CLRWDT; + Delay_ms(700); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 4, "by N7DDC", 8); + led_wr_str (1, 3, "FW ver 3.2", 10); + asm CLRWDT; + Delay_ms(600); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + led_wr_str (0, 4, " ", 8); + led_wr_str (1, 3, " ", 10); + } + Delay_ms(150); + if(P_High==1) led_wr_str (0, 0, "PWR= 0W", 8); + else led_wr_str (0, 0, "PWR=0.0W", 8); + led_wr_str (1, 0, "SWR=0.00", 8); + if(Auto) led_wr_str (0, 8, ".", 1); + } + asm CLRWDT; + lcd_ind(); + return; +} + + +void lcd_swr(int swr) { + asm CLRWDT; + if(swr!=SWR_old) { + SWR_old = swr; + if(SWR==0) { // Low power + if(type==4 | type==5) led_wr_str (2, 16+4*12, "0.00", 4); // 128*64 OLED + else if(type!=0) led_wr_str (1, 4, "0.00", 4); // 1602 & 128*32 OLED + else if(type==0) { // real-time 2-colors led work + LATB.B6 = 1; + LATB.B7 = 1; + } + SWR_old = 0; + } + else { + IntToStr(swr, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = '.'; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + if(type==4 | type==5) led_wr_str (2, 16+4*12, work_str_2, 4); // 128*64 OLED + else if(type!=0) led_wr_str (1, 4, work_str_2, 4); // 1602 & 128*32 + else if(type==0) { // real-time 2-colors led work + if(swr<=150) { LATB.B6 = 0; LATB.B7 = 1; } // Green + else if(swr<=250) {PORTB.B6 = 0; PORTB.B7 = 0;} // Orange + else { PORTB.B6 = 1; PORTB.B7 = 0; } // Red + } + } + } + asm CLRWDT; + return; +} + + +void button_delay() { + if((Button(&PORTB, 0, 25, 0)) | (Button(&PORTB, 1, 25, 0)) | (Button(&PORTB, 2, 25, 0))) { + but = 1; + } + return; +} + +void show_pwr(int Power, int SWR) { + int p_ant, eff; + float a, b; + a = 100; + asm CLRWDT; + // + if(Test==0 & Loss_ind==1 & Power>=10) { + if(Loss_mode==0) { // prepare + if(type==4 |type==5){ // 128*64 OLED + if(P_High==1) led_wr_str(4, 16, "ANT= 0W", 8); + else led_wr_str(4, 16, "ANT=0.0W", 8); + led_wr_str(6, 16, "EFF= 0%", 8); + } + else if(type==2 | type==3) { // 128*32 OLED + if(P_High==1) led_wr_str (0, 9, "ANT= 0W", 8); + else led_wr_str (0, 9, "ANT=0.0W", 8); + led_wr_str (1, 9, "EFF= 0%", 8); + } + else if(type==1) { // 1602 LCD + if(P_High==1) led_wr_str (0, 9, "AN= 0W", 7); + else led_wr_str (0, 9, "AN=0.0W", 7); + led_wr_str (1, 9, "EFF= 0%", 7); + } + } + Loss_mode = 1; + } + else { + if(Loss_mode==1) lcd_ind(); + Loss_mode = 0; + } + asm CLRWDT; + if(Power != Power_old) { + Power_old = Power; + // + if(P_High==0) { + if(Power >= 100) { // > 10 W + Power += 5; // rounding to 1 W + IntToStr(Power, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = 'W'; + } + else { + IntToStr(Power, work_str); + if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + work_str_2[3] = 'W'; + } + } + else { // High Power + if(Power<999){ // 0 - 999 Watt + IntToStr(Power, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = work_str[4]; + work_str_2[2] = work_str[5]; + work_str_2[3] = 'W'; + } + else { + IntToStr(Power, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + } + } + if(type==4 | type==5) led_wr_str (0, 16+4*12, work_str_2, 4); // 128*64 OLED + else if(type!=0) led_wr_str (0, 4, work_str_2, 4); // 1602 & 128*32 + // + asm CLRWDT; + // Loss indication + if(Loss_mode==1) { + if(ind==0 & cap==0) swr_a = SWR; + a = 1.0 / ((swr_a/100.0 + 100.0/swr_a) * Fid_loss/10.0 * 0.115 + 1.0); // Fider loss + b = 4.0 / (2.0 + SWR/100.0 + 100.0/SWR); // SWR loss + if(a>=1.0) a = 1.0; + if(b>=1.0) b = 1.0; + p_ant = Power * a * b; + eff = a * b * 100; + if(eff>=100) eff = 99; + // + if(P_High==0) { + if(p_ant >= 100) { // > 10 W + p_ant += 5; // rounding to 1 W + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = 'W'; + } + else { + IntToStr(p_ant, work_str); + if(work_str[4] != ' ') work_str_2[0] = work_str[4]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[5] != ' ') work_str_2[2] = work_str[5]; else work_str_2[2] = '0'; + work_str_2[3] = 'W'; + } + } + else { // High Power + if(p_ant<999){ // 0 - 1500 Watts + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[3]; + work_str_2[1] = work_str[4]; + work_str_2[2] = work_str[5]; + work_str_2[3] = 'W'; + } + else { + IntToStr(p_ant, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + } + } + if(type==4 | type==5) led_wr_str (4, 16+4*12, work_str_2, 4); // 128*64 OLED + else if(type==2 | type==3) led_wr_str (0, 13, work_str_2, 4); // 128*32 + else if(type!=0) led_wr_str (0, 12, work_str_2, 4); // 1602 + // + IntToStr(eff, work_str); + work_str_2[0] = work_str[4]; + work_str_2[1] = work_str[5]; + if(type==4 | type==5) led_wr_str(6, 16+5*12, work_str_2, 2); + else if(type==2 | type==3) led_wr_str(1, 14, work_str_2, 2); + else if(type==1) led_wr_str(1, 13, work_str_2, 2); + } + } + asm CLRWDT; + return; +} + +void lcd_pwr() { + int p = 0; + char peak_cnt; + int delta = Auto_delta - 100; + char cnt; + int SWR_fixed; + PWR = 0; + asm CLRWDT; + // + if(dysp==0 & Relay_off==1){ + get_pwr(); + if(PWR>=10){ + set_ind(ind); + set_cap(cap); + set_SW(SW); + // + dysp = 1; + dysp_on(); // dysplay ON + dysp_cnt = Dysp_delay * dysp_cnt_mult; + } + return; + } + // peak detector + cnt = 120; + for(peak_cnt = 0; peak_cnt < cnt; peak_cnt++){ + if(PORTB.B1==0 | PORTB.B2==0 | (PORTB.B0==0 & tune_btn_release)) {button_delay(); if(but==1) {but = 0; return;} } + get_pwr(); + if(PWR>p) {p = PWR; SWR_fixed = SWR;} + Delay_ms(3); + } + asm CLRWDT; + if(Overload==1) { + if(type==4 | type==5) { // 128*64 OLED + led_wr_str (2, 16, " ", 8); + delay_ms(100); + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (2, 16, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (2, 16, " ", 8); + delay_ms(100); + led_wr_str (2, 16, "SWR= ", 8); + } + else if(type!=0) { // 1602 & 128*32 + led_wr_str (1, 0, " ", 8); + delay_ms(100); + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(300); + asm CLRWDT; + led_wr_str (1, 0, "OVERLOAD", 8); + delay_ms(500); + asm CLRWDT; + led_wr_str (1, 0, " ", 8); + delay_ms(100); + led_wr_str (1, 0, "SWR= ", 8); + } + asm CLRWDT; + SWR_old = 10000; + lcd_swr(SWR_fixed); + } + return; +} + +void lcd_ind() { + char column; + asm CLRWDT; + if(1) { + work_int = 0; + if(ind.B0) work_int += Ind1; + if(ind.B1) work_int += Ind2; + if(ind.B2) work_int += Ind3; + if(ind.B3) work_int += Ind4; + if(ind.B4) work_int += Ind5; + if(ind.B5) work_int += Ind6; + if(ind.B6) work_int += Ind7; + if(work_int>9999) { // more then 9999 nH + work_int += 50; // round + IntToStr(work_int, work_str); + work_str_2[0] = work_str[1]; + work_str_2[1] = work_str[2]; + work_str_2[2] = '.'; + work_str_2[3] = work_str[3]; + } + else { + IntToStr(work_int, work_str); + if(work_str[2] != ' ') work_str_2[0] = work_str[2]; else work_str_2[0] = '0'; + work_str_2[1] = '.'; + if(work_str[3] != ' ') work_str_2[2] = work_str[3]; else work_str_2[2] = '0'; + if(work_str[4] != ' ') work_str_2[3] = work_str[4]; else work_str_2[3] = '0'; + } + if(type==4 | type==5) { // 128*64 OLED + if(SW==1) column = 4; else column = 6; + led_wr_str (column, 16, "L=", 2); + led_wr_str (column, 16+6*12, "uH", 2); + led_wr_str (column, 16+2*12, work_str_2, 4); + } + else if(type==2 | type==3) {// 128*32 OLED + if(SW==1) column = 0; else column = 1; + led_wr_str (column, 9, "L=", 2); + led_wr_str (column, 15, "uH", 2); + led_wr_str (column, 11, work_str_2, 4); + } + else if(type==1) { // 1602 LCD + if(SW==1) column = 0; else column = 1; + led_wr_str (column, 9, "L=", 2); + led_wr_str (column, 15, "u", 1); + led_wr_str (column, 11, work_str_2, 4); + } + } + asm CLRWDT; + if(1) { + work_int = 0; + if(cap.B0) work_int += Cap1; + if(cap.B1) work_int += Cap2; + if(cap.B2) work_int += Cap3; + if(cap.B3) work_int += Cap4; + if(cap.B4) work_int += Cap5; + if(cap.B5) work_int += Cap6; + if(cap.B6) work_int += Cap7; + IntToStr(work_int, work_str); + work_str_2[0] = work_str[2]; + work_str_2[1] = work_str[3]; + work_str_2[2] = work_str[4]; + work_str_2[3] = work_str[5]; + // + if(type==4 | type==5) { // 128*64 OLED + if(SW==1) column = 6; else column = 4; + led_wr_str (column, 16, "C=", 2); + led_wr_str (column, 16+6*12, "pF", 2); + led_wr_str (column, 16+2*12, work_str_2, 4); + } + else if(type==2 | type==3) {// 128*32 OLED + if(SW==1) column = 1; else column = 0; + led_wr_str (column, 9, "C=", 2); + led_wr_str (column, 15, "pF", 2); + led_wr_str (column, 11, work_str_2, 4); + } + else if(type==1) { // 1602 LCD + if(SW==1) column = 1; else column = 0; + led_wr_str (column, 9, "C=", 2); + led_wr_str (column, 15, "p", 1); + led_wr_str (column, 11, work_str_2, 4); + } + } + asm CLRWDT; + return; +} + + +void Test_init(void) { // Test mode + if(type==4 | type==5) // 128*64 OLED + led_wr_str (0, 10, "TEST MODE", 9); + else if(type!=0) // 1602 LCD or 128*32 OLED + led_wr_str (0, 3, "TEST MODE", 9); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + Delay_ms(500); + asm CLRWDT; + if(type==4 | type==5) // 128*64 OLED + led_wr_str (0, 10, " ", 9); + else if(type!=0) // 1602 LCD or 128*32 OLED + led_wr_str (0, 3, " ", 9); + atu_reset(); + SW = 1; // C to OUT + set_sw(SW); + EEPROM_Write(255, cap); + EEPROM_Write(254, ind); + EEPROM_Write(253, SW); + // + if(type==4 | type==5) // 128*64 OLED + led_wr_str (0, 16+12*8, "l", 1); + else if(type!=0) // 1602 LCD or 128*32 OLED + led_wr_str (0, 8, "l", 1); + // + lcd_prep_short = 1; + lcd_prep(); + return; +} + + +void cells_init(void) { + // Cells init + asm CLRWDT; + //oled_addr = EEPROM_Read(0); // address + type = EEPROM_Read(1); // type of display + if(EEPROM_Read(2) == 1) Auto = 1; + Rel_Del = Bcd2Dec(EEPROM_Read(3)); // Relay's Delay + Auto_delta = Bcd2Dec(EEPROM_Read(4)) * 10; // Auto_delta + min_for_start = Bcd2Dec(EEPROM_Read(5)) * 10; // P_min_for_start + max_for_start = Bcd2Dec(EEPROM_Read(6)) * 10; // P_max_for_start + // 7 - shift down + // 8 - shift left + max_swr = Bcd2Dec(EEPROM_Read(9)) * 10; // Max SWR + L_q = EEPROM_Read(10); + L_linear = EEPROM_Read(11); + C_q = EEPROM_Read(12); + C_linear = EEPROM_Read(13); + D_correction = EEPROM_Read(14); + L_invert = EEPROM_Read(15); + // + asm CLRWDT; + Ind1 = Bcd2Dec(EEPROM_Read(16)) * 100 + Bcd2Dec(EEPROM_Read(17)); // Ind1 + Ind2 = Bcd2Dec(EEPROM_Read(18)) * 100 + Bcd2Dec(EEPROM_Read(19)); // Ind2 + Ind3 = Bcd2Dec(EEPROM_Read(20)) * 100 + Bcd2Dec(EEPROM_Read(21)); // Ind3 + Ind4 = Bcd2Dec(EEPROM_Read(22)) * 100 + Bcd2Dec(EEPROM_Read(23)); // Ind4 + Ind5 = Bcd2Dec(EEPROM_Read(24)) * 100 + Bcd2Dec(EEPROM_Read(25)); // Ind5 + Ind6 = Bcd2Dec(EEPROM_Read(26)) * 100 + Bcd2Dec(EEPROM_Read(27)); // Ind6 + Ind7 = Bcd2Dec(EEPROM_Read(28)) * 100 + Bcd2Dec(EEPROM_Read(29)); // Ind7 + // + Cap1 = Bcd2Dec(EEPROM_Read(32)) * 100 + Bcd2Dec(EEPROM_Read(33)); // Cap1 + Cap2 = Bcd2Dec(EEPROM_Read(34)) * 100 + Bcd2Dec(EEPROM_Read(35)); // Cap2 + Cap3 = Bcd2Dec(EEPROM_Read(36)) * 100 + Bcd2Dec(EEPROM_Read(37)); // Cap3 + Cap4 = Bcd2Dec(EEPROM_Read(38)) * 100 + Bcd2Dec(EEPROM_Read(39)); // Cap4 + Cap5 = Bcd2Dec(EEPROM_Read(40)) * 100 + Bcd2Dec(EEPROM_Read(41)); // Cap5 + Cap6 = Bcd2Dec(EEPROM_Read(42)) * 100 + Bcd2Dec(EEPROM_Read(43)); // Cap6 + Cap7 = Bcd2Dec(EEPROM_Read(44)) * 100 + Bcd2Dec(EEPROM_Read(45)); // Cap7 + // + P_High = EEPROM_Read(0x30); // High power + K_Mult = Bcd2Dec(EEPROM_Read(0x31)); // Tandem Match rate + Dysp_delay = Bcd2Dec(EEPROM_Read(0x32)); // Dysplay ON delay + Loss_ind = EEPROM_Read(0x33); + Fid_loss = Bcd2Dec(EEPROM_Read(0x34)); + Relay_off = Bcd2Dec(EEPROM_Read(0x35)); + asm CLRWDT; + return; + +} + +void show_loss(void) { + IntToStr(Fid_loss, work_str); + if(Fid_loss>=10) work_str_2[0] = work_str[4]; + else work_str_2[0] = '0'; + work_str_2[1] = '.'; + work_str_2[2] = work_str[5]; + if(type==4 | type==5) led_wr_str (4, 6, work_str_2, 3); // 128*64 + else if(type!=0) led_wr_str (1, 0, work_str_2, 3); // 1602 | 128*32 + return; +} + +// \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c.ini new file mode 100644 index 0000000..e342394 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=651 +Column=5 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h new file mode 100644 index 0000000..8ed9ad3 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h @@ -0,0 +1,396 @@ +// Main.h +// David Fainitski +// ATU-100 project 2016 + +// +static char ind = 0, cap = 0, SW = 0, step_cap = 0, step_ind = 0, L_linear = 0, C_linear = 0, L_q = 7, C_q = 7, D_correction = 1, L_invert = 0, L_mult = 1, +C_mult = 1, P_High = 0, K_Mult = 32, Overload = 0, Loss_ind = 0, Relay_off = 0; +static int Rel_Del, min_for_start, max_for_start, max_swr; +int SWR, PWR, P_max, swr_a; +char rready = 0, p_cnt = 0; +// +void btn_push(void); +void lcd_prep(void); +void lcd_swr(int); +void lcd_pwr(void); +void show_pwr(int, int); +void lcd_ind(void); +void crypto(void); +void show_reset(void); +void cells_init(void); +void test_init(void); +void button_proc(void); +void button_proc_test(void); +void button_delay(void); +void show_loss(void); +// +void atu_reset(void); +int get_reverse(void); +int get_forward(void); +int correction(int); +void get_swr(void); +void get_pwr(void); +void set_sw(char); +void coarse_cap(); +void sharp_cap(); +void sharp_ind(); +void coarse_tune(); +void tune(void); +void sub_tune(void); +// + + int correction(int input) { + if(input <= 80) return 0; + if(input <= 171) input += 244; + else if(input <= 328) input += 254; + else if(input <= 582) input += 280; + else if(input <= 820) input += 297; + else if(input <= 1100) input += 310; + else if(input <= 2181) input += 430; + else if(input <= 3322) input += 484; + else if(input <= 4623) input += 530; + else if(input <= 5862) input += 648; + else if(input <= 7146) input += 743; + else if(input <= 8502) input += 800; + else if(input <= 10500) input += 840; + else input += 860; + // + return input; +} + +// + +int get_reverse() { + return ADC_Get_Sample(1) * 4.883; +} +// + +int get_forward() { + int Forward; + Forward = ADC_Get_Sample(0); + if(Forward > 1000) Overload = 1; + else Overload = 0; + return Forward * 4.883; +} + +void get_pwr() { + long Forward, Reverse; + float p; + asm CLRWDT; + // + Forward = get_forward(); + Reverse = get_reverse(); + if(D_correction==1) p = correction(Forward * 3); + else p = Forward * 3; + // + if(Reverse >= Forward) + Forward = 999; + else { + Forward = ((Forward + Reverse) * 100) / (Forward - Reverse); + if(Forward>999) Forward = 999; + } + // + p = p * K_Mult / 1000.0; // mV to Volts on Input + p = p / 1.414; + if(P_High==1) p = p * p / 50; // 0 - 1500 ( 1500 Watts) + else p = p * p / 5; // 0 - 1510 (151.0 Watts) + p = p + 0.5; // rounding + // + PWR = p; + if(Forward<100) SWR = 999; + else SWR = Forward; + return; +} + +void get_swr() { + get_pwr(); + if(p_cnt!=100) { + p_cnt += 1; + if(PWR>P_max) P_max = PWR; + } + else { + p_cnt = 0; + show_pwr(P_max, SWR); + P_max = 0; + } + while(PWR max_for_start & max_for_start>0)) { // waiting for good power + asm CLRWDT; + get_pwr(); + if(p_cnt!=100) { + p_cnt += 1; + if(PWR>P_max) P_max = PWR; + } + else { + p_cnt = 0; + show_pwr(P_max, SWR); + P_max = 0; + } + // + if(Button(&PORTB, 0, 5, 1)) rready = 1; + if(rready==1 & Button(&PORTB, 0, 5, 0)) { // press button Tune + show_reset(); + SWR = 0; + return; + } + } // good power + return; +} + +void set_ind(char Ind) { // 0 - 31 + if(L_invert == 0) { + Ind_005 = Ind.B0; + Ind_011 = Ind.B1; + Ind_022 = Ind.B2; + Ind_045 = Ind.B3; + Ind_1 = Ind.B4; + Ind_22 = Ind.B5; + Ind_45 = Ind.B6; + // + } + else { + Ind_005 = ~Ind.B0; + Ind_011 = ~Ind.B1; + Ind_022 = ~Ind.B2; + Ind_045 = ~Ind.B3; + Ind_1 = ~Ind.B4; + Ind_22 = ~Ind.B5; + Ind_45 = ~Ind.B6; + // + } + Vdelay_ms(Rel_Del); +} + +void set_cap(char Cap) { // 0 - 31 + Cap_10 = Cap.B0; + Cap_22 = Cap.B1; + Cap_47 = Cap.B2; + Cap_100 = Cap.B3; + Cap_220 = Cap.B4; + Cap_470 = Cap.B5; + Cap_1000 = Cap.B6; + // + Vdelay_ms(Rel_Del); +} + +void set_sw(char SW) { // 0 - IN, 1 - OUT + Cap_sw = SW; + Vdelay_ms(Rel_Del); +} + +void atu_reset() { + ind = 0; + cap = 0; + set_ind(ind); + set_cap(cap); + Vdelay_ms(Rel_Del); +} + + +void coarse_cap() { + char step = 3; + char count; + int min_swr; + + cap = 0; + set_cap(cap); + step_cap = step; + get_swr(); if(SWR==0) return; + min_swr = SWR + SWR/20; + for(count=step; count<=31;) { + set_cap(count*C_mult); + get_swr(); if(SWR==0) return; + if(SWR < min_swr) { + min_swr = SWR + SWR/20; + cap = count*C_mult; + step_cap = step; + if(SWR<120) break; + count +=step; + if(C_linear==0 & count==9) count = 8; + else if(C_linear==0 & count==17) {count = 16; step = 4;} + } + else break; + } + set_cap(cap); + return; +} + +void coarse_tune() { + char step = 3; + char count; + char mem_cap, mem_step_cap; + int min_swr; + + mem_cap = 0; + step_ind = step; + mem_step_cap = 3; + min_swr = SWR + SWR/20; + for(count=0; count<=31;) { + set_ind(count*L_mult); + coarse_cap(); + get_swr(); if(SWR==0) return; + if(SWR < min_swr) { + min_swr = SWR + SWR/20; + ind = count*L_mult; + mem_cap = cap; + step_ind = step; + mem_step_cap = step_cap; + if(SWR<120) break; + count +=step; + if(L_linear==0 & count==9) count = 8; + else if(L_linear==0 & count==17) {count = 16; step = 4;} + } + else break; + } + cap = mem_cap; + set_ind(ind); + set_cap(cap); + step_cap = mem_step_cap; + Delay_ms(10); + return; +} + +void sharp_cap() { + char range, count, max_range, min_range; + int min_swr; + range = step_cap*C_mult; + // + max_range = cap + range; + if(max_range>32*C_mult-1) max_range = 32*C_mult-1; + if(cap>range) min_range = cap - range; else min_range = 0; + cap = min_range; + set_cap(cap); + get_swr(); if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+C_mult; count<=max_range; count+=C_mult) { + set_cap(count); + get_swr(); if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + cap = count; + if(SWR<120) break; + } + else break; + } + set_cap(cap); + return; +} + +void sharp_ind() { + char range, count, max_range, min_range; + int min_SWR; + range = step_ind * L_mult; + // + max_range = ind + range; + if(max_range>32*L_mult-1) max_range = 32*L_mult-1; + if(ind>range) min_range = ind - range; else min_range = 0; + ind = min_range; + set_ind(ind); + get_swr(); if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+L_mult; count<=max_range; count+=L_mult) { + set_ind(count); + get_swr(); if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + ind = count; + if(SWR<120) break; + } + else break; + } + set_ind(ind); + return; +} + + +void sub_tune () { + int swr_mem, ind_mem, cap_mem; + // + swr_mem = SWR; + coarse_tune(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_ind(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_cap(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + // + if(SWR<200 & SWR100) return; + swr_mem = SWR; + ind_mem = ind; + cap_mem = cap; + // + if(SW==1) SW = 0; else SW = 1; + atu_reset(); + set_sw(SW); + Delay_ms(50); + get_swr(); if(SWR<120) return; + // + coarse_tune(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_ind(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + sharp_cap(); if(SWR==0) {atu_reset(); return;} + get_swr(); if(SWR<120) return; + // + if(SWR>swr_mem) { + if(SW==1) SW = 0; else SW = 1; + set_sw(SW); + ind = ind_mem; + cap = cap_mem; + set_ind(ind); + set_cap(cap); + SWR = swr_mem; + } + // + asm CLRWDT; + return; +} + + + +void tune() { + //int swr_mem, ind_mem, cap_mem, sw_mem; + asm CLRWDT; + // + p_cnt = 0; + P_max = 0; + // + rready = 0; + get_swr(); + if(SWR<110) return; + atu_reset(); + if(Loss_ind==0) lcd_ind(); + Delay_ms(50); + get_swr(); + swr_a = SWR; + if(SWR<110) return; + if(max_swr>110 & SWR>max_swr) return; + // + + sub_tune(); if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + if(C_q==5 & L_q==5) return; + + if(L_q>5) { + step_ind = L_mult; + L_mult = 1; + sharp_ind(); + } + if(SWR<120) return; + if(C_q>5) { + step_cap = C_mult; // = C_mult + C_mult = 1; + sharp_cap(); + } + if(L_q==5)L_mult = 1; + else if(L_q==6) L_mult = 2; + else if(L_q==7) L_mult = 4; + if(C_q==5) C_mult =1; + else if(C_q==6) C_mult = 2; + else if(C_q==7) C_mult = 4; + asm CLRWDT; + return; +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h.ini new file mode 100644 index 0000000..e269492 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=39 +Column=21 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.ini new file mode 100644 index 0000000..f98081c --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=42 +Column=34 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.mcl new file mode 100644 index 0000000000000000000000000000000000000000..005893bb980da4baf48e8a02f97ae1e78270c816 GIT binary patch literal 257012 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 literal 0 HcmV?d00001 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main_main.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main_main.h new file mode 100644 index 0000000..907ddcb --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main_main.h @@ -0,0 +1,521 @@ +// Main.h +// David Fainitski +// ATU-100 project 2016 + +// +static char ind = 0, cap = 0, SW = 0, step_cap = 0, step_ind = 0, L_linear = 0, C_linear = 0, L_q = 7, C_q = 7, D_correction = 1; +static int Rel_Del, min_for_start, max_for_start, max_swr; +int SWR, PWR; +char rready = 0; +// +void btn_push(void); +void lcd_prep(void); +void lcd_prep_short(void); +void lcd_swr(int, int); +void lcd_pwr(void); +void lcd_ind(void); +void crypto(void); +void show_reset(void); +void cells_init(void); +void test_init(void); +void button_proc(void); +void button_proc_test(void); +// +void atu_reset(void); +int get_reverse(void); +int get_forward(void); +int correction(int); +int get_swr(void); +void get_pwr(void); +void set_sw(char); +void coarse_cap(); +void sharp_cap(); +void sharp_ind(); +void coarse_tune(); +void tune(void); +// + +int correction(int input) { + input *= 3; // Devider compensation + + if(input <= 80) return 0; + if(input <= 171) input += 244; + else if(input <= 328) input += 254; + else if(input <= 582) input += 280; + else if(input <= 820) input += 297; + else if(input <= 1100) input += 310; + else if(input <= 2181) input += 430; + else if(input <= 3322) input += 484; + else if(input <= 4623) input += 530; + else if(input <= 5862) input += 648; + else if(input <= 7146) input += 743; + else if(input <= 8502) input += 800; + else if(input <= 10500) input += 820; + else input += 850; + // + + return input; +} + +// + +int get_reverse() { + int Reverse; + FVRCON = 0b10000001; // ADC 1024 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse; + FVRCON = 0b10000010; // ADC 2048 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + if(Reverse <= 1000) return Reverse * 2; + FVRCON = 0b10000011; // ADC 4096 vmV Vref + while(FVRCON.B6 == 0); + Reverse = ADC_Get_Sample(0); + return Reverse * 4; +} +// + +int get_forward() { + int Forward; + FVRCON = 0b10000001; // ADC 1024 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward; + FVRCON = 0b10000010; // ADC 2048 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + if(Forward <= 1000) return Forward * 2; + FVRCON = 0b10000011; // ADC 4096 vmV Vref + while(FVRCON.B6 == 0); + Forward = ADC_Get_Sample(1); + return Forward * 4; +} + +void get_pwr() { + long Forward, Reverse; + float p; + asm CLRWDT; + // + Forward = get_forward(); + Reverse = get_reverse(); + if(D_correction==1) p = correction(Forward); + else p = Forward; + // + if(Reverse >= Forward) + Forward = 999; + else { + Forward = ((Forward + Reverse) * 100) / (Forward - Reverse); + if(Forward>999) Forward = 999; + } + // + p = p * 10 / 1000; // mV to Volts + p = p / 1.414; + p = p * p / 5; + p = p + 0.5; // rounding to 0.1 W + PWR = p; // 0 - 1510 (151.0 Watts) + SWR = Forward; +} + +int get_swr() { + get_pwr(); + while((PWR<=min_for_start | (PWR> max_for_start & max_for_start>0))) { // waiting for good power + asm CLRWDT; + get_pwr(); + if(Button(&PORTB, 0, 5, 1)) rready = 1; + if(rready==1 & Button(&PORTB, 0, 5, 0)) { // press button Tune + show_reset(); + SWR = 0; + return SWR; + } + } // good power + return SWR; +} + +void set_ind(char Ind) { // 0 - 31 + // + Ind_005 = Ind.B0; + Ind_011 = Ind.B1; + Ind_022 = Ind.B2; + Ind_045 = Ind.B3; + Ind_1 = Ind.B4; + Ind_22 = Ind.B5; + Ind_45 = Ind.B6; + // + Vdelay_ms(Rel_Del); +} + +void set_cap(char Cap) { // 0 - 31 + Cap_10 = Cap.B0; + Cap_22 = Cap.B1; + Cap_47 = Cap.B2; + Cap_100 = Cap.B3; + Cap_220 = Cap.B4; + Cap_470 = Cap.B5; + Cap_1000 = Cap.B6; + // + Vdelay_ms(Rel_Del); +} + +void set_sw(char SW) { // 0 - IN, 1 - OUT + Cap_sw = SW; + Vdelay_ms(Rel_Del); +} + +void atu_reset() { + ind = 0; + cap = 0; + set_ind(ind); + set_cap(cap); + Vdelay_ms(Rel_Del); +} +/* +void coarse_cap() { + char step = 3; + char count, max_count = 1; + int min_swr; + + for(count==C_q; count>0; count--) max_count *= 2; + max_count -= 1; + cap = 0; + set_cap(cap); + SWR = get_swr(); + if(SWR==0 | SWR<120) return; + min_swr = SWR + SWR/20; + for(count=step; count<=max_count;) { + set_cap(count); + SWR = get_swr(); + if(SWR==0) return; + if(SWR=40) {step = count/10; count += step;} + else count += step; + } + } + else break; + } + set_cap(cap); + return; +} + +void coarse_tune() { + char step = 3; + char count, max_count = 1; + char mem_cap, mem_step_cap; + int min_swr; + + for(count==L_q; count>0; count--) max_count *= 2; + max_count -= 1; + mem_cap = 0; + step_ind = step; + mem_step_cap = 3; + min_swr = SWR + SWR/20; + for(count=step; count<=max_count;) { + set_ind(count); + coarse_cap(); + if(SWR==0) return; + SWR = get_swr(); + if(SWR==0) return; + if(SWR999) count = count * 2; + else if(count>=70) {step = count/10; count += step;} + else count += step; + } + } + else break; + } + cap = mem_cap; + set_ind(ind); + set_cap(cap); + step_cap = mem_step_cap; + Delay_ms(10); + return; +} +*/ + +void coarse_cap() { + char step = 2; + char count; + int min_swr; + + cap = 0; + set_cap(cap); + SWR = get_swr(); + min_swr = SWR + SWR/20; + for(count=step; count<=127; count+=step) { + set_cap(count); + SWR = get_swr(); + if(SWR300) step = 5; else step = 3; + if(count>=30) step = count/10; + if(SWR<120) break; + } + else break; + } + set_cap(cap); + return; +} + +void coarse_tune() { + char step = 4; + char count; + char mem_cap, mem_step_cap; + int min_swr; + + mem_cap = 0; + step_ind = step; + mem_step_cap = 2; + min_swr = SWR + SWR/20; + for(count=step; count<=127; count+=step) { + set_ind(count); + coarse_cap(); + SWR = get_swr(); + if(SWR=50) step = count/10; + if(SWR<120) break; + } + else break; // ?? Brute Force (no) + } + cap = mem_cap; + set_ind(ind); + set_cap(cap); + step_cap = mem_step_cap; + Delay_ms(10); + return; +} + + + +void sharp_cap() { + char range, count, max_range, min_range, max_count = 1; + int min_swr; + range = step_cap; + // + for(count==C_q; count>0; count-- )max_count *= 2; + max_count -= 1; + max_range = cap + range; + if(max_range>max_count) max_range = max_count; + if(cap>range) min_range = cap - range; else min_range = 0; + cap = min_range; + set_cap(cap); + SWR = get_swr(); + if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+1; count<=max_range; count++) { + set_cap(count); + SWR = get_swr(); + if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + cap = count; + if(SWR<120) break; + } + else break; + } + set_cap(cap); + return; +} + +void sharp_ind() { + char range, count, max_range, min_range, max_count = 1; + int min_SWR; + range = step_ind; + // + for(count==L_q; count>0; count--) max_count *= 2; + max_count -= 1; + max_range = ind + range; + if(max_range>max_count) max_range = max_count; + if(ind>range) min_range = ind - range; else min_range = 0; + ind = min_range; + set_ind(ind); + SWR = get_swr(); + if(SWR==0) return; + min_SWR = SWR; + for(count=min_range+1; count<=max_range; count++) { + set_ind(count); + SWR = get_swr(); + if(SWR==0) return; + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR>=min_SWR) { Delay_ms(10); SWR = get_swr(); } + if(SWR < min_SWR) { + min_SWR = SWR; + ind = count; + if(SWR<120) break; + } + else break; + } + set_ind(ind); + return; +} + +/* +void tune() { + int swr_mem, ind_mem, cap_mem; + asm CLRWDT; + rready = 0; + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<110) return; + atu_reset(); + Delay_ms(10); + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(max_swr>110 & SWR>max_swr) return; + // + swr_mem = SWR; + coarse_tune(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_ind(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_cap(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + if(SWR<200 & SWR100) return; + swr_mem = SWR; + ind_mem = ind; + cap_mem = cap; + // + if(SW==1) SW = 0; else SW = 1; + atu_reset(); + set_sw(SW); + Delay_ms(10); + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + // + coarse_tune(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_ind(); + if(SWR==0) {atu_reset(); return;} + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + sharp_cap(); + if(SWR==0) {atu_reset(); return;} + // + SWR = get_swr(); + if(SWR==0) {atu_reset(); return;} + if(SWR<120) return; + // + if(SWR>swr_mem) { + if(SW==1) SW = 0; else SW = 1; + set_sw(SW); + ind = ind_mem; + cap = cap_mem; + set_ind(ind); + set_cap(cap); + } + // + asm CLRWDT; + return; +} */ + + void tune() { + int swr_mem, ind_mem, cap_mem; + asm CLRWDT; + rready = 0; + SWR - get_swr(); + if(SWR<110) return; + atu_reset(); + Delay_ms(10); + SWR = get_swr(); + if(max_swr>110 & SWR>max_swr) return; + // + swr_mem = SWR; + coarse_tune(); + SWR = get_swr(); + if(SWR<120) return; + sharp_ind(); + SWR = get_swr(); + if(SWR<120) return; + sharp_cap(); + SWR = get_swr(); + if(SWR<120) return; + if(SWR<200 & SWR100) return; + swr_mem = SWR; + ind_mem = ind; + cap_mem = cap; + // + if(SW==1) SW = 0; else SW = 1; + atu_reset(); + set_sw(SW); + Delay_ms(10); + SWR = get_swr(); + // + coarse_tune(); + SWR = get_swr(); + if(SWR<120) return; + sharp_ind(); + SWR = get_swr(); + if(SWR<120) return; + sharp_cap(); + + SWR = get_swr(); + if(SWR<120) return; + // + if(SWR>swr_mem) { + if(SW==1) SW = 0; else SW = 1; + set_sw(SW); + ind = ind_mem; + cap = cap_mem; + set_ind(ind); + set_cap(cap); + } + // + asm CLRWDT; + return; +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c new file mode 100644 index 0000000..6a629bb --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c @@ -0,0 +1,407 @@ + +#include "oled_control.h" +#include "font5x8.h" +// + +void led_send (char nible) { + char sdata; + sdata = 0; + RW = 0; E = 1; + sdata = sdata + nible; + sdata = sdata << 4; + if(LED) sdata = sdata + 8; + if(E) sdata = sdata + 4; + if(RW) sdata = sdata + 2; + if(RS) sdata = sdata + 1; + // + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(sdata); // + Soft_I2C_Stop(); + delay_ms(1); + sdata = sdata - 4; // E = 0 + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(sdata); // + Soft_I2C_Stop(); + delay_ms(1); +} +// +void led_init (void) { + shift_line = EEPROM_read(7); + oled_shift = EEPROM_read(8); + if(led_type>1) oled_init(); // OLED + else if(led_type==1) { // 1602 LCD display init + LED = 1; + RS = 0; // Command + // + led_send(3); + delay_ms(5); + led_send(3); + delay_ms(1); + led_send(3); + led_send(2); + // + led_send(2); + led_send(8); // + // + led_send(0); + led_send(8); // LCD OFF + // + led_send(0); + led_send(1); // LCD clear + delay_ms(5); + // + led_send(0); + led_send(4 + 2); // I/D, S + // + led_send(0); + led_send(8 + 4 + 0 + 0); // LCD ON, Cursor, Blink Cursor + } +} + +void dysp_on() { + if(led_type > 1) send_command(0xAF); // display ON + else if(led_type==1) { + LED = 1; + RS = 0; + led_send(0); + led_send(0); + } +} + +void dysp_off() { + if(led_type > 1) send_command(0xAE); // display OFF + else if(led_type==1) { + LED = 0; + RS = 0; + led_send(0); + led_send(0); + } +} + + + void oled_init (void) { // OLED init + char i, r; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(0); // 0 - continious mode, command; 64 - Co, data + Soft_I2C_Write (0xAE); // display OFF + // + if(led_type==2 | led_type==3) { // 128*32 OLED + Soft_I2C_Write (0xD5); // clock division + Soft_I2C_Write (0x80); // ratio + // + Soft_I2C_Write (0xA8); // multiplexer + Soft_I2C_Write (0x3f); // + // + Soft_I2C_Write (0xD3); // offset + if(led_type==2) Soft_I2C_Write (0 + shift_line); // column shift + else Soft_I2C_Write (31 + shift_line); // column shift + // + Soft_I2C_Write (0x40); // set line, line = 0 + // + Soft_I2C_Write (0x8D); // charge pump + Soft_I2C_Write (0x14); // 0x10 - external, 0x14 - internal + // + Soft_I2C_Write (0x81); // contrast + Soft_I2C_Write (180); // 0-255 + // + Soft_I2C_Write (0xD9); // pre-charge + Soft_I2C_Write (0x22); // 0x22 - external, 0xF1 - internal + // + Soft_I2C_Write (0x20); // memory addressing mode + Soft_I2C_Write (0x02); // page addressing mode + // + Soft_I2C_Write (0x21); // set column range + Soft_I2C_Write (0); // column start + Soft_I2C_Write (127); // column stop + // + Soft_I2C_Write (0x2E); // stop scrolling + // + if(led_type==2) { + Soft_I2C_Write (0xA0); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC0); // scan direction, C0 - normal, C8 - remapped + } + else { + Soft_I2C_Write (0xA1); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC8); // scan direction, C0 - normal, C8 - remapped + } + // + Soft_I2C_Write (0xDA); // COM pins configure + Soft_I2C_Write (0x02); // 12 for x64 + // + Soft_I2C_Write (0xDB); // V-COM detect + Soft_I2C_Write (0x40); // + // + } + else { // 128*64 OLED + Soft_I2C_Write (0xD5); // clock division + Soft_I2C_Write (0x80); // ratio + // + Soft_I2C_Write (0xA8); // multiplexer + Soft_I2C_Write (63); // + // + Soft_I2C_Write (0xD3); // offset + Soft_I2C_Write (shift_line); // no offset for x64 ! + // + Soft_I2C_Write (0x40); // set line, line = 0 + // + Soft_I2C_Write (0x8D); // charge pump + Soft_I2C_Write (0x14); // 0x10 - external, 0x14 - internal + // + Soft_I2C_Write (0x81); // contrast + Soft_I2C_Write (255); // 0-255 + // + Soft_I2C_Write (0xD9); // pre-charge + Soft_I2C_Write (0xf1); // 0x22 - external, 0xF1 - internal + // + Soft_I2C_Write (0x20); // memory addressing mode + Soft_I2C_Write (0x02); // page addressing mode 02 + // + Soft_I2C_Write (0x21); // set column range + Soft_I2C_Write (0); // column start + Soft_I2C_Write (127); // column stop + // + Soft_I2C_Write (0x2E); // stop scrolling + // + if(led_type==4) { + Soft_I2C_Write (0xA0); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC0); // scan direction, C0 - normal, C8 - remapped + } + else { + Soft_I2C_Write (0xA1); // segment re-map, A0 - normal, A1 - remapped + // + Soft_I2C_Write (0xC8); // scan direction, C0 - normal, C8 - remapped + } + // + Soft_I2C_Write (0xDA); // COM pins configure + Soft_I2C_Write (0x12); // 12 for x64 + // + Soft_I2C_Write (0xDB); // V-COM detect + Soft_I2C_Write (0x40); // + } + Soft_I2C_Write (0xA4); // display entire ON + // + Soft_I2C_Write (0xA6); // 0xA6 - normal, 0xA7 - inverse + // + Soft_I2C_Stop (); + // + // ********clear OLED*********** + // + Delay_ms(100); + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + // + if(led_type==2 | led_type==3) { // 128*32 OLED + for (r = 0; r <=3; r++) { + set_addressing (r, 0); // clear all 4 pages + for (i = 0; i < 128; i++, Soft_I2C_Write(0)); // clear one page pixels + } + } + else { // 128*64 OLED + for (r = 0; r <=7; r++) { + set_addressing (r, 0); // clear all 8 pages + for (i = 0; i < 128; i++, Soft_I2C_Write(0x00)); // clear one page pixels + } + + } + // + Soft_I2C_Stop (); + send_command (0xAF); // display ON + // + +} + + + +void send_command (char oled_command) { + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(128); // 128 - command, 192 - data + Soft_I2C_Write(oled_command); + Soft_I2C_Stop(); +} + +void set_addressing (char pagenum, char c_start) { + char a, b, c; + c = c_start + oled_shift; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(0); // 0 - continious mode, command; 64 - Co, data + Soft_I2C_Write(0xB0 + pagenum); // set page number + // + if (c <= 15) { a = c; b = 0; } + else { b = c / 16; a = c - b * 16; } + Soft_I2C_Write (a); // set lower nibble of start address + Soft_I2C_Write (0x10 + b); // set higher nibble of start address + // + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + } +// + + +void led_wr_str (char col, char pos, char str[], char leng ) { // + char i; + if(led_type==4 | led_type==5) oled_wr_str(pos, col, str, leng); // 128*64 OLED display + else if(led_type==2 | led_type==3) oled_wr_str(7*pos+4, col*2, str, leng); // 128*32 OLED display + else { // 1602 LCD + // Set address + RS = 0; + led_send(8 + col*4); + led_send(pos); + // + RS = 1; + for (i = 0; i < leng; i++) { // write string + // write letter + led_send(str[i] >> 4); + led_send(str[i]); + } + + } +} +// + +void oled_wr_str (char col, char page, char str[], char leng ) { // 128*32 or 128*64 OLED + char i, h, g, w1, w2; + Soft_I2C_Start(); + Soft_I2C_Write(led_addr); // device addres + Soft_I2C_Write(64); // 0 - continious mode, command; 64 - Co, data + // + set_addressing (page, col); + // + for (i = 0; i < leng; i++) { // write string + if (str[i] == 0) g = 0; else g = str[i] - 32; // NULL detection + for (h = 0; h <= 4; h++) { // write letter + w1 = font5x8[g*5+h]; + if(page!=2 & page!=4 & page!=6) { + w2.B7 = w1.B3; + w2.B6 = w1.B3; + w2.B5 = w1.B2; + w2.B4 = w1.B2; + w2.B3 = w1.B1; + w2.B2 = w1.B1; + w2.B1 = w1.B0; + w2.B0 = w1.B0; + } + else { + w2.B7 = w1.B2; + w2.B6 = w1.B2; + w2.B5 = w1.B1; + w2.B4 = w1.B1; + w2.B3 = w1.B0; + w2.B2 = w1.B0; + w2.B1 = 0; + w2.B0 = 0; + } + Soft_I2C_Write(w2); + if(led_type==4 | led_type==5) Soft_I2C_Write(w2); // 128*64 + } + Soft_I2C_Write (0); + Soft_I2C_Write (0); + } + set_addressing (page+1, col); + // + for (i = 0; i < leng; i++) { // write string + if (str[i] == 0) g = 0; else g = str[i] - 32; // NULL detection + for (h = 0; h <= 4; h++) { // write letter + w1 = font5x8[g*5+h]; + if(page!=2 & page!=4 & page!=6) { + w2.B7 = w1.B7; + w2.B6 = w1.B7; + w2.B5 = w1.B6; + w2.B4 = w1.B6; + w2.B3 = w1.B5; + w2.B2 = w1.B5; + w2.B1 = w1.B4; + w2.B0 = w1.B4; } + else { + w2.B7 = w1.B6; + w2.B6 = w1.B6; + w2.B5 = w1.B5; + w2.B4 = w1.B5; + w2.B3 = w1.B4; + w2.B2 = w1.B4; + w2.B1 = w1.B3; + w2.B0 = w1.B3; + } + Soft_I2C_Write(w2); + if(led_type==4 | led_type==5) Soft_I2C_Write(w2); // 128*64 + } + Soft_I2C_Write (0); + Soft_I2C_Write (0); + //if(led_type==2 | led_type==3) Soft_I2C_Write (0); // 128*32 + } + Soft_I2C_Stop (); +} + + + + void Soft_I2C_Init () { + led_addr = EEPROM_read(0); // 4E,7E for 1602 or 78, 7A for OLED + led_type = EEPROM_read(1); + if(led_type==0) { + Soft_I2C_Scl_Direction = 0; + Soft_I2C_Sda_Direction = 0; + LATB.B6 = 1; + LATB.B7 = 1; + } + else { + Soft_I2C_Scl_Direction = 1; + Soft_I2C_Sda_Direction = 1; + Soft_I2C_Scl = 0; + Soft_I2C_Sda = 0; + } + } + + void Soft_I2C_Start () { + if(led_type!=0) { + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 0; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + } + } + +void Soft_I2C_Write (char d) { + char i; + if(led_type!=0) { + for(i=0; i<=7; i++) { + if(d.B7==0) Soft_I2C_Sda_Direction = 0; else Soft_I2C_Sda_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + d = d << 1; + } + // + Soft_I2C_Sda_Direction = 1; //ACK + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Scl_Direction = 0; + Delay_us(5); + } +} + +void Soft_I2C_Stop () { + if(led_type!=0) { + Soft_I2C_Sda_Direction = 0; + Delay_us(5); + Soft_I2C_Scl_Direction = 1; + Delay_us(5); + Soft_I2C_Sda_Direction = 1; + Delay_us(5); + } +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c.ini new file mode 100644 index 0000000..1bcbdac --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=311 +Column=98 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h new file mode 100644 index 0000000..3102c74 --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h @@ -0,0 +1,30 @@ +// Software I2C connections +// +sbit Soft_I2C_Scl at LATB6_bit; +sbit Soft_I2C_Sda at LATB7_bit; +sbit Soft_I2C_Scl_Direction at TRISB6_bit; +sbit Soft_I2C_Sda_Direction at TRISB7_bit; +// +static char RS, RW, E, LED, nible; + +static char led_addr, led_type; +static char shift_line; + +static char oled_shift; +// +void set_addressing (char, char); +void led_send (char); +void led_init (void); +void oled_init (void); +void send_command (char); +void set_addressing (char, char); +void led_wr_str (char, char, char*, char); +void oled_wr_str (char, char, char*, char); +void dysp_on(void); +void dysp_off(void); +// + +void Soft_I2C_Init (void); +void Soft_I2C_Start (void); +void Soft_I2C_Write (char); +void Soft_I2C_Stop (void); \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h.ini new file mode 100644 index 0000000..c00befe --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=17 +Column=93 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/oled_control.mcl new file mode 100644 index 0000000000000000000000000000000000000000..ac6bd7ebf77566eab78c8dab427877234369f0df GIT binary patch literal 49893 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 Mba)%=T=n$-1Ld^nQvd(} literal 0 HcmV?d00001 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c new file mode 100644 index 0000000..a1ef28a --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c @@ -0,0 +1,31 @@ +// pic_init unit for Micro C PRO +// David Fainitski for ATU-100 project +// PIC1938 Microchip + + +void pic_init (void) { + CMCON = 0b00000111; // Comparator OFF + + OSCCON = 0b01100000; // 4 MHz oscillator // 0b01110000 - 8 MHz + PLLEN_bit = 1; //4xPLL enable 4 * 4 = 16 MHz + + PORTA = 0; + PORTB = 0; + PORTC = 0; + LATA = 0b01000000; // PORT6 /Tx_req to 1 + LATB = 0; + LATC = 0; + TRISA = 0b00000011; + TRISB = 0b00000111; + TRISC = 0b00000000; // + // + ADC_Init(); + // + + ADCON1 = 0b00001101; // ADC ports conf + // + RBPU_bit = 0; + + //interrupt setting + GIE_bit = 0; +} \ No newline at end of file diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c.ini new file mode 100644 index 0000000..de4f4fc --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=31 +Column=2 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h new file mode 100644 index 0000000..52f8eea --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h @@ -0,0 +1,27 @@ +// Connections +// +sbit n_Tx at LATA6_bit; +sbit p_Tx at LATA7_bit; +// +//sbit Button at RB0_bit; +//sbit BYP_button at RB2_bit; +//sbit Auto_button at RB1_bit; +// +sbit Cap_10 at LATC7_bit; +sbit Cap_22 at LATC3_bit; +sbit Cap_47 at LATC6_bit; +sbit Cap_100 at LATC2_bit; +sbit Cap_220 at LATC5_bit; +sbit Cap_470 at LATC1_bit; +sbit Cap_1000 at LATC4_bit; +sbit Cap_sw at LATC0_bit; +// +sbit Ind_005 at LATB3_bit; +sbit Ind_011 at LATA2_bit; +sbit Ind_022 at LATB4_bit; +sbit Ind_045 at LATA3_bit; +sbit Ind_1 at LATB5_bit; +sbit Ind_22 at LATA5_bit; +sbit Ind_45 at LATA4_bit; +// +void pic_init (void); diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h.ini new file mode 100644 index 0000000..f428cbb --- /dev/null +++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.h.ini @@ -0,0 +1,9 @@ +[Bookmarks] +Count=0 +[Position] +Line=27 +Column=1 +[BreakPoints] +Count=0 +[FoldedLines] +Count=0 diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.mcl new file mode 100644 index 0000000000000000000000000000000000000000..ca02df29a9bf5048c8d13d43ff9fe447df7fb334 GIT binary patch literal 2709 zcmZXW*>2NN5QZl$OIh2p3L#N$xCGUfkl>EkO`Aw=64{Qp45Dz6n~IA{NPQ0;fJfma z*!O+kH-Vtca+VBZ#dF5r`G4p5obj@p7h3_K#(kmzuz!>6m$xIJt)HA)Oi!lsfSmxB zMk~Y7>S*o63QSyCJ66IZ(e?Fp*v$P?bjaHdpNzF*ZkRycnBKs+g%ula^BNe2jQXc> zCk1O&n40mh0SB>XfP1j&lk8GPfERqi29IU2D(8U%jtg~^7A{88X3|CljUP3MgrG>+ zgE12JBx9bGJZV&1=|8A9cTq^uL=%T_oYAp&V4Bl$?#@t`ovH~E z#X)(-#CwS3OmZ#?faXFz>|jm8Fl1uJ!(KO`ern_r%d9`(D-4P7rA~{nZ{-YC-K+-{ zxJFpNSJj-fbR<7$7l=#xbsE&5>5dyC##^wy#`7QMFUl|?TtdT!A(i=GCA^Y{N0s<(!8 zDnzf(GxWNo#7BTxnsGsKqLpzQ3fM>qz&Vc2C@3z6GSZ(Ny@o+v(zHUdN=mg81(P%g zN&w=bDHR>CN@!e1rJ|Z)l@w20TBV|wG+z)Um~wO%Bq$buGR~lqPfrOztO=!}CpD|& zksZrKsrI0X2SEuMIJ!Xyip8Xidr`?oO8n9}qo7!F%D4~JJT6KAVihXY0qi<{6$2&y z+k-M$9?EdT`xRy;6=DwRT!)bHP$_}X$0a8y*1a+wM)e$34kZ9|E6DAjR7bFjRg?hG n-63~~Qq6HE4pKSEb&H;l