Прислали на почту вопрос - что нужно изменить в коде чтобы управлять ДПФ без дешифратора двоичного кода.
Управление ДПФ вынесено на I2C расширитель. В модуле Syntez.ino есть следующая функция в которой определяется что и на какие пины будет выводиться (сами пины определены в config_hw.h)
Code:
void UpdateBandCtrl()
{
#ifdef BANDCTRL_ENABLE
outBandCtrl.Set(BCPN_BAND_0, trx.BandIndex & 0x1);
outBandCtrl.Set(BCPN_BAND_1, trx.BandIndex & 0x2);
outBandCtrl.Set(BCPN_BAND_2, trx.BandIndex & 0x4);
outBandCtrl.Set(BCPN_BAND_3, trx.BandIndex & 0x8);
// 0-nothing; 1-ATT; 2-Preamp
switch (trx.state.AttPre) {
case 0:
outBandCtrl.Set(BCPN_ATT,false);
outBandCtrl.Set(BCPN_PRE,false);
break;
case 1:
outBandCtrl.Set(BCPN_ATT,true);
outBandCtrl.Set(BCPN_PRE,false);
break;
case 2:
outBandCtrl.Set(BCPN_ATT,false);
outBandCtrl.Set(BCPN_PRE,true);
break;
}
outBandCtrl.Set(BCPN_CW, trx.state.mode == MODE_CW);
outBandCtrl.Set(BCPN_SB, trx.state.mode == MODE_USB);
outBandCtrl.Write();
#endif
}
Для управления 5ти диапазонным ДПФ (Raisin 1.x) нам придется пожертвовать одним из пинов BCPN_CW или BCPN_SB. ниже код для случая когда 5й бенд выводится на пин BCPN_SB который раньше выводил какая боковая полоса выбрана - для Raisin это не актуально т.к. фильтр у него один.
Code:
void UpdateBandCtrl()
{
#ifdef BANDCTRL_ENABLE
outBandCtrl.Set(BCPN_BAND_0, trx.BandIndex == 0);
outBandCtrl.Set(BCPN_BAND_1, trx.BandIndex == 1);
outBandCtrl.Set(BCPN_BAND_2, trx.BandIndex == 2);
outBandCtrl.Set(BCPN_BAND_3, trx.BandIndex == 3);
// 0-nothing; 1-ATT; 2-Preamp
switch (trx.state.AttPre) {
case 0:
outBandCtrl.Set(BCPN_ATT,false);
outBandCtrl.Set(BCPN_PRE,false);
break;
case 1:
outBandCtrl.Set(BCPN_ATT,true);
outBandCtrl.Set(BCPN_PRE,false);
break;
case 2:
outBandCtrl.Set(BCPN_ATT,false);
outBandCtrl.Set(BCPN_PRE,true);
break;
}
outBandCtrl.Set(BCPN_CW, trx.state.mode == MODE_CW);
outBandCtrl.Set(BCPN_SB, trx.BandIndex == 4);
outBandCtrl.Write();
#endif
}