diff --git a/main.c b/main.c index 51f3d08..24ef665 100644 --- a/main.c +++ b/main.c @@ -990,6 +990,7 @@ config_t config = { .cor_am = -14, .cor_wfm = -17, .cor_nfm = -17, + .ext_zero_level = 128, #endif #ifdef TINYSA4 .vbat_offset = 220, @@ -1010,6 +1011,7 @@ config_t config = { .cor_nfm = -55, .ultra = false, .high_out_adf4350 = true, + .ext_zero_level = 174, #endif .sweep_voltage = 3.3, .switch_offset = 0.0, @@ -2377,6 +2379,7 @@ static const VNAShellCommand commands[] = // {"gamma" , cmd_gamma , 0}, {"scan" , cmd_scan , CMD_WAIT_MUTEX}, {"scanraw" , cmd_scanraw , CMD_WAIT_MUTEX}, + {"zero" , cmd_zero , CMD_WAIT_MUTEX}, {"sweep" , cmd_sweep , 0}, {"test" , cmd_test , 0}, {"touchcal" , cmd_touchcal , CMD_WAIT_MUTEX}, diff --git a/nanovna.h b/nanovna.h index 40105e5..a16c7e5 100644 --- a/nanovna.h +++ b/nanovna.h @@ -616,6 +616,7 @@ typedef struct config { uint8_t high_out_adf4350; float sweep_voltage; float switch_offset; + int16_t ext_zero_level; uint32_t dummy; // uint8_t _reserved[22]; freq_t checksum; @@ -1240,12 +1241,7 @@ typedef uint8_t deviceRSSI_t; typedef int16_t pureRSSI_t; // RSSI values conversion macro -// External programm zero level settings (need decrease on this value -) -#ifdef TINYSA4 -#define EXT_ZERO_LEVEL (174) -#else -#define EXT_ZERO_LEVEL (128) -#endif + #define DEVICE_TO_PURE_RSSI(rssi) ((rssi)<<4) #define PURE_TO_DEVICE_RSSI(rssi) ((rssi)>>4) #define float_TO_PURE_RSSI(rssi) ((rssi)*32) diff --git a/plot.c b/plot.c index 2e863f2..28c0bba 100644 --- a/plot.c +++ b/plot.c @@ -284,7 +284,6 @@ draw_on_strut(int v0, int d, int color) } #endif - /* * calculate log10f(abs(gamma)) */ @@ -940,11 +939,12 @@ draw_cell(int m, int n) #endif // Draw trigger line if (setting.trigger != T_AUTO) { + c = GET_PALTETTE_COLOR(LCD_TRIGGER_COLOR); int tp = get_trigger_level() - y0; if (tp>=0 && tp < h) for (x = 0; x < w; x++) if ((uint32_t)(x + x0 - CELLOFFSETX) <= WIDTH + CELLOFFSETX) - cell_buffer[tp * CELLWIDTH + x] = LCD_TRIGGER_COLOR; + cell_buffer[tp * CELLWIDTH + x] = c; } #if 1 diff --git a/sa_cmd.c b/sa_cmd.c index b66d708..d4a1690 100644 --- a/sa_cmd.c +++ b/sa_cmd.c @@ -328,6 +328,17 @@ VNA_SHELL_FUNCTION(cmd_if) } } +VNA_SHELL_FUNCTION(cmd_zero) +{ + if (argc != 1) { + usage: + shell_printf("usage: zero {level}\r\n%ddBm\r\n", config.ext_zero_level); + return; + } else { + config.ext_zero_level = my_atoi(argv[0]); + } +} + #ifdef TINYSA4 VNA_SHELL_FUNCTION(cmd_ultra_start) { @@ -676,7 +687,7 @@ void sweep_remote(void) for (i = 0; i <= step; i++, f+=delta) { if (operation_requested) break; - int val = perform(false, i, f, false) + float_TO_PURE_RSSI(EXT_ZERO_LEVEL); + int val = perform(false, i, f, false) + float_TO_PURE_RSSI(config.ext_zero_level); streamPut(shell_stream, 'x'); streamPut(shell_stream, (uint8_t)(val & 0xFF)); streamPut(shell_stream, (uint8_t)((val>>8) & 0xFF)); @@ -822,7 +833,7 @@ VNA_SHELL_FUNCTION(cmd_scanraw) dirty = true; for (uint32_t i = 0; iusbp->state != USB_ACTIVE) // break on operation in perform break; streamPut(shell_stream, 'x');