From 8acbfbc80dea08ecabc2a331098e6e3c06f2321e Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Tue, 26 Sep 2023 11:06:24 +0100 Subject: [PATCH] overcome a compiler issue (neg numbers in const tables) - strange problem --- am_fix.c | 296 ++++++++++++++++++++++++-------------------- firmware.bin | Bin 53412 -> 53452 bytes firmware.packed.bin | Bin 53430 -> 53470 bytes utils/main.cpp | 2 +- utils/misc.exe | Bin 18944 -> 18944 bytes 5 files changed, 163 insertions(+), 135 deletions(-) diff --git a/am_fix.c b/am_fix.c index 0bc7aeb..a284303 100644 --- a/am_fix.c +++ b/am_fix.c @@ -99,11 +99,13 @@ const uint8_t orig_pga = 6; // -3dB // // these 4 tables need a measuring/calibration update // -// static const int16_t lna_short_dB[] = {-19, -16, -11, 0}; // was - static const int16_t lna_short_dB[] = {-33, -30 -24, 0}; // corrected'ish - static const int16_t lna_dB[] = {-24, -19, -14, -9, -6, -4, -2, 0}; - static const int16_t mixer_dB[] = { -8, -6, -3, 0}; - static const int16_t pga_dB[] = {-33, -27, -21, -15, -9, -6, -3, 0}; + // QUESTION: why do I have to surround the negative numbers in brackets ??? .. if I don't then the table contains wrong numbers + // +// static const int16_t lna_short_dB[] = { -19, -16, -11, 0}; // was (but wrong) + static const int16_t lna_short_dB[] = { (-33), (-30), (-24), 0}; // corrected'ish + static const int16_t lna_dB[] = { (-24), (-19), (-14), ( -9), (-6), (-4), (-2), 0}; + static const int16_t mixer_dB[] = { ( -8), ( -6), ( -3), 0}; + static const int16_t pga_dB[] = { (-33), (-27), (-21), (-15), (-9), (-6), (-3), 0}; // lookup table is hugely easier than writing code to do the same // @@ -212,76 +214,82 @@ const uint8_t orig_pga = 6; // -3dB {1, 2, 0, 1}, // 18 .. -30dB -14dB -8dB -27dB .. -79dB {0, 3, 2, 0}, // 19 .. -33dB -9dB -3dB -33dB .. -78dB {1, 4, 0, 0}, // 20 .. -30dB -6dB -8dB -33dB .. -77dB - {0, 2, 0, 2}, // 21 .. -33dB -14dB -8dB -21dB .. -76dB - {0, 3, 3, 0}, // 22 .. -33dB -9dB 0dB -33dB .. -75dB + {1, 1, 3, 1}, // 21 .. -30dB -19dB 0dB -27dB .. -76dB + {0, 0, 2, 3}, // 22 .. -33dB -24dB -3dB -15dB .. -75dB {1, 3, 0, 1}, // 23 .. -30dB -9dB -8dB -27dB .. -74dB - {1, 2, 0, 2}, // 24 .. -30dB -14dB -8dB -21dB .. -73dB - {1, 1, 0, 3}, // 25 .. -30dB -19dB -8dB -15dB .. -72dB - {1, 4, 0, 1}, // 26 .. -30dB -6dB -8dB -27dB .. -71dB - {1, 5, 2, 0}, // 27 .. -30dB -4dB -3dB -33dB .. -70dB - {1, 4, 1, 1}, // 28 .. -30dB -6dB -6dB -27dB .. -69dB - {2, 2, 2, 1}, // 29 .. -24dB -14dB -3dB -27dB .. -68dB - {2, 1, 2, 2}, // 30 .. -24dB -19dB -3dB -21dB .. -67dB - {2, 0, 2, 3}, // 31 .. -24dB -24dB -3dB -15dB .. -66dB - {1, 0, 0, 6}, // 32 .. -30dB -24dB -8dB -3dB .. -65dB + {1, 6, 0, 0}, // 24 .. -30dB -2dB -8dB -33dB .. -73dB + {0, 7, 1, 0}, // 25 .. -33dB 0dB -6dB -33dB .. -72dB + {0, 6, 2, 0}, // 26 .. -33dB -2dB -3dB -33dB .. -71dB + {2, 1, 3, 1}, // 27 .. -24dB -19dB 0dB -27dB .. -70dB + {0, 3, 1, 2}, // 28 .. -33dB -9dB -6dB -21dB .. -69dB + {0, 0, 0, 6}, // 29 .. -33dB -24dB -8dB -3dB .. -68dB + {0, 5, 2, 1}, // 30 .. -33dB -4dB -3dB -27dB .. -67dB + {0, 0, 1, 6}, // 31 .. -33dB -24dB -6dB -3dB .. -66dB + {1, 2, 3, 2}, // 32 .. -30dB -14dB 0dB -21dB .. -65dB {2, 1, 1, 3}, // 33 .. -24dB -19dB -6dB -15dB .. -64dB - {0, 3, 1, 3}, // 34 .. -33dB -9dB -6dB -15dB .. -63dB - {2, 3, 0, 2}, // 35 .. -24dB -9dB -8dB -21dB .. -62dB - {2, 1, 2, 3}, // 36 .. -24dB -19dB -3dB -15dB .. -61dB - {2, 3, 1, 2}, // 37 .. -24dB -9dB -6dB -21dB .. -60dB - {2, 2, 3, 2}, // 38 .. -24dB -14dB 0dB -21dB .. -59dB - {2, 1, 1, 4}, // 39 .. -24dB -19dB -6dB -9dB .. -58dB - {2, 4, 1, 2}, // 40 .. -24dB -6dB -6dB -21dB .. -57dB - {1, 2, 2, 4}, // 41 .. -30dB -14dB -3dB -9dB .. -56dB - {2, 1, 1, 5}, // 42 .. -24dB -19dB -6dB -6dB .. -55dB - {2, 3, 3, 2}, // 43 .. -24dB -9dB 0dB -21dB .. -54dB - {1, 3, 0, 5}, // 44 .. -30dB -9dB -8dB -6dB .. -53dB - {1, 5, 2, 3}, // 45 .. -30dB -4dB -3dB -15dB .. -52dB - {1, 3, 1, 5}, // 46 .. -30dB -9dB -6dB -6dB .. -51dB - {0, 2, 2, 7}, // 47 .. -33dB -14dB -3dB 0dB .. -50dB - {2, 1, 1, 7}, // 48 .. -24dB -19dB -6dB 0dB .. -49dB - {0, 4, 2, 5}, // 49 .. -33dB -6dB -3dB -6dB .. -48dB - {1, 2, 3, 6}, // 50 .. -30dB -14dB 0dB -3dB .. -47dB - {1, 5, 1, 5}, // 51 .. -30dB -4dB -6dB -6dB .. -46dB - {3, 0, 3, 2}, // 52 .. 0dB -24dB 0dB -21dB .. -45dB - {3, 2, 2, 1}, // 53 .. 0dB -14dB -3dB -27dB .. -44dB - {2, 5, 1, 4}, // 54 .. -24dB -4dB -6dB -9dB .. -43dB - {1, 4, 2, 6}, // 55 .. -30dB -6dB -3dB -3dB .. -42dB - {3, 0, 0, 4}, // 56 .. 0dB -24dB -8dB -9dB .. -41dB - {0, 5, 3, 6}, // 57 .. -33dB -4dB 0dB -3dB .. -40dB - {2, 4, 2, 5}, // 58 .. -24dB -6dB -3dB -6dB .. -39dB - {3, 0, 0, 5}, // 59 .. 0dB -24dB -8dB -6dB .. -38dB - {0, 5, 3, 7}, // 60 .. -33dB -4dB 0dB 0dB .. -37dB - {2, 3, 3, 6}, // 61 .. -24dB -9dB 0dB -3dB .. -36dB - {3, 4, 0, 2}, // 62 .. 0dB -6dB -8dB -21dB .. -35dB - {3, 1, 1, 4}, // 63 .. 0dB -19dB -6dB -9dB .. -34dB - {3, 0, 3, 4}, // 64 .. 0dB -24dB 0dB -9dB .. -33dB - {3, 3, 0, 3}, // 65 .. 0dB -9dB -8dB -15dB .. -32dB - {3, 1, 1, 5}, // 66 .. 0dB -19dB -6dB -6dB .. -31dB - {3, 0, 2, 6}, // 67 .. 0dB -24dB -3dB -3dB .. -30dB - {3, 2, 3, 3}, // 68 .. 0dB -14dB 0dB -15dB .. -29dB + {1, 7, 3, 0}, // 34 .. -30dB 0dB 0dB -33dB .. -63dB + {1, 3, 0, 3}, // 35 .. -30dB -9dB -8dB -15dB .. -62dB + {0, 1, 2, 5}, // 36 .. -33dB -19dB -3dB -6dB .. -61dB + {2, 0, 2, 4}, // 37 .. -24dB -24dB -3dB -9dB .. -60dB + {1, 6, 3, 1}, // 38 .. -30dB -2dB 0dB -27dB .. -59dB + {1, 2, 0, 5}, // 39 .. -30dB -14dB -8dB -6dB .. -58dB + {2, 5, 0, 2}, // 40 .. -24dB -4dB -8dB -21dB .. -57dB + {2, 6, 2, 1}, // 41 .. -24dB -2dB -3dB -27dB .. -56dB + {0, 5, 2, 3}, // 42 .. -33dB -4dB -3dB -15dB .. -55dB + {2, 0, 2, 6}, // 43 .. -24dB -24dB -3dB -3dB .. -54dB + {0, 3, 0, 6}, // 44 .. -33dB -9dB -8dB -3dB .. -53dB + {0, 6, 0, 4}, // 45 .. -33dB -2dB -8dB -9dB .. -52dB + {0, 3, 1, 6}, // 46 .. -33dB -9dB -6dB -3dB .. -51dB + {1, 2, 3, 5}, // 47 .. -30dB -14dB 0dB -6dB .. -50dB + {0, 5, 1, 5}, // 48 .. -33dB -4dB -6dB -6dB .. -49dB + {0, 3, 3, 5}, // 49 .. -33dB -9dB 0dB -6dB .. -48dB + {0, 6, 2, 4}, // 50 .. -33dB -2dB -3dB -9dB .. -47dB + {1, 5, 2, 4}, // 51 .. -30dB -4dB -3dB -9dB .. -46dB + {3, 0, 1, 3}, // 52 .. 0dB -24dB -6dB -15dB .. -45dB + {0, 6, 1, 6}, // 53 .. -33dB -2dB -6dB -3dB .. -44dB + {1, 5, 2, 5}, // 54 .. -30dB -4dB -3dB -6dB .. -43dB + {0, 4, 2, 7}, // 55 .. -33dB -6dB -3dB 0dB .. -42dB + {2, 2, 2, 7}, // 56 .. -24dB -14dB -3dB 0dB .. -41dB + {2, 5, 2, 4}, // 57 .. -24dB -4dB -3dB -9dB .. -40dB + {2, 3, 3, 5}, // 58 .. -24dB -9dB 0dB -6dB .. -39dB + {1, 6, 3, 5}, // 59 .. -30dB -2dB 0dB -6dB .. -38dB + {2, 5, 1, 6}, // 60 .. -24dB -4dB -6dB -3dB .. -37dB + {3, 3, 3, 1}, // 61 .. 0dB -9dB 0dB -27dB .. -36dB + {3, 2, 3, 2}, // 62 .. 0dB -14dB 0dB -21dB .. -35dB + {2, 5, 2, 6}, // 63 .. -24dB -4dB -3dB -3dB .. -34dB + {3, 0, 1, 6}, // 64 .. 0dB -24dB -6dB -3dB .. -33dB + {3, 0, 0, 7}, // 65 .. 0dB -24dB -8dB 0dB .. -32dB + {2, 5, 3, 6}, // 66 .. -24dB -4dB 0dB -3dB .. -31dB + {3, 3, 3, 2}, // 67 .. 0dB -9dB 0dB -21dB .. -30dB + {2, 6, 3, 6}, // 68 .. -24dB -2dB 0dB -3dB .. -29dB {3, 2, 0, 5}, // 69 .. 0dB -14dB -8dB -6dB .. -28dB - {3, 4, 1, 3}, // 70 .. 0dB -6dB -6dB -15dB .. -27dB - {3, 2, 2, 4}, // 71 .. 0dB -14dB -3dB -9dB .. -26dB - {3, 1, 2, 6}, // 72 .. 0dB -19dB -3dB -3dB .. -25dB - {3, 3, 1, 4}, // 73 .. 0dB -9dB -6dB -9dB .. -24dB - {3, 2, 1, 6}, // 74 .. 0dB -14dB -6dB -3dB .. -23dB - {3, 5, 2, 3}, // 75 .. 0dB -4dB -3dB -15dB .. -22dB - {3, 4, 1, 4}, // 76 .. 0dB -6dB -6dB -9dB .. -21dB - {3, 4, 0, 5}, // 77 .. 0dB -6dB -8dB -6dB .. -20dB - {3, 5, 1, 4}, // 78 .. 0dB -4dB -6dB -9dB .. -19dB + {3, 5, 0, 3}, // 70 .. 0dB -4dB -8dB -15dB .. -27dB + {3, 3, 0, 4}, // 71 .. 0dB -9dB -8dB -9dB .. -26dB + {3, 1, 1, 7}, // 72 .. 0dB -19dB -6dB 0dB .. -25dB + {3, 4, 2, 3}, // 73 .. 0dB -6dB -3dB -15dB .. -24dB + {3, 4, 0, 4}, // 74 .. 0dB -6dB -8dB -9dB .. -23dB + {3, 2, 0, 7}, // 75 .. 0dB -14dB -8dB 0dB .. -22dB + {3, 7, 1, 3}, // 76 .. 0dB 0dB -6dB -15dB .. -21dB + {3, 6, 2, 3}, // 77 .. 0dB -2dB -3dB -15dB .. -20dB + {3, 5, 3, 3}, // 78 .. 0dB -4dB 0dB -15dB .. -19dB {3, 3, 3, 4}, // 79 .. 0dB -9dB 0dB -9dB .. -18dB {3, 2, 3, 6}, // 80 .. 0dB -14dB 0dB -3dB .. -17dB original - {3, 5, 1, 5}, // 81 .. 0dB -4dB -6dB -6dB .. -16dB - {3, 3, 1, 7}, // 82 .. 0dB -9dB -6dB 0dB .. -15dB + {3, 6, 0, 5}, // 81 .. 0dB -2dB -8dB -6dB .. -16dB + {3, 7, 1, 4}, // 82 .. 0dB 0dB -6dB -9dB .. -15dB {3, 2, 3, 7}, // 83 .. 0dB -14dB 0dB 0dB .. -14dB - {3, 5, 1, 6}, // 84 .. 0dB -4dB -6dB -3dB .. -13dB - {3, 4, 2, 6}, // 85 .. 0dB -6dB -3dB -3dB .. -12dB - {3, 5, 2, 6}, // 86 .. 0dB -4dB -3dB -3dB .. -10dB - {3, 4, 3, 6}, // 87 .. 0dB -6dB 0dB -3dB .. -9dB - {3, 5, 2, 7}, // 88 .. 0dB -4dB -3dB 0dB .. -7dB - {3, 4, 3, 7}, // 89 .. 0dB -6dB 0dB 0dB .. -6dB - {3, 5, 3, 7} // 90 .. 0dB -4dB 0dB 0dB .. -4dB + {3, 6, 0, 6}, // 84 .. 0dB -2dB -8dB -3dB .. -13dB + {3, 3, 2, 7}, // 85 .. 0dB -9dB -3dB 0dB .. -12dB + {3, 7, 0, 6}, // 86 .. 0dB 0dB -8dB -3dB .. -11dB + {3, 5, 3, 5}, // 87 .. 0dB -4dB 0dB -6dB .. -10dB + {3, 7, 2, 5}, // 88 .. 0dB 0dB -3dB -6dB .. -9dB + {3, 6, 3, 5}, // 89 .. 0dB -2dB 0dB -6dB .. -8dB + {3, 5, 2, 7}, // 90 .. 0dB -4dB -3dB 0dB .. -7dB + {3, 7, 2, 6}, // 91 .. 0dB 0dB -3dB -3dB .. -6dB + {3, 6, 2, 7}, // 92 .. 0dB -2dB -3dB 0dB .. -5dB + {3, 5, 3, 7}, // 93 .. 0dB -4dB 0dB 0dB .. -4dB + {3, 7, 2, 7}, // 94 .. 0dB 0dB -3dB 0dB .. -3dB + {3, 6, 3, 7}, // 95 .. 0dB -2dB 0dB 0dB .. -2dB + {3, 7, 3, 7} // 96 .. 0dB 0dB 0dB 0dB .. 0dB }; const unsigned int original_index = 80; @@ -306,6 +314,9 @@ const uint8_t orig_pga = 6; // -3dB // used to correct the RSSI readings after our front end gain adjustments int16_t rssi_db_gain_diff[2] = {0, 0}; + // used to limit the max front end gain + unsigned int max_index = ARRAY_SIZE(am_fix_gain_table) - 1; + void AM_fix_reset(const int vfo) { // reset the AM fixer @@ -322,6 +333,26 @@ const uint8_t orig_pga = 6; // -3dB #endif am_fix_gain_table_index_prev[vfo] = 0; + + #if 0 + { // set the maximum gain we want to use +// const int16_t max_gain_dB = lna_short_dB[orig_lna_short] + lna_dB[orig_lna] + mixer_dB[orig_mixer] + pga_dB[orig_pga]; + const int16_t max_gain_dB = -10; + max_index = ARRAY_SIZE(am_fix_gain_table); + while (--max_index > 1) + { + const uint8_t lna_short = am_fix_gain_table[max_index].lna_short; + const uint8_t lna = am_fix_gain_table[max_index].lna; + const uint8_t mixer = am_fix_gain_table[max_index].mixer; + const uint8_t pga = am_fix_gain_table[max_index].pga; + const int16_t gain_dB = lna_short_dB[lna_short] + lna_dB[lna] + mixer_dB[mixer] + pga_dB[pga]; + if (gain_dB <= max_gain_dB) + break; + } + } + #else + max_index = ARRAY_SIZE(am_fix_gain_table) - 1; + #endif } // adjust the RX RF gain to try and prevent the AM demodulator from @@ -360,35 +391,36 @@ const uint8_t orig_pga = 6; // -3dB break; } - { // sample the current RSSI level, average it with the previous rssi + { // sample the current RSSI level + // average it with the previous rssi (a bit of noise/spike immunity) const int16_t new_rssi = BK4819_GetRSSI(); -// rssi = (prev_rssi[vfo] > 0) ? (prev_rssi[vfo] + new_rssi) / 2 : new_rssi; - rssi = (prev_rssi[vfo] > 0 && new_rssi > prev_rssi[vfo]) ? (prev_rssi[vfo] + new_rssi) / 2 : new_rssi; + rssi = (prev_rssi[vfo] > 0) ? (prev_rssi[vfo] + new_rssi) / 2 : new_rssi; +// rssi = (new_rssi > prev_rssi[vfo] && prev_rssi[vfo] > 0) ? (prev_rssi[vfo] + new_rssi) / 2 : new_rssi; prev_rssi[vfo] = new_rssi; } + { // save the corrected RSSI level + const int16_t new_rssi = rssi - (rssi_db_gain_diff[vfo] * 2); + if (gCurrentRSSI[vfo] != new_rssi) + { + gCurrentRSSI[vfo] = new_rssi; + gUpdateDisplay = true; + } + } + #ifdef ENABLE_AM_FIX_TEST1 // user is manually adjusting a gain register - don't do anything automatically - { + { int i = 1 + (int)gSetting_AM_fix_test1; i = (i < 1) ? 1 : (i > ((int)ARRAY_SIZE(am_fix_gain_table) - 1) ? ARRAY_SIZE(am_fix_gain_table) - 1 : i; - am_fix_gain_table_index[vfo] = i; + + if (am_fix_gain_table_index[vfo] == i) + return; // no change } - - if (am_gain_hold_counter[vfo] > 0) - { - if (--am_gain_hold_counter[vfo] > 0) - { - gCurrentRSSI[vfo] = rssi - (rssi_db_gain_diff[vfo] * 2); // save the corrected RSSI level - return; - } - } - - am_gain_hold_counter[vfo] = 30; // update register once every 300ms #else - // automatically choose a front end gain setting by monitoring the RSSI + // automatically adjust the RF RX gain if (am_gain_hold_counter[vfo] > 0) am_gain_hold_counter[vfo]--; @@ -399,19 +431,19 @@ const uint8_t orig_pga = 6; // -3dB if (diff_dB > 0) { // decrease gain - if (diff_dB >= 12) + unsigned int index = am_fix_gain_table_index[vfo]; // current position we're at + + if (diff_dB >= 10) { // jump immediately to a new gain setting // this greatly speeds up initial gain reduction (but reduces noise/spike immunity) - unsigned int index = am_fix_gain_table_index[vfo]; // current position we're at - - unsigned int lna_short = am_fix_gain_table[index].lna_short; - unsigned int lna = am_fix_gain_table[index].lna; - unsigned int mixer = am_fix_gain_table[index].mixer; - unsigned int pga = am_fix_gain_table[index].pga; + uint8_t lna_short = am_fix_gain_table[index].lna_short; + uint8_t lna = am_fix_gain_table[index].lna; + uint8_t mixer = am_fix_gain_table[index].mixer; + uint8_t pga = am_fix_gain_table[index].pga; // const int16_t desired_gain_dB = lna_short_dB[lna_short] + lna_dB[lna] + mixer_dB[mixer] + pga_dB[pga] - diff_dB; - const int16_t desired_gain_dB = lna_short_dB[lna_short] + lna_dB[lna] + mixer_dB[mixer] + pga_dB[pga] - diff_dB + 6; // 6dB headroom + const int16_t desired_gain_dB = lna_short_dB[lna_short] + lna_dB[lna] + mixer_dB[mixer] + pga_dB[pga] - diff_dB + 8; // get no closer than 8dB (bit of noise/spike immunity) // scan the table to see what index to jump straight too while (index > 1) @@ -430,43 +462,38 @@ const uint8_t orig_pga = 6; // -3dB } } - //am_fix_gain_table_index[vfo] = (am_fix_gain_table_index[vfo] + index) / 2; // easy does it - am_fix_gain_table_index[vfo] = index; // noo, go now ! + //index = (am_fix_gain_table_index[vfo] + index) / 2; // easy does it } else { // incrementally reduce the gain .. taking it slow improves noise/spike immunity -// if (am_fix_gain_table_index[vfo] >= (1 + 3) && diff_dB >= 3) -// am_fix_gain_table_index[vfo] -= 3; // faster gain reduction +// if (index >= (1 + 3) && diff_dB >= 3) +// index -= 3; // faster gain reduction // else - if (am_fix_gain_table_index[vfo] > 1) - am_fix_gain_table_index[vfo]--; // slow step-by-step gain reduction + if (index > 1) + index--; // slow step-by-step gain reduction } + + index = (index < 1) ? 1 : (index > max_index) ? max_index : index; - am_gain_hold_counter[vfo] = 30; // 300ms hold + if (am_fix_gain_table_index[vfo] != index) + { + am_fix_gain_table_index[vfo] = index; + am_gain_hold_counter[vfo] = 30; // 300ms hold + } } - else if (diff_dB >= -4) // 4dB hysterisis (help reduce gain hunting) am_gain_hold_counter[vfo] = 30; // 300ms hold if (am_gain_hold_counter[vfo] == 0) { // hold has been released, we're free to increase gain - - if (diff_dB < -4) // 4dB hysterisis (help reduce gain hunting) - { // increase gain - - if (am_fix_gain_table_index[vfo] < (ARRAY_SIZE(am_fix_gain_table) - 1)) - am_fix_gain_table_index[vfo]++; - } + const unsigned int index = am_fix_gain_table_index[vfo] + 1; + am_fix_gain_table_index[vfo] = (index > max_index) ? max_index : index; // limit the gain } if (am_fix_gain_table_index[vfo] == am_fix_gain_table_index_prev[vfo]) - { // no gain changes have been made - - gCurrentRSSI[vfo] = rssi - (rssi_db_gain_diff[vfo] * 2); // save the corrected RSSI level - return; - } + return; // no gain changes have been made #endif @@ -474,10 +501,10 @@ const uint8_t orig_pga = 6; // -3dB const unsigned int index = am_fix_gain_table_index[vfo]; - const uint16_t lna_short = am_fix_gain_table[index].lna_short; - const uint16_t lna = am_fix_gain_table[index].lna; - const uint16_t mixer = am_fix_gain_table[index].mixer; - const uint16_t pga = am_fix_gain_table[index].pga; + const uint8_t lna_short = am_fix_gain_table[index].lna_short; + const uint8_t lna = am_fix_gain_table[index].lna; + const uint8_t mixer = am_fix_gain_table[index].mixer; + const uint8_t pga = am_fix_gain_table[index].pga; const int16_t orig_dB_gain = lna_short_dB[orig_lna_short] + lna_dB[orig_lna] + mixer_dB[orig_mixer] + pga_dB[orig_pga]; const int16_t am_dB_gain = lna_short_dB[lna_short] + lna_dB[lna] + mixer_dB[mixer] + pga_dB[pga]; @@ -489,15 +516,20 @@ const uint8_t orig_pga = 6; // -3dB // gain difference from original QS setting rssi_db_gain_diff[vfo] = am_dB_gain - orig_dB_gain; - // save the corrected RSSI level - gCurrentRSSI[vfo] = rssi - (rssi_db_gain_diff[vfo] * 2); - // remember the new table index am_fix_gain_table_index_prev[vfo] = index; + + { // save the corrected RSSI level + const int16_t new_rssi = rssi - (rssi_db_gain_diff[vfo] * 2); + if (gCurrentRSSI[vfo] != new_rssi) + { + gCurrentRSSI[vfo] = new_rssi; + gUpdateDisplay = true; + } + } } #ifdef ENABLE_AM_FIX_SHOW_DATA - // trigger display update so the user can see the data as it changes gUpdateDisplay = true; #endif } @@ -506,19 +538,15 @@ const uint8_t orig_pga = 6; // -3dB void AM_fix_print_data(const int vfo, char *s) { - if (s == NULL) - return; - // fetch current register settings - const uint16_t lna_short = am_fix_gain_table[am_fix_gain_table_index[vfo]].lna_short; - const uint16_t lna = am_fix_gain_table[am_fix_gain_table_index[vfo]].lna; - const uint16_t mixer = am_fix_gain_table[am_fix_gain_table_index[vfo]].mixer; - const uint16_t pga = am_fix_gain_table[am_fix_gain_table_index[vfo]].pga; - - // compute the current front end gain - const int16_t dB_gain = lna_short_dB[lna_short] + lna_dB[lna] + mixer_dB[mixer] + pga_dB[pga]; - - sprintf(s, "idx %2d %4ddB %3u", am_fix_gain_table_index[vfo], dB_gain, prev_rssi[vfo]); + const unsigned int index = am_fix_gain_table_index[vfo]; + const uint8_t lna_short = am_fix_gain_table[index].lna_short; + const uint8_t lna = am_fix_gain_table[index].lna; + const uint8_t mixer = am_fix_gain_table[index].mixer; + const uint8_t pga = am_fix_gain_table[index].pga; + const int16_t gain_dB = lna_short_dB[lna_short] + lna_dB[lna] + mixer_dB[mixer] + pga_dB[pga]; + if (s != NULL) + sprintf(s, "idx %2d %4ddB %3u", index, gain_dB, prev_rssi[vfo]); } #endif diff --git a/firmware.bin b/firmware.bin index 4256cc2a5767a7381012e9fd968f7b70b0b44152..ae1f26adc2b2051f952c4c8983748891056617e9 100644 GIT binary patch delta 10559 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 H53&CS5GJ#J delta 10417 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 bD&AS^$}1LS4j1k7-nA;j0-UpJ@&NlES=oCI diff --git a/firmware.packed.bin b/firmware.packed.bin index 91a8f8d71f2c7f0d0966ca029aa50c02682d786f..828f0ca672c884b6c885f440e8138fed747b5321 100644 GIT binary patch delta 31454 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ĈWaVednTbH%J*9x-el$VX_vLApgrTE=h{Vho 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 delta 31414 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 diff --git a/utils/main.cpp b/utils/main.cpp index 2d963ab..d92964b 100644 --- a/utils/main.cpp +++ b/utils/main.cpp @@ -99,7 +99,7 @@ void create_gain_table(const char *filename) const uint8_t pga_min = 0; // 0 const uint8_t lna_short_max = 3; // 3 - const uint8_t lna_max = 5; // 5 + const uint8_t lna_max = 7; // 5 const uint8_t mixer_max = 3; // 3 const uint8_t pga_max = 7; // 7 diff --git a/utils/misc.exe b/utils/misc.exe index 19fb035ef23a5a2126670394f6a16188c6afe2d2..e43b07042f18b4d133433c5335b6d926588a84b3 100644 GIT binary patch delta 4472 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 S1!jx+cJoT}YO-uu_x}K<2x