"Дурная голова рукам покоя не дает" (с)

Опять почищен код, хоть в том и не было необходимости такой уж сильной. И вместе с тем выкинута еще часть неочевидного для "Волны" функционала, я про USB/LSB SHIFT. Зато ухитрился запихать туда, в меню, настройку частоты второго гетеродина и правильно ее прописать во freq_calc.h:
Code: Select all
#define SETTINGS_COUNT 3
#define SETTINGS_DATA \
{02, 8300, 5000, 11000, 1, "CLK1"}, /* Частота второго гетеродина (фиксиованная), от 5 до 11 МГц с шагом в 1 кГц. Дефолтное значение 8.3 МГц */\
{03, 4, -20000, 20000, 1, "SI5351 XTAL"}, /* Подстройка частоты Si5351 под опорный генератор */\
{0, 0, 0, 0, 0, "FULL RESET"} /* Очистка всех пользовательских настроек синтезатора, обнуление EEPROM */\
Сам freq_calc.h принял очень лаконичный вид:
Code: Select all
void vfo_set_freq(long f1, long f2, long f3)
{
#ifdef VFO_SI5351
vfo5351.set_freq(f1,f2,f3);
#endif
}
void UpdateFreq()
{
uint8_t cwtx = trx.TX;
#ifdef MODE_SINGLE_IF
#if defined(SSBDetectorFreq_USB) && defined(SSBDetectorFreq_LSB)
vfo_set_freq( // инверсия боковой - гетеродин сверху
CLK0_MULT*(trx.Freq + (trx.sideband == LSB ? (SSBDetectorFreq_USB))),
cwtx? 0: CLK1_MULT*Settings[ID_CLK1]*1000,
);
#elif defined(SSBDetectorFreq_USB)
long f = trx.Freq;
if (trx.sideband == LSB) {
f+=(SSBDetectorFreq_USB);
} else {
f = abs((SSBDetectorFreq_USB)-f);
}
vfo_set_freq(
CLK0_MULT*f,
cwtx? 0: CLK1_MULT*Settings[ID_CLK1]*1000,
#ifdef CWTX_DIRECT_FREQ
cwtx? trx.Freq+(trx.sideband == LSB ? ): 0
#else
cwtx? (SSBDetectorFreq_USB): 0
#endif
);
#endif
#endif
}
И ведь работает! Очень удобно стало теперь прямо из меню крутить частоту второго гетеродина с килогерцовым шагом. Но хочется бОльшего, раз уж пошла такая пьянка: определять и первую ПЧ в меню! И все было хорошо:
Code: Select all
{01, 8800, 5000, 11000, 1, "CLK0"}, /* Частота первого гетеродина (перестраиваемая), от 5 до 11 МГц с шагом в 1 кГц. Дефолтное значение 8.8 МГц */\
пока я не попытался подменить объявленную переменную
Code: Select all
// Частота ПЧ (SSBDetectorFreq_USB), в Гц.
#define SSBDetectorFreq_USB 8800000L
в том же freq_calc.h . Ничего не получилось, понятное дело и что-то мне подсказывает, что и не получится: на SSBDetectorFreq_USB именно в том виде, как она объявлена и присвоена, многое завязано и идея не прокатит. Верно ли я думаю?
А еще у меня сильно пригорает оттого, что CLK2 везде объявлена, но попытки "запустить" ее по примеру с CLK1 не увенчались успехом...