diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/2520.cfgsch b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/2520.cfgsch
new file mode 100644
index 0000000..2f42b33
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/atu_100_fw_00.cfg b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/atu_100_fw_00.ihex b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/atu_100_fw_00.ihex
new file mode 100644
index 0000000..cfd25ce
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/atu_100_fw_00.ihex
@@ -0,0 +1,18 @@
+:0200000400F00A
+:100000004E01001513050001020007000700010062
+:100010000050011002200450100022004500FFFF94
+:100020000010002200470100022004701000FFFFB2
+:100030000010000112FFFFFFFFFFFFFFFFFFFFFFA8
+: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.0/atu_100_fw_00.log b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/atu_100_fw_00.log
new file mode 100644
index 0000000..accb899
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/atu_100_fw_00.log
@@ -0,0 +1,15 @@
+0 1 mikroCPIC1618.exe -MSF -DBG -pP18F2520 -DL -O11111114 -fo16 -EH"D:\Projects\ATU-100\fw_EXT_2.9\2520_EXT_board_sources_V_2.9\atu_100_fw_00.ihex" -N"D:\Projects\ATU-100\fw_EXT_2.9\2520_EXT_board_sources_V_2.9\atu_100_fw_00.mcppi" -SP"C:\Program Files (x86)\mikroC PRO for PIC\Defs\" -SP"C:\Program Files (x86)\mikroC PRO for PIC\uses\P18\" -SP"D:\Projects\ATU-100\fw_EXT_2.9\2520_EXT_board_sources_V_2.9\" -IP"C:\Program Files (x86)\mikroC PRO for PIC\uses\P18\" -IP"D:\Projects\ATU-100\fw_EXT_2.9\2520_EXT_board_sources_V_2.9\" "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: 810 123 Compiled Successfully main.c
+diagnostics: 0 127 All files Compiled in 219 ms
+hint: 0 1144 Used RAM (bytes): 818 (54%) Free RAM (bytes): 697 (46%) Used RAM (bytes): 818 (54%) Free RAM (bytes): 697 (46%)
+hint: 0 1144 Used ROM (bytes): 24864 (76%) Free ROM (bytes): 7904 (24%) Used ROM (bytes): 24864 (76%) Free ROM (bytes): 7904 (24%)
+diagnostics: 0 125 Project Linked Successfully atu_100_fw_00.mcppi
+diagnostics: 0 128 Linked in 78 ms
+diagnostics: 0 129 Project 'atu_100_fw_00.mcppi' completed: 313 ms
+diagnostics: 0 103 Finished successfully: 07 Jun 2019, 19:14:27 atu_100_fw_00.mcppi
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/atu_100_fw_00.mcppi b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/atu_100_fw_00.mcppi_callertable.txt b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/atu_100_fw_00.mcppi_callertable.txt
new file mode 100644
index 0000000..4dea9b9
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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
+ correction
+ Mul_16X16_U
+ int2double
+ NRM3232
+ RES032
+ SETFUN32
+ FIXSIGN32
+ longint2double
+ NRM4032
+ SETFUN32
+ FIXSIGN32
+ SETFOV32
+ RES032
+ Mul_32x32_U
+ 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.0/backup.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/backup.c
new file mode 100644
index 0000000..99a8091
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/backup.c
@@ -0,0 +1,2 @@
+
+
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/backup.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/backup.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/backup.mcl
new file mode 100644
index 0000000..48858cb
Binary files /dev/null and b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/backup.mcl differ
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/font5x8.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/font5x8.h
new file mode 100644
index 0000000..393b31c
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/font5x8.h
@@ -0,0 +1,100 @@
+ static const char font5x8[] = {
+//
+0x00, 0x00, 0x00, 0x00, 0x00,// (space)
+0x00, 0x00, 0x5F, 0x00, 0x00,// !
+0x00, 0x07, 0x00, 0x07, 0x00,// "
+0x14, 0x7F, 0x14, 0x7F, 0x14,// #
+0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
+0x23, 0x13, 0x08, 0x64, 0x62,// %
+0x36, 0x49, 0x55, 0x22, 0x50,// &
+0x00, 0x05, 0x03, 0x00, 0x00,// '
+0x00, 0x1C, 0x22, 0x41, 0x00,// (
+0x00, 0x41, 0x22, 0x1C, 0x00,// )
+0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
+0x08, 0x08, 0x3E, 0x08, 0x08,// +
+0x00, 0x50, 0x30, 0x00, 0x00,// ,
+0x08, 0x08, 0x08, 0x08, 0x08,// -
+0x00, 0x30, 0x30, 0x00, 0x00,// .
+0x20, 0x10, 0x08, 0x04, 0x02,// /
+0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
+0x00, 0x42, 0x7F, 0x40, 0x00,// 1
+0x42, 0x61, 0x51, 0x49, 0x46,// 2
+0x21, 0x41, 0x45, 0x4B, 0x31,// 3
+0x18, 0x14, 0x12, 0x7F, 0x10,// 4
+0x27, 0x45, 0x45, 0x45, 0x39,// 5
+0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
+0x01, 0x71, 0x09, 0x05, 0x03,// 7
+0x36, 0x49, 0x49, 0x49, 0x36,// 8
+0x06, 0x49, 0x49, 0x29, 0x1E,// 9
+0x00, 0x36, 0x36, 0x00, 0x00,// :
+0x00, 0x56, 0x36, 0x00, 0x00,// ;
+0x00, 0x08, 0x14, 0x22, 0x41,// <
+0x14, 0x14, 0x14, 0x14, 0x14,// =
+0x41, 0x22, 0x14, 0x08, 0x00,// >
+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.0/font5x8.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/main.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.c
new file mode 100644
index 0000000..20e7c8f
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.c
@@ -0,0 +1,810 @@
+ // 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;
+
+//void interrupt () {
+//}
+
+
+void main() {
+ if(RCON.B3==0) Restart = 1;
+ pic_init();
+ //
+ Delay_ms (100);
+ 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(200);
+ 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;
+ //
+ led_init();
+ if(PORTB.B1==0 & PORTB.B2==0 & PORTB.B0==0) { // Fast Test mode (loop)
+ if(type==1) led_wr_str (0, 3, "FAST TEST", 9); // 1602
+ else if(type!=0) led_wr_str (0, 12, "FAST TEST", 9); // 128*64 | 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(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();
+
+
+
+ //*******************************
+
+ 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_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(Button(&PORTB, 0, 50, 0) | 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;
+ while(Button(&PORTB, 0, 50, 0)) {lcd_pwr(); asm CLRWDT; }
+ Soft_tune = 0;
+ }
+ //if(Loss_ind==0) lcd_ind();
+ }
+ //
+ 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;
+ 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.0", 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.0", 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==1) { // 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 {
+ SWR_old = swr;
+ 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) {
+ float a, b;
+ int p_ant;
+ float eff;
+ asm CLRWDT;
+ //
+ if(Test==0 & Loss_ind==1 & SWR>=100) {
+ 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 - 1500 Watts
+ 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[2] = 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[2] = 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==1) 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 = 1;
+ PWR = 0;
+ asm CLRWDT;
+ // peak detector
+ cnt = 120;
+ for(peak_cnt = 0; peak_cnt < cnt; peak_cnt++){
+ if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} }
+ get_pwr();
+ if(PWR>p) {p = PWR; SWR_fixed = SWR;}
+ Delay_ms(3);
+ }
+ asm CLRWDT;
+ Power = p;
+ lcd_swr(SWR_fixed);
+ if(SWR_fixed>=100) {
+ dysp_on(); // dysplay ON
+ dysp_cnt = Dysp_delay * dysp_cnt_mult;
+ }
+ //
+ if(Auto & SWR_fixed>=Auto_delta & ((SWR_fixed>SWR_fixed_old & (SWR_fixed-SWR_fixed_old)>delta) | (SWR_fixeddelta) | SWR_fixed_old==999))
+ Soft_tune = 1;
+ //
+ if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} } // Fast return if button pressed
+ show_pwr(Power, SWR_fixed);
+ //
+ if(PORTB.B1==0 | PORTB.B2==0 | PORTB.B0==0) {button_delay(); if(but==1) {but = 0; return;} }
+ 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// 1602
+ 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;
+ 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 Natch rate
+ Dysp_delay = Bcd2Dec(EEPROM_Read(0x32)); // Dysplay ON delay
+ Loss_ind = EEPROM_Read(0x33);
+ Fid_loss = Bcd2Dec(EEPROM_Read(0x34));
+ asm CLRWDT;
+ return;
+
+}
\ No newline at end of file
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.c.ini
new file mode 100644
index 0000000..19a909f
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.c.ini
@@ -0,0 +1,9 @@
+[Bookmarks]
+Count=0
+[Position]
+Line=724
+Column=15
+[BreakPoints]
+Count=0
+[FoldedLines]
+Count=0
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.h
new file mode 100644
index 0000000..257590d
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.h
@@ -0,0 +1,406 @@
+// 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;
+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 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) {
+ 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 += 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==1024) 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);
+ else p = Forward;
+ //
+ if(Reverse >= Forward)
+ Forward = 999;
+ else {
+ Forward = ((Forward + Reverse) * 100) / (Forward - Reverse);
+ if(Forward>999) Forward = 999;
+ }
+ //
+ if(P_High==1) { // 0 - 1500 ( 1500 Watts)
+ p = p * K_Mult / 1000.0;
+ p = p / 1.414;
+ p = p * p / 50;
+ p = p + 0.5;
+ }
+ else {
+ 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;
+ p = p + 0.5; // rounding to 0.1 W
+ }
+ PWR = p; // 0 - 1510 (151.0 Watts)
+ if(PWR<10) SWR = 1;
+ else 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.0/main.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.h.ini
new file mode 100644
index 0000000..f44853e
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.h.ini
@@ -0,0 +1,9 @@
+[Bookmarks]
+Count=0
+[Position]
+Line=105
+Column=12
+[BreakPoints]
+Count=0
+[FoldedLines]
+Count=0
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.ini
new file mode 100644
index 0000000..f98081c
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/main.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.mcl
new file mode 100644
index 0000000..8d2c0f9
Binary files /dev/null and b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main.mcl differ
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/main_main.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/oled_control.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/oled_control.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/oled_control.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/oled_control.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/oled_control.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/oled_control.mcl
new file mode 100644
index 0000000..42be85d
Binary files /dev/null and b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/oled_control.mcl differ
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.c b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/pic_init.c.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/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.0/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.0/pic_init.h b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.h
new file mode 100644
index 0000000..b3c67d3
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.h
@@ -0,0 +1,80 @@
+// 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);
+
+/*
+void lcd_prep() {
+ asm CLRWDT;
+ if(type==4 |type==5){ // 128*64 OLED
+
+ 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(Test==1 | Loss_ind==0) {led_wr_str(4, 16, "L=0.00uH", 8); led_wr_str(6, 16, "C= 0pF", 8); }
+ else if(Test==0 & Loss_ind==1) { // Loss ind
+ 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);
+ }
+ if(Auto) led_wr_str (0, 16+8*12, ".", 1);
+ }
+ else if(type!=0) { // 1602 LCD & 128*32 OLED
+
+ 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(type==1) { // 1602 LCD
+ if(Test==1 | Loss_ind==0) {led_wr_str (0, 9, "L=0.00u", 7); led_wr_str (1, 9, "C= 0p", 7); }
+ else if(Test==0 & Loss_ind==1){ // Loss ind
+ 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);
+ }
+ }
+ else { // 128*32 OLED
+ if(Test==1 | Loss_ind==0) { led_wr_str (0, 9, "L=0.00uH", 8); led_wr_str (1, 9, "C= 0pF", 8); }
+ else if(Test==0 & Loss_ind==1) {
+ 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);
+ }
+ }
+ if(Auto) led_wr_str (0, 8, ".", 1);
+ }
+ asm CLRWDT;
+ if(lcd_prep_short==1) {
+ ind_old = 0;
+ cap_old = 0;
+ if(Loss_ind==0) lcd_ind();
+ }
+ return;
+}
+*/
+
+
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.h.ini b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.h.ini
new file mode 100644
index 0000000..ff17404
--- /dev/null
+++ b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.h.ini
@@ -0,0 +1,9 @@
+[Bookmarks]
+Count=0
+[Position]
+Line=73
+Column=16
+[BreakPoints]
+Count=0
+[FoldedLines]
+Count=0
diff --git a/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.mcl b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.mcl
new file mode 100644
index 0000000..135ec1b
Binary files /dev/null and b/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.0/pic_init.mcl differ