Вопросы по NanoVFO

UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Вопросы по NanoVFO

Post by UR5FFR »

в TRX.cpp попробуйте поправить SwitchToBand на

Code: Select all

void TRX::SwitchToBand(int band) {
  if (BandIndex != band) {
  BandIndex = band;
  Freq = BandData[BandIndex];
  sideband = Bands[BandIndex].sideband;
  CW = inCW();
  }
}
UR5VCP
Posts: 196
Joined: 05 Mar 2020, 15:18
Позывной: UR5VCP

Re: Вопросы по NanoVFO

Post by UR5VCP »

2 UR5FFR: по ходу пора новую ветку прошивки запускать :)
UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Вопросы по NanoVFO

Post by UR5FFR »

Не-не, умерла так умерла :)
Smurr
Posts: 46
Joined: 29 May 2021, 13:29

Re: Вопросы по NanoVFO

Post by Smurr »

И очень напрасно! Сколько еще таких вот "Волн", "Эфиров", "Уралов" по загашникам валяется? UR5VCP прав: тема востребована, мой пример тому подтверждение. Это как раз тот не редкий случай, когда товарищ Оккам был прав: некоторые вещи просто не нужно усложнять, функциональный минимализм рулит. :ugeek:
UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Вопросы по NanoVFO

Post by UR5FFR »

SwitchToBand поправили? Помогло?
Smurr
Posts: 46
Joined: 29 May 2021, 13:29

Re: Вопросы по NanoVFO

Post by Smurr »

Нет, не правил. И без него все нормально, вроде бы. Сейчас еще частотомер подключу, проверю, чтобы уж совсем сомнения рассеять. А что данная правка фиксит, кстати? Допишу сейчас, хуже не будет наверняка, просто любопытно. А, да, вот схемка моего "финального" варианта синтезатора в аттаче. Можно пару-тройку свободных ножек вывести на мелкий разъемчик, про запас.

З.Ы.: правку внес, ничего не поменялось визуально. Валкодер работает, частоты меняются, запоминаются, второй гетеродин тоже присутствует ;) Можно пускать дивайс в работу.
Attachments
nano_vfo_new.jpg
UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Вопросы по NanoVFO

Post by UR5FFR »

Ну вот и чудненько
Smurr
Posts: 46
Joined: 29 May 2021, 13:29

Re: Вопросы по NanoVFO

Post by Smurr »

"Дурная голова рукам покоя не дает" (с) :) Опять почищен код, хоть в том и не было необходимости такой уж сильной. И вместе с тем выкинута еще часть неочевидного для "Волны" функционала, я про 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 не увенчались успехом...
UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Вопросы по NanoVFO

Post by UR5FFR »

Весь код зазипуйте и приатачьте - посмотрю
Smurr
Posts: 46
Joined: 29 May 2021, 13:29

Re: Вопросы по NanoVFO

Post by Smurr »

UR5FFR wrote:Весь код зазипуйте и приатачьте - посмотрю
Не вопрос, код в аттаче. Еще интересует такой интересный момент. Вот есть у меня атмеги328-е, китайские, пиленные, подозрительные. Но они хорошо работают в этой конструкции (проблемы с ними начинаются в более... серьезных изделиях). И есть кучка нормальных, оригинальных атмег168, которые тоже хотелось бы задействовать в этом деле, сэкономив 328-е для чего-то более мощного. Компилятор ардуиновский говорит: не вопрос, вот тебе код для 168-й, теперь, мол, программа и туда влезет со свистом! Беру код, паяю 168-ю, благо по ножкам идентичны, заливаю код... И ничего. Разве есть какие-то принципиальные отличия между микросхемами , ну, за вычетом меньшего ОЗУ и флешки?
Attachments
NanoVFO-master_no_CW_2.zip
(10.68 KiB) Downloaded 308 times
Post Reply