Log averaging noise marker corrections

multi_trace
erikkaashoek 5 years ago
parent 3cc0c2b50e
commit a01f0c0021

@ -104,6 +104,7 @@ uint16_t adc_single_read(uint32_t chsel)
uint16_t adc1_single_read(uint32_t chsel)
{
(void)chsel;
/* ADC setup */
adcConvert(&ADCD1, &adcgrpcfgVersion, samples, 1);
return(samples[0]);

@ -1398,7 +1398,7 @@ VNA_SHELL_FUNCTION(cmd_trace)
}
// goto usage;
}
static const char cmd_store_list[] = "store|clear|subtract";
static const char cmd_store_list[] = "store|clear|subtract|value";
if (argc == 1) {
int type = get_str_index(argv[0], cmd_store_list);
if (type >= 0) {
@ -1412,6 +1412,10 @@ VNA_SHELL_FUNCTION(cmd_trace)
case 2:
set_subtract_storage();
goto update;
case 3:
for (int i=0;i<sweep_points;i++) {
shell_printf("trace value %d %.2f\r\n", i, actual_t[i]);
}
}
}
// goto usage;
@ -1438,7 +1442,7 @@ VNA_SHELL_FUNCTION(cmd_trace)
}
goto usage;
}
static const char cmd_load_list[] = "load";
static const char cmd_load_list[] = "value";
if (argc == 3) {
switch (get_str_index(argv[0], cmd_load_list)) {
case 0:

@ -385,6 +385,7 @@ extern float high_out_offset(void);
#define HIGH_OUT_OFFSET high_out_offset()
extern bool debug_avoid;
extern void toggle_debug_avoid(void);
extern float log_averaging_correction;
#else
void set_10mhz(freq_t);
#define LOW_OUT_OFFSET config.low_level_output_offset
@ -1300,6 +1301,7 @@ extern char range_text[20];
#define rccEnableWWDG(lp) rccEnableAPB1(RCC_APB1ENR_WWDGEN, lp)
#define ADC_TOUCH_X ADC_CHANNEL_IN3
#define ADC_TOUCH_Y ADC_CHANNEL_IN4
uint16_t adc1_single_read(uint32_t chsel);
#else
#define ADC_TOUCH_X ADC_CHSELR_CHSEL6
#define ADC_TOUCH_Y ADC_CHSELR_CHSEL7

@ -299,7 +299,7 @@ float
marker_to_value(const int i)
{
#ifdef __MARKER_CACHE__
if (marker_cache_valid[i] && marker_cache_index[i] == markers[i].index)
if (markers[i].mtype & M_AVER && linear_averaging && marker_cache_valid[i] && marker_cache_index[i] == markers[i].index)
return marker_cache[i];
#endif
float *ref_marker_levels;
@ -313,7 +313,7 @@ marker_to_value(const int i)
if (markers[i].mtype & M_NOISE
#ifdef TINYSA4
&& linear_averaging
#endif
#endif
)
setting.unit = U_WATT; // Noise averaging should always be done in Watts
v = 0;
@ -327,7 +327,7 @@ marker_to_value(const int i)
if (markers[i].mtype & M_NOISE){
v = v - logf(actual_rbw_x10*100.0) * (10.0/logf(10.0))
#ifdef TINYSA4
+ SI4463_noise_correction_x10/10.0
+ SI4463_noise_correction_x10/10.0 + (linear_averaging ? 0.0 : log_averaging_correction);
#endif
;
}

@ -67,11 +67,12 @@ int spur_gate = 100;
freq_t ultra_threshold;
bool ultra;
int noise_level;
float log_averaging_correction;
uint32_t old_CFGR;
uint32_t orig_CFGR;
int debug_frequencies = false;
int linear_averaging = true;
int linear_averaging = false;
static freq_t old_freq[5] = { 0, 0, 0, 0,0};
static freq_t real_old_freq[5] = { 0, 0, 0, 0,0};
@ -1485,17 +1486,18 @@ static const struct {
uint16_t offset_delay;
uint16_t spur_div_1000;
int16_t noise_level;
float log_aver_correction;
} step_delay_table[]={
// RBWx10 step_delay offset_delay spur_gate (value divided by 1000)
{ 8500, 150, 50, 400, -90},
{ 6000, 150, 50, 300, -95},
{ 3000, 150, 50, 200, -95},
{ 1000, 600, 100, 100, -105},
{ 300, 800, 120, 100, -110},
{ 100, 1500, 120, 100, -115},
{ 30, 1500, 300, 100, -120},
{ 10, 5000, 600, 100, -122},
{ 3, 19000, 12000, 100, -125}
{ 8500, 150, 50, 400, -90, 0.4},
{ 6000, 150, 50, 300, -95, 0.5},
{ 3000, 150, 50, 200, -95, 0.8},
{ 1000, 600, 100, 100, -105, 0.4},
{ 300, 800, 120, 100, -110, 0.9},
{ 100, 1500, 120, 100, -115, 0.5},
{ 30, 1500, 300, 100, -120, 1.2},
{ 10, 5000, 600, 100, -122, 1.1},
{ 3, 19000, 12000, 100, -125, 1.0}
};
#endif
@ -1527,6 +1529,7 @@ void calculate_step_delay(void)
SI4432_offset_delay = step_delay_table[i].offset_delay;
spur_gate = step_delay_table[i].spur_div_1000 * 1000;
noise_level = step_delay_table[i].noise_level - PURE_TO_float(get_signal_path_loss());
log_averaging_correction = step_delay_table[i].log_aver_correction;
#endif
if (setting.step_delay_mode == SD_PRECISE) // In precise mode wait twice as long for RSSI to stabilize
SI4432_step_delay += (SI4432_step_delay>>2) ;

@ -1183,6 +1183,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_linear_averaging_acb)
return;
}
linear_averaging = ! linear_averaging;
dirty = true;
// menu_move_back();
ui_mode_normal();
}

Loading…
Cancel
Save

Powered by TurnKey Linux.