From a534f5fad4f6c4f2327792adccd33cf95e849805 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Fri, 11 Sep 2020 08:56:14 +0200 Subject: [PATCH] Repair load preset --- flash.c | 2 +- nanovna.h | 1 + sa_core.c | 57 ++++++++++++++++++++++++++++++++++++------------------- ui_sa.c | 2 +- 4 files changed, 41 insertions(+), 21 deletions(-) diff --git a/flash.c b/flash.c index d7454a0..b204a95 100644 --- a/flash.c +++ b/flash.c @@ -188,7 +188,7 @@ caldata_recall(uint16_t id) memcpy(dst, src, sizeof(setting_t)); // Restore stored trace memcpy(stored_t, &src[1], sizeof(stored_t)); - + update_min_max_freq(); update_frequencies(); set_scale(setting.scale); set_reflevel(setting.reflevel); diff --git a/nanovna.h b/nanovna.h index b9e2e13..8205cd3 100644 --- a/nanovna.h +++ b/nanovna.h @@ -172,6 +172,7 @@ extern const char *info_about[]; // ------------------------------- sa_core.c ---------------------------------- void reset_settings(int); +void update_min_max_freq(void); //void ui_process_touch(void); void SetPowerGrid(int); void SetRefLevel(float); diff --git a/sa_core.c b/sa_core.c index 6435add..92af0be 100644 --- a/sa_core.c +++ b/sa_core.c @@ -62,10 +62,44 @@ this is a very long string only used to fill memory so I know when the memory is ; #endif +void update_min_max_freq(void) +{ + switch(setting.mode) { + case M_LOW: + minFreq = 0; + maxFreq = 350000000; + break; +#ifdef __ULTRA__ + case M_ULTRA: + minFreq = 674000000; + maxFreq = 4300000000; + break; +#endif + case M_GENLOW: + minFreq = 0; + maxFreq = 350000000; + break; + case M_HIGH: +#ifdef __ULTRA_SA__ + minFreq = 00000000; + maxFreq = 2000000000; +#else + minFreq = 24*setting_frequency_10mhz; + maxFreq = 96*setting_frequency_10mhz; +#endif + break; + case M_GENHIGH: + minFreq = 240000000; + maxFreq = 960000000; + break; + } +} + void reset_settings(int m) { // strcpy((char *)spi_buffer, dummy); setting.mode = m; + update_min_max_freq(); sweep_mode |= SWEEP_ENABLE; setting.unit_scale_index = 0; setting.unit_scale = 1; @@ -116,48 +150,33 @@ void reset_settings(int m) #endif switch(m) { case M_LOW: - minFreq = 0; - maxFreq = 350000000; - set_sweep_frequency(ST_START, (uint32_t) 0); - set_sweep_frequency(ST_STOP, (uint32_t) 350000000); + set_sweep_frequency(ST_START, minFreq); + set_sweep_frequency(ST_STOP, maxFreq); setting.attenuate = 30.0; setting.auto_attenuation = true; setting.sweep_time_us = 0; break; #ifdef __ULTRA__ case M_ULTRA: - minFreq = 674000000; - maxFreq = 4300000000; - set_sweep_frequency(ST_START, (uint32_t) minFreq); - set_sweep_frequency(ST_STOP, (uint32_t) maxFreq); + set_sweep_frequency(ST_START, minFreq); + set_sweep_frequency(ST_STOP, maxFreq); setting.attenuate = 0; setting.sweep_time_us = 0; break; #endif case M_GENLOW: setting.drive=8; - minFreq = 0; - maxFreq = 350000000; set_sweep_frequency(ST_CENTER, 10000000); set_sweep_frequency(ST_SPAN, 0); setting.sweep_time_us = 10*ONE_SECOND_TIME; break; case M_HIGH: -#ifdef __ULTRA_SA__ - minFreq = 00000000; - maxFreq = 2000000000; -#else - minFreq = 24*setting_frequency_10mhz; - maxFreq = 96*setting_frequency_10mhz; -#endif set_sweep_frequency(ST_START, minFreq); set_sweep_frequency(ST_STOP, maxFreq); setting.sweep_time_us = 0; break; case M_GENHIGH: setting.drive=8; - minFreq = 240000000; - maxFreq = 960000000; set_sweep_frequency(ST_CENTER, 300000000); set_sweep_frequency(ST_SPAN, 0); setting.sweep_time_us = 10*ONE_SECOND_TIME; diff --git a/ui_sa.c b/ui_sa.c index 07f0245..86a64e0 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -499,7 +499,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_load_preset_acb) } if (caldata_recall(data) == -1) { if (data == 0) - reset_settings(setting.mode); // Restore all defaults + reset_settings(setting.mode); // Restore factory defaults else { draw_menu(); return;