From 068bfacbcfd239094b1f2bb96eab7f3fc149501d Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Thu, 28 May 2020 10:34:34 +0200 Subject: [PATCH] correction table added to config --- .gitignore | 2 ++ main.c | 3 +++ nanovna.h | 5 ++++- sa_cmd.c | 23 +++++++++++++++++++++++ sa_core.c | 41 ++++++++++------------------------------- 5 files changed, 42 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 2e208cd..2486412 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,5 @@ TAGS .emacs-dirvars *png *.bak +version.txt +dorelease.bat diff --git a/main.c b/main.c index 7f413d6..5665021 100644 --- a/main.c +++ b/main.c @@ -826,6 +826,8 @@ config_t config = { .vbat_offset = 500, .low_level_offset = 100, // Uncalibrated .high_level_offset = 100, // Uncalibrated + .correction_frequency = { 100000, 200000, 400000, 1000000, 2000000, 50000000, 100000000, 200000000, 300000000, 350000000 }, + .correction_value = { +4.0, +2.0, +1.5, +0.5, 0.0, 0.0, +1.0, +1.0, +2.5, +5.0 }, }; //properties_t current_props; @@ -2283,6 +2285,7 @@ static const VNAShellCommand commands[] = { "w", cmd_w, 0 }, { "o", cmd_o, 0 }, { "d", cmd_d, 0 }, + { "correction", cmd_correction, 0 }, #ifdef ENABLE_THREADS_COMMAND {"threads" , cmd_threads , 0}, #endif diff --git a/nanovna.h b/nanovna.h index d67e730..fa3318d 100644 --- a/nanovna.h +++ b/nanovna.h @@ -51,6 +51,7 @@ #define actual_t measured[TRACE_ACTUAL] #define temp_t measured[TRACE_TEMP] +#define CORRECTION_POINTS 10 // Frequency dependent level correction table entries typedef float measurement_t[TRACES_MAX][POINTS_COUNT]; extern measurement_t measured; @@ -373,7 +374,9 @@ typedef struct config { uint16_t vbat_offset; int16_t low_level_offset; int16_t high_level_offset; - uint8_t _reserved[22]; + uint32_t correction_frequency[CORRECTION_POINTS]; + float correction_value[CORRECTION_POINTS]; +// uint8_t _reserved[22]; uint32_t checksum; } config_t; diff --git a/sa_cmd.c b/sa_cmd.c index 912e5fe..bbf2882 100644 --- a/sa_cmd.c +++ b/sa_cmd.c @@ -338,3 +338,26 @@ VNA_SHELL_FUNCTION(cmd_w) return; set_RBW(p); } + +VNA_SHELL_FUNCTION(cmd_correction) +{ + (void)argc; + if (argc == 0) { + shell_printf("correction table\r\n"); + shell_printf("index frequency value\r\n"); + for (int i=0; i correction_frequency[i] && i < CORRECTION_POINTS) + while (f > config.correction_frequency[i] && i < CORRECTION_POINTS) i++; if (i >= CORRECTION_POINTS) - return(correction_value[CORRECTION_POINTS-1]); + return(config.correction_value[CORRECTION_POINTS-1]); if (i == 0) - return(correction_value[0]); - f = f - correction_frequency[i-1]; - uint32_t m = correction_frequency[i] - correction_frequency[i-1] ; - float cv = correction_value[i-1] + (correction_value[i] - correction_value[i-1]) * (float)f / (float)m; + return(config.correction_value[0]); + f = f - config.correction_frequency[i-1]; + uint32_t m = config.correction_frequency[i] - config.correction_frequency[i-1] ; + float cv = config.correction_value[i-1] + (config.correction_value[i] - config.correction_value[i-1]) * (float)f / (float)m; return(cv); }