From 2692c3de5970c5f694ec49bc9990a5e32ccd9c49 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Thu, 30 Mar 2023 11:12:33 +0200 Subject: [PATCH] Add overclock, k for PPB, and default no auto name --- main.c | 19 +++++++++-------- nanovna.h | 1 + sa_core.c | 2 +- ui.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 67 insertions(+), 16 deletions(-) diff --git a/main.c b/main.c index 9b9b754..330c913 100644 --- a/main.c +++ b/main.c @@ -967,7 +967,7 @@ config_t config = { #ifdef TINYSA4 .touch_cal = { 444, 715, 3552, 3499 }, // 4 inch panel #endif - ._mode = _MODE_USB | _MODE_AUTO_FILENAME, + ._mode = _MODE_USB, ._serial_speed = SERIAL_DEFAULT_BITRATE, .lcd_palette = LCD_DEFAULT_PALETTE, #ifdef TINYSA3 @@ -1079,6 +1079,7 @@ config_t config = { #ifdef TINYSA4 .direct_start = 965000000UL, .direct_stop = 985000000UL, + .overclock = 0, .hide_21MHz = false, #endif }; @@ -2852,16 +2853,16 @@ int main(void) if (adc1_single_read(0)> 1000) max2871 = true; if (max2871) { - MAX_LO_FREQ = 6000000000ULL; - ULTRA_MAX_FREQ = 6950000000ULL; // Start of harmonic mode - MAX_ABOVE_IF_FREQ = 5021000000ULL; // Range to use for below IF - MIN_BELOW_IF_FREQ = 4041000000ULL; // Range to use for below IF + MAX_LO_FREQ = 6000000000ULL + config.overclock; + ULTRA_MAX_FREQ = 6950000000ULL + config.overclock; // Start of harmonic mode + MAX_ABOVE_IF_FREQ = 5021000000ULL + config.overclock; // Range to use for below IF + MIN_BELOW_IF_FREQ = 4041000000ULL + config.overclock; // Range to use for below IF } else { - ULTRA_MAX_FREQ = 5340000000ULL; // Start of harmonic mode - MAX_LO_FREQ = 4350000000ULL; - MAX_ABOVE_IF_FREQ = 3360000000ULL; // Range to use for below IF - MIN_BELOW_IF_FREQ = 2310000000ULL; // Range to use for below IF + ULTRA_MAX_FREQ = 5340000000ULL + config.overclock; // Start of harmonic mode + MAX_LO_FREQ = 4350000000ULL + config.overclock; + MAX_ABOVE_IF_FREQ = 3360000000ULL + 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, ULTRA_MAX_FREQ); #endif diff --git a/nanovna.h b/nanovna.h index 1aecfd9..c3d61b7 100644 --- a/nanovna.h +++ b/nanovna.h @@ -824,6 +824,7 @@ typedef struct config { freq_t ultra_start; freq_t direct_start; freq_t direct_stop; + freq_t overclock; int8_t ultra; #endif uint8_t input_is_calibrated; diff --git a/sa_core.c b/sa_core.c index 062e248..cd0754e 100644 --- a/sa_core.c +++ b/sa_core.c @@ -507,7 +507,7 @@ void update_min_max_freq(void) if (setting.mixer_output) maxFreq = ULTRA_MAX_FREQ+60000000; // Add 60MHz to go to 5.40GHz else - maxFreq = 4400000000ULL; // 4.4GHz + maxFreq = 4400000000ULL+config.overclock; // 4.4GHz #else maxFreq = MAX_LOW_OUTPUT_FREQ; #endif diff --git a/ui.c b/ui.c index d551089..f800734 100644 --- a/ui.c +++ b/ui.c @@ -1339,7 +1339,7 @@ enum { KM_LIMIT_FREQ, KM_LIMIT_LEVEL, #endif #ifdef __BANDS__ - KM_BAND_START, KM_BAND_END, KM_BAND_LEVEL, + KM_BAND_START, KM_BAND_END, KM_BAND_CENTER, KM_BAND_SPAN, KM_BAND_LEVEL, #endif KM_MARKER_TIME, // #35 @@ -1351,6 +1351,7 @@ enum { #ifdef TINYSA4 KM_DIRECT_START, KM_DIRECT_STOP, + KM_OVERCLOCK, #ifdef __USE_RTC__ KM_RTC_DATE, KM_RTC_TIME, @@ -1383,7 +1384,7 @@ static const struct { [KM_DECAY] = {keypads_positive , "DECAY"}, // KM_DECAY [KM_NOISE] = {keypads_positive , "NOISE\nLEVEL"}, // KM_NOISE #ifdef TINYSA4 -[KM_FREQ_CORR] = {keypads_plusmin , "PPB"}, // KM_FREQ_CORR +[KM_FREQ_CORR] = {keypads_freq , "PPB"}, // KM_FREQ_CORR #else [KM_10MHZ] = {keypads_freq , "FREQ"}, // KM_10MHz #endif @@ -1424,6 +1425,8 @@ static const struct { #ifdef __BANDS__ [KM_BAND_START] = {keypads_freq , "START\nFREQ"}, // KM_BAND_START [KM_BAND_END] = {keypads_freq , "STOP\nFREQ"}, // KM_BAND_END +[KM_BAND_CENTER] = {keypads_freq , "CENTER\nFREQ"}, // KM_BAND_CENTER +[KM_BAND_SPAN] = {keypads_freq , "SPAN\nFREQ"}, // KM_BAND_SPAN [KM_BAND_LEVEL] = {keypads_plusmin_unit , "LEVEL"}, // KM_BAND_LEVEL #endif [KM_MARKER_TIME] = {keypads_time , "MARKER\nTIME"}, // KM_MARKER_TIME @@ -1435,6 +1438,7 @@ static const struct { #ifdef TINYSA4 [KM_DIRECT_START] = {keypads_freq , "DIRECT\nSTART"}, // KM_DIRECT_START [KM_DIRECT_STOP] = {keypads_freq , "DIRECT\nSTOP"}, // KM_DIRECT_STOP +[KM_OVERCLOCK] = {keypads_freq , "OVERCLOCK"}, // KM_OVERCLOCK #ifdef __USE_RTC__ [KM_RTC_DATE] = {keypads_positive , "SET DATE\n YYMMDD"}, // Date [KM_RTC_TIME] = {keypads_positive , "SET TIME\n HHMMSS"}, // Time @@ -4039,6 +4043,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_autoname_acb) return; } config._mode^= _MODE_AUTO_FILENAME; + config_save(); } #ifdef __SD_FILE_BROWSER__ @@ -4287,8 +4292,10 @@ static const menuitem_t menu_limit_select[] = { #ifdef __BANDS__ static const menuitem_t menu_band_modify[] = { - { MT_KEYPAD, KM_BAND_START, "START\n\b%s", "Start"}, - { MT_KEYPAD, KM_BAND_END, "STOP\n\b%s", "Stop"}, + { MT_KEYPAD, KM_BAND_START, "START\n\b%s", "Start"}, + { MT_KEYPAD, KM_BAND_END, "STOP\n\b%s", "Stop"}, + { MT_KEYPAD, KM_BAND_CENTER, "CENTER\n\b%s", "Center"}, + { MT_KEYPAD, KM_BAND_SPAN, "SPAN\n\b%s", "Span"}, { MT_KEYPAD, KM_BAND_LEVEL, "LEVEL\n\b%s", "Level"}, { MT_CALLBACK,0, "DISABLE", menu_BAND_disable_cb}, { MT_NONE, 0, NULL, menu_back} // next-> menu_back @@ -4510,6 +4517,8 @@ static const menuitem_t menu_settings4[] = { MT_ADV_CALLBACK, 0, "DEBUG\nAVOID", menu_debug_avoid_acb}, { MT_ADV_CALLBACK, 0, "DEBUG\nSPUR", menu_debug_spur_acb}, { MT_ADV_CALLBACK, 0, "HIDE\n21MHz", menu_hide_21MHz_acb}, + { MT_KEYPAD, KM_OVERCLOCK, "OVERCLOCK\n\b%s", "Enter overclock amount"}, + #if 0 // only used during development { MT_KEYPAD, KM_COR_AM, "COR\nAM", "Enter AM modulation correction"}, { MT_KEYPAD, KM_COR_WFM, "COR\nWFM", "Enter WFM modulation correction"}, @@ -5138,6 +5147,10 @@ static void fetch_numeric_target(uint8_t mode) uistat.freq_value = config.direct_stop; plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value); break; + case KM_OVERCLOCK: + uistat.freq_value = config.overclock; + plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value); + break; #endif #ifdef __LIMITS__ case KM_LIMIT_FREQ: @@ -5151,11 +5164,19 @@ static void fetch_numeric_target(uint8_t mode) #endif #ifdef __BANDS__ case KM_BAND_START: - uistat.freq_value = setting.bands[active_band].start; + uistat.freq_value = setting.bands[active_band].start + (setting.frequency_offset - FREQUENCY_SHIFT);; plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value); break; case KM_BAND_END: - uistat.freq_value = setting.bands[active_band].end; + uistat.freq_value = setting.bands[active_band].end + (setting.frequency_offset - FREQUENCY_SHIFT);; + plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value); + break; + case KM_BAND_CENTER: + uistat.freq_value = (setting.bands[active_band].start + setting.bands[active_band].start)/2 + (setting.frequency_offset - FREQUENCY_SHIFT); + plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value); + break; + case KM_BAND_SPAN: + uistat.freq_value = setting.bands[active_band].end-setting.bands[active_band].start; plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value); break; case KM_BAND_LEVEL: @@ -5368,6 +5389,10 @@ set_numeric_value(void) config.direct_stop = uistat.freq_value; config_save(); break; + case KM_OVERCLOCK: + config.overclock = uistat.freq_value; + config_save(); + break; #endif #ifdef TINYSA4 case KM_EXP_AVER: @@ -5403,6 +5428,30 @@ set_numeric_value(void) update_grid(); // BANDs_update(); break; + case KM_BAND_CENTER: + { + freq_t span = (setting.bands[active_band].end - setting.bands[active_band].start); + freq_t center = (setting.bands[active_band].end - setting.bands[active_band].start) + uistat.freq_value - (setting.frequency_offset - FREQUENCY_SHIFT); + setting.bands[active_band].start = center - span/2; + setting.bands[active_band].end = center + span/2; + update_frequencies(); + dirty = true; + update_grid(); + } +// BANDs_update(); + break; + case KM_BAND_SPAN: + { + freq_t span = uistat.freq_value; + freq_t center = (setting.bands[active_band].end + setting.bands[active_band].start)/2; + setting.bands[active_band].start = center - span/2; + setting.bands[active_band].end = center + span/2; + update_frequencies(); + dirty = true; + update_grid(); +// BANDs_update(); + } + break; case KM_BAND_LEVEL: setting.bands[active_band].level = to_dBm(uistat.value); update_frequencies();