А вот это уже более конкретно.
Вот как выглядит функция декодирования диапазона в тексте программы:
//функция возвращает условный номер диапазона
//по значению ацп, сохраненному в переменной ICOMband
//значения ацп приведены к опоре 2,56в и коэффициенту деления входного напряжения 4.
uint8_t GetCurrentBandFromIC OM(void)
{
uint8_t cur_band=0;
if (ICOMband > 716)
cur_band=_160;
else if ((ICOMband > 614) && (ICOMband < 665))
cur_band=_80;
else if ((ICOMband > 512) && (ICOMband < 563))
cur_band=_40;
else if ((ICOMband > 409) && (ICOMband < 460))
cur_band=_20;
else if ((ICOMband > 307) && (ICOMband < 358))
cur_band=_15;
else if ((ICOMband > 204) && (ICOMband < 256))
cur_band=_10;
else if ((ICOMband > 122) && (ICOMband < 204))
cur_band=_6;
else if ((ICOMband > 20) && (ICOMband <= 122))
cur_band=_30;
else cur_band=0;
return cur_band;
}
Как видно, там есть "дырки" между диапазонами, им будет соответствовать включение диапазона 160.
Когда входное напряжение попадает "в вилку", то декодируется нужный диапазон.
Для 10 м на входе ацп должно быть от 204/1024*2,56=0,51 до 256/1024*2,56=0,64в
Что может влиять на правильность декодирования.
Так как более высокому диапазону соответствует меньшее напряжение на входе, и вилка там всего 0,13в вполне возможно начинает влиять какая-нибудь наводка со стороны, которая будет переключать 15-10 диапазон. Тут я ничего поделать не могу, такова воля Аллаха, то есть фирмы айком. Я же ведь Вам предлагал айком подключать по сат интерфейсу, там все должно работать, так как текст сат интерфейса был проверен и отлажен на живом айкоме, а в нем(в тексте) ничего не изменилось. Нужно всего лишь правильно подключить к-линию.