From dbc78b7fac21028e6b5e64f04b7ce163e8d6ad38 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Sun, 24 Dec 2023 09:32:27 +0100 Subject: [PATCH] Vpp added --- main.c | 30 +++++++++++++++--------------- nanovna.h | 6 +++--- plot.c | 7 +++++++ sa_core.c | 4 ++-- ui.c | 7 ++++--- 5 files changed, 31 insertions(+), 23 deletions(-) diff --git a/main.c b/main.c index c8602bd..505f412 100644 --- a/main.c +++ b/main.c @@ -1151,12 +1151,12 @@ const int to_calibrate[5] = {8,9,10,11,12}; #ifdef TINYSA4 const freq_t v5_2_correction_frequency[CORRECTION_SIZE][CORRECTION_POINTS]= { - /* low */ { 100000, 300000, 600000, 2000000, 3000000, 30000000, 60000000, 80000000, 120000000, 150000000, 230000000, 360000000, 520000000, 560000000, 640000000, 750000000, 800000000, 810000000, 820000000, 830000000}, - /* low lna */ { 100000, 300000, 1000000, 5000000, 40000000, 70000000, 180000000, 210000000, 240000000, 250000000, 270000000, 300000000, 330000000, 540000000, 650000000, 740000000, 790000000, 810000000, 820000000, 830000000}, - /* ultra */ { 30000000, 700000000, 980000000, 1910000000, 2550000000, 2800000000, 2810000000, 3020000000, 3120000000, 3430000000, 3750000000, 4230000000, 4480000000, 4810000000, 5430000000, 5640000000, 6390000000, 6660000000, 6980000000, 7250000000}, - /* ultra lna */ { 30000000, 700000000, 1130000000, 1840000000, 2490000000, 2800000000, 2810000000, 3110000000, 3500000000, 3940000000, 4480000000, 4610000000, 4940000000, 5450000000, 6030000000, 6200000000, 6580000000, 6650000000, 7150000000, 7250000000}, - /* direct */ { 140000000, 150000000, 160000000, 180000000, 280000000, 290000000, 300000000, 330000000, 340000000, 350000000, 410000000, 480000000, 560000000, 823000000, 830000000, 850000000, 890000000, 950000000, 1090000000, 1120000000}, - /* direct lna */ { 140000000, 150000000, 170000000, 180000000, 280000000, 290000000, 310000000, 370000000, 440000000, 470000000, 480000000, 560000000, 823000000, 830000000, 850000000, 890000000, 950000000, 1040000000, 1090000000, 1120000000, }, + /* low */ { 100000, 500000, 8000000, 40000000, 60000000, 70000000, 110000000, 300000000, 330000000, 420000000, 450000000, 460000000, 510000000, 560000000, 620000000, 710000000, 760000000, 800000000, 810000000, 830000000}, + /* low lna */ { 100000, 200000, 400000, 700000, 1000000, 2000000, 4000000, 30000000, 50000000, 210000000, 240000000, 260000000, 270000000, 300000000, 330000000, 510000000, 720000000, 790000000, 820000000, 830000000}, + /* ultra */ { 30000000, 700000000, 1900000000, 2600000000, 2800000000, 2850000000, 3200000000, 3750000000, 4300000000, 4600000000, 4900000000, 5000000000, 5300000000, 5600000000, 5750000000, 6000000000, 6450000000, 6700000000, 7050000000, 7250000000}, + /* ultra lna */ { 30000000, 700000000, 2050000000, 2300000000, 2600000000, 2800000000, 2900000000, 3100000000, 3550000000, 3850000000, 4400000000, 4800000000, 5000000000, 5200000000, 5400000000, 6000000000, 6200000000, 6450000000, 6550000000, 7250000000}, + /* direct */ { 140000000, 160000000, 180000000, 280000000, 300000000, 400000000, 420000000, 430000000, 510000000, 560000000, 823000000, 880000000, 930000000, 940000000, 960000000, 990000000, 1060000000, 1080000000, 1110000000, 1130000000}, + /* direct lna */ { 140000000, 180000000, 280000000, 300000000, 330000000, 400000000, 410000000, 430000000, 460000000, 470000000, 490000000, 550000000, 560000000, 823000000, 850000000, 870000000, 940000000, 960000000, 980000000, 1130000000, }, /* harm */ { 30000000, 6000000000, 6195991091, 6302895323, 6400890869, 6899777283, 7104677060, 7398663697, 7701559020, 7799554566, 8200445434, 8298440980, 8503340757, 8904231626, 9002227171, 9100222717, 9198218263, 9296213808, 9501113586, 9804008909, }, /* harm lna */ { 30000000, 6000000000, 6097995546, 6204899777, 6498886414, 6596881960, 6801781737, 7496659243, 7701559020, 7995545657, 8102449889, 8298440980, 8396436526, 8699331849, 8904231626, 9100222717, 9198218263, 9403118040, 9697104677, 10000000000, }, /* out */ { 10000, 30000, 100000, 200000, 600000, 5000000, 170000000, 250000000, 300000000, 390000000, 490000000, 650000000, 690000000, 740000000, 780000000, 800000000, 810000000, 820000000, 823000000, 830000000, }, @@ -1167,12 +1167,12 @@ const freq_t v5_2_correction_frequency[CORRECTION_SIZE][CORRECTION_POINTS]= const float v5_2_correction_value[CORRECTION_SIZE][CORRECTION_POINTS]= { - /* low */ { 2.39, 1.18, 1.2, 0.33, 0.87, 0.4, 1.24, 0.64, 0.99, 0.35, 0.04, 0.88, -0.64, -0.2, -0.36, 0.4, 3.45, 4.8, 8.04, 13.94, }, - /* low lna */ { 5.48, 0.9, -1.57, -3.5, 1.8, 2.47, 2.75, 4.08, 8.47, 9.22, 6.07, 4.54, 4.56, 3.73, 3.77, 4.9, 7.06, 9.11, 12.48, 19.18, }, - /* ultra */ { -0.01, -0.42, -0.53, 0.38, 1.65, 1.35, 2.24, 2.96, 2.88, 4.4, 4.85, 5.43, 7.64, 8.82, 8.2, 11.3, 12.94, 15.53, 22.44, 29.28, }, - /* ultra lna */ { 0.65, 4.24, 4.91, 5.15, 7.38, 6.29, 7.14, 7.09, 10.38, 10.66, 12.3, 11.71, 14.07, 13.1, 19, 19.03, 16.03, 16.88, 32.09, 34.59, }, - /* direct */ { 34.02, 31.94, 30.89, 28.88, 20.1, 20.23, 19.04, 18.06, 16.75, 16.94, 13.39, 10.63, 7.2, -1.19, -1.19, -1.29, -1, -0.0399999999999991, 3.04, 4.03, }, - /* direct lna */ { 29.65, 28.51, 26.73, 25.82, 19.67, 18.67, 16.64, 13.81, 9.73, 7.62, 7.57, 4.58, -3.66, -3.66, -3.67, -3.68, -2.48, -0.379999999999999, 0.859999999999999, 1.53, }, + /* low */ { 2.88, 1.06, 0.9, 0.85, 1.3, 0.72, 0.8, 0.53, 1.03, 0.81, 0.55, 0.05, -0.06, 0.18, -0.28, 0.61, 0.98, 2.89, 3.89, 7.37, }, + /* low lna */ { 6.07, 2.97, 0.76, -0.73, -1.37, -2.36, -2.92, 1.36, 2.67, 3.52, 6.12, 9.45, 9.54, 5.97, 4.72, 3.88, 4.51, 6.38, 9.34, 11.81, }, + /* ultra */ { 0.8, -0.28, 0.73, 2.69, 2.03, 3.31, 3.66, 5.8, 6.23, 9.6, 9.98, 9.93, 9.51, 12.2, 12.78, 11.56, 15.13, 18.42, 26.5, 32.3, }, + /* ultra lna */ { 1.55, 4.69, 6.26, 7.85, 8.56, 7.06, 8.14, 8.05, 11.61, 11.11, 13, 16.08, 15.89, 14.81, 14.94, 19.78, 20.41, 19.04, 19.28, 38, }, + /* direct */ { 34.6, 32.01, 29.84, 21.67, 20.24, 14.92, 14.41, 13.69, 10.25, 8.75, -0.01, -0.14, 0.69, 1.18, 1.19, 1.94, 3.52, 4.36, 5.11, 5.69, }, + /* direct lna */ { 30.57, 26.24, 22.57, 18.99, 16.02, 12.32, 12.31, 11.59, 10.08, 9.92, 8.18, 5.66, 5.68, -2.2, -2.65, -2.68, -1.79, -0.94, -0.89, 3.09, }, /* harm */ { 18.7, 18.91, 19.91, 19.41, 19.91, 21.91, 22.41, 23.91, 26.91, 28.41, 34.41, 36.41, 37.91, 35.94, 35.94, 36.9, 38.44, 40.94, 44.94, 48.94, }, /* harm lna */ { 13.6, 24.41, 23.41, 23.41, 19.91, 19.41, 21.91, 27.41, 31.91, 39.91, 41.91, 43.41, 42.91, 38.91, 40.91, 44.41, 47.91, 57.91, 61.41, 61.46, }, /* out */ { 3.84, 2.31, 1.04, 0.1, -0.82, -1.51, -2.33, -2.25, -2.04, -1.43, -2.2, -2.36, -1.84, -1.23, 0.51, 1.8, 3.17, 6.28, 7.85, 12.37, }, @@ -1786,10 +1786,10 @@ show_one: do_one = true; goto show_one; } -#if MAX_UNIT_TYPE != 6 +#if MAX_UNIT_TYPE != 7 #error "Unit type enum possibly changed, check cmd_trace function" #endif - static const char cmd_type_list[] = "dBm|dBmV|dBuV|RAW|V|W"; + static const char cmd_type_list[] = "dBm|dBmV|dBuV|RAW|V|Vpp|W"; if (argc == 1) { int type = get_str_index(argv[0], cmd_type_list); if (type >= 0) { @@ -2851,7 +2851,7 @@ void set_freq_boundaries(void) { MIN_BELOW_IF_FREQ = 2310000000ULL + config.overclock; // Range to use for below IF } else { MAX_LO_FREQ = 4350000000ULL + config.overclock; - MAX_ABOVE_IF_FREQ = 3360000000ULL + config.overclock; // Range to use for below IF + MAX_ABOVE_IF_FREQ = 3030000000ULL + config.overclock; // Range to use for below IF MIN_BELOW_IF_FREQ = 2310000000ULL + config.overclock; // Range to use for below IF } set_jump_freq( MAX_ABOVE_IF_FREQ, (config.harmonic_start?config.harmonic_start:ULTRA_MAX_FREQ), MIN_BELOW_IF_FREQ); diff --git a/nanovna.h b/nanovna.h index 7cef619..61899fe 100644 --- a/nanovna.h +++ b/nanovna.h @@ -757,9 +757,9 @@ enum trace_type { // Electrical Delay // Phase -#define MAX_UNIT_TYPE 6 // Index of U_DBC +#define MAX_UNIT_TYPE 7 // Index of U_DBC enum unit_type { - U_DBM=0, U_DBMV, U_DBUV, U_RAW, U_VOLT, U_WATT, U_DBC // dBc only for displaying delta marker info + U_DBM=0, U_DBMV, U_DBUV, U_RAW, U_VOLT, U_VPP, U_WATT, U_DBC // dBc only for displaying delta marker info }; #define UNIT_IS_LINEAR(T) ( T >= U_VOLT ? true : false) @@ -1466,7 +1466,7 @@ typedef struct properties { //sizeof(properties_t) == 0x1200 -#define CONFIG_MAGIC 0x434f4e65 /* 'CONF' */ +#define CONFIG_MAGIC 0x434f4e66 /* 'CONF' */ #define SETTING_MAGIC 0x434f4e65 extern int16_t lastsaveid; diff --git a/plot.c b/plot.c index df03e46..8d00e3b 100644 --- a/plot.c +++ b/plot.c @@ -397,6 +397,9 @@ value(const float v) case U_VOLT: // return powf(10.0, (v-30.0)/20.0) * sqrtf(50.0); // powf(10.0, v /20.0) * powf(10, -30.0/20.0) * sqrtf(50) return expf(v*(logf(10.0)/20.0)) * (powf(10, -30.0/20.0)*sqrtf(50));// expf(v*logf(10.0)/20.0) * powf(10, -30.0/20.0) * sqrtf(50) + case U_VPP: +// return powf(10.0, (v-30.0)/20.0) * sqrtf(50.0); // powf(10.0, v /20.0) * powf(10, -30.0/20.0) * sqrtf(50) + return 2.88 * expf(v*(logf(10.0)/20.0)) * (powf(10, -30.0/20.0)*sqrtf(50));// expf(v*logf(10.0)/20.0) * powf(10, -30.0/20.0) * sqrtf(50) case U_WATT: // return powf(10.0, v/10.0)/1000.0; // powf(10.0, v /10.0) / 1000.0 return expf(v*(logf(10.0)/10.0)) / 1000.0; // expf(v*logf(10.0)/10.0) / 1000.0 @@ -418,6 +421,9 @@ to_dBm(const float v) case U_VOLT: // return log10f(v/(sqrtf(50.0)))* 20.0 + 30.0; return logf(v/(sqrtf(50.0)))*(20.0/logf(10.0)) + 30.0; + case U_VPP: +// return log10f(v/(sqrtf(50.0)))* 20.0 + 30.0; + return logf((v/2.88)/(sqrtf(50.0)))*(20.0/logf(10.0)) + 30.0; case U_WATT: // return log10f(v*1000.0)* 10.0; return logf(v*1000.0)*(10.0/logf(10.0)); @@ -480,6 +486,7 @@ trace_into_index_y_array(index_y_t *y, float *array, int points) case U_DBMV: ref_shift = 30.0 + 20.0*log10f(sqrtf(50.0));break; case U_DBUV: ref_shift = 90.0 + 20.0*log10f(sqrtf(50.0));break; case U_VOLT: vmult = powf(10, -30.0/20.0) * sqrtf(50.0); mult = logf(10.0)/20.0;break; + case U_VPP: vmult = 2.88* powf(10, -30.0/20.0) * sqrtf(50.0); mult = logf(10.0)/20.0;break; case U_WATT: vmult = 1.0/1000.0; mult = logf(10.0)/10.0;break; default: return; diff --git a/sa_core.c b/sa_core.c index b3a3502..7d655d5 100644 --- a/sa_core.c +++ b/sa_core.c @@ -100,7 +100,7 @@ static long real_offset = 0; static float old_temp = 0.0; static int LO_spur_shifted; static int LO_mirrored; -static volatile int LO_shifting; +static int LO_shifting; void clear_frequency_cache(void) { @@ -4636,7 +4636,7 @@ again: // Spur redu if (delta < actual_rbw_x10*100) spur = '!'; } - char shifted = ( LO_spur_shifted ? '>' : ' '); + char shifted = (LO_shifting ? '/' : ( LO_spur_shifted ? '>' : ' ')); if (SDU1.config->usbp->state == USB_ACTIVE) shell_printf ("%d:%c%c%c%cLO=%11.6Lq:%11.6Lq\tIF=%11.6Lq:%11.6Lq\tOF=%11.6d\tF=%11.6Lq:%11.6Lq\tD=%.2f:%.2f %c%c%c %d R=%d mod=%d, d=%d\r\n", i, spur, shifted,(LO_mirrored ? 'm' : ' '), (LO_harmonic ? 'h':' ' ), diff --git a/ui.c b/ui.c index 3cdbcfd..7e39b6c 100644 --- a/ui.c +++ b/ui.c @@ -1117,7 +1117,7 @@ const uint8_t right_icons [] = #define KP_n 23 #define KP_p 24 #define KP_ENTER 25 -#define KP_EMPTY 26 +#define KP_EMPTY 99 #define KP_0 31 #define KP_1 32 @@ -5101,7 +5101,8 @@ static const menuitem_t menu_unit[] = { MT_ADV_CALLBACK,U_DBM, "dBm", menu_unit_acb}, { MT_ADV_CALLBACK,U_DBMV, "dBmV", menu_unit_acb}, { MT_ADV_CALLBACK,U_DBUV, "dB"S_MICRO"V", menu_unit_acb}, - { MT_ADV_CALLBACK,U_VOLT, "Volt", menu_unit_acb}, + { MT_ADV_CALLBACK,U_VOLT, "Vrms", menu_unit_acb}, + { MT_ADV_CALLBACK,U_VPP, "Vpp", menu_unit_acb}, //{ MT_ADV_CALLBACK,U_UVOLT, S_MICRO"Volt", menu_unit_acb}, { MT_ADV_CALLBACK,U_WATT, "Watt", menu_unit_acb}, //{ MT_ADV_CALLBACK,U_UWATT, S_MICRO"Watt", menu_unit_acb}, @@ -5881,7 +5882,7 @@ float my_round(float v) } return v; } -const char * const unit_string[MAX_UNIT_TYPE*2] = { "dBm", "dBmV", "dB"S_MICRO"V", "RAW", "V", "W", "dB", "dB", "dB", "RAW", "V", "W" }; // unit + 6 is delta unit +const char * const unit_string[MAX_UNIT_TYPE*2] = { "dBm", "dBmV", "dB"S_MICRO"V", "RAW", "Vrms", "Vpp", "W", "dB", "dB", "dB", "RAW", "Vrms", "Vpp", "W" }; // unit + 6 is delta unit //static const float scale_value[]={50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002, 0.001,0.0005,0.0002, 0.0001}; //static const char * const scale_vtext[]= {"50000", "20000", "10000", "5000", "2000", "1000", "500", "200", "100", "50", "20","10","5","2","1","0.5","0.2","0.1","0.05","0.02","0.01", "0.005","0.002","0.001", "0.0005","0.0002","0.0001"};