Increase modulation headroom and add warning

pull/34/head
erikkaashoek 3 years ago
parent 836186f997
commit a2081cc82c

@ -275,7 +275,10 @@ void set_output_path(freq_t f, float level)
d++;
blw = BELOW_MAX_DRIVE(d);
}
while (a + 28 < blw && d > LOWEST_LEVEL) { // reduce till it fits attenuator (31 - 3)
int ar = 28;
if (setting.modulation == MO_AM) // reserve attenuator range for AM modulation
ar = 4;
while (a + ar < blw && d > LOWEST_LEVEL) { // reduce till it fits attenuator ((ar+3) - 3)
d--;
blw = BELOW_MAX_DRIVE(d);
}
@ -285,11 +288,11 @@ void set_output_path(freq_t f, float level)
a -= 3.0; // Always at least 3dB attenuation
if (a > 0) {
a = 0;
if (!level_error) redraw_request |= REDRAW_CAL_STATUS;
level_error = true;
if (!level_error) { level_error = true; redraw_request |= REDRAW_CAL_STATUS; draw_all(true);}
} else if (setting.modulation == MO_AM && a < -10) { // Insufficient headroom for modulation
if (!level_error) { level_error = true; redraw_request |= REDRAW_CAL_STATUS; draw_all(true); }
} else {
if (level_error) redraw_request |= REDRAW_CAL_STATUS;
level_error = false;
if (level_error) { level_error = false; redraw_request |= REDRAW_CAL_STATUS; draw_all(true); }
}
if (a < -31.5)
a = -31.5;

@ -2599,19 +2599,18 @@ static const menuitem_t menu_modulation[] = {
{ MT_FORM | MT_ADV_CALLBACK, MO_NONE, MT_CUSTOM_LABEL, menu_modulation_acb},
{ MT_FORM | MT_ADV_CALLBACK | MT_LOW, MO_AM, "AM", menu_modulation_acb},
#ifdef TINYSA4
{ MT_FORM | MT_KEYPAD, KM_DEPTH, "DEPTH: %s%%", "0..100"},
{ MT_FORM | MT_ADV_CALLBACK, MO_WFM, "FM", menu_modulation_acb},
{ MT_FORM | MT_KEYPAD, KM_DEVIATION, "DEVIATION: %s", "1kHz..300kHz"},
{ MT_FORM | MT_KEYPAD, KM_MODULATION, "FREQ: %s", "50Hz..5kHz"},
{ MT_FORM | MT_KEYPAD, KM_DEPTH, "AM DEPTH: %s%%", "0..100"},
{ MT_FORM | MT_KEYPAD, KM_DEVIATION, "FM DEVIATION: %s", "1kHz..300kHz"},
// { MT_FORM | MT_ADV_CALLBACK, MO_NFM2, MT_CUSTOM_LABEL, menu_modulation_acb},
// { MT_FORM | MT_ADV_CALLBACK, MO_NFM3, MT_CUSTOM_LABEL, menu_modulation_acb},
#else
{ MT_FORM | MT_ADV_CALLBACK, MO_NFM, MT_CUSTOM_LABEL, menu_modulation_acb},
{ MT_FORM | MT_ADV_CALLBACK, MO_WFM, MT_CUSTOM_LABEL, menu_modulation_acb},
#endif
#ifndef TINYSA4
{ MT_FORM | MT_ADV_CALLBACK | MT_LOW, MO_EXTERNAL,MT_CUSTOM_LABEL, menu_modulation_acb},
#endif
{ MT_FORM | MT_KEYPAD, KM_MODULATION, "FREQ: %s", "50Hz..5kHz"},
#endif
{ MT_FORM | MT_NONE, 0, NULL, menu_back} // next-> menu_back
};

Loading…
Cancel
Save

Powered by TurnKey Linux.