Универсальный синтезатор Si570/Si5351

cool-vovan
Posts: 10
Joined: 16 Aug 2022, 22:30
Позывной: UR5CAF

Re: Универсальный синтезатор Si570/Si5351

Post by cool-vovan »

Дякую я вже розібрався сам, зробив трохи хитріше. Потім покажу. Зараз стопорнувся в тьох соснах, ой, змінних. )) Хочу зробити затримку переходу з передачі на прийом в режимі телеграфу. Тобто, як VOX в телефонії. Накидав таке, але неправильно працює. Де косяк - не пойму.

Code: Select all

  static byte last_CW_Key = 0;
  static long cw_tm = 0; 
  byte CW_Key = inCW.Read();
  if (CW_Key != last_CW_Key){
    if (millis() - cw_tm > CW_DELAY) {
      last_CW_Key = CW_Key;
      cw_tm = millis();
    }
  }
Далі змінна last_CW_Key має прекидати на передачу і утримувати доки йде маніпуляція ключем + час затримки.

Code: Select all

  trx.TX = Modes[trx.state.mode].tx_enable && (trx.Tune || trx.CATTX || ptt || last_CW_Key);
cool-vovan
Posts: 10
Joined: 16 Aug 2022, 22:30
Позывной: UR5CAF

Re: Универсальный синтезатор Si570/Si5351

Post by cool-vovan »

А з телеграфним гетеродином я зробив інакше: при маніпуляції ключем на CLK1 другої сішки з"являється сигнал при будь якій моді. Це для того, щоб, наприклад, тренуватись в роботі ключем. А при активній моді CW переходив на передачу. В моєму трансивері буде контроль CW по ПЧ. Режим Tune також переробив на ПЧ. Зробив зсув частоти на виході CLK0 другої сішки в полосу прозорості КФ. Це все працює. Ось частина коду.

Code: Select all

  long tone_shift = 700;                                                  // частота тонального гетеродина.
...................................................
    long vfo,bfo,tfo;
...................................................
      if (sbm) tfo = bfo + tone_shift;                                    // tfo LSB
      else tfo = bfo - tone_shift;                                        // tfo USB
      if (trx.Tune) {                                                     // Tune (настройка)
        if (sbm) bfo += tone_shift;
        else bfo -= tone_shift;
      }
...................................................
    #ifdef MODE_SINGLE_IF                                                 //
    if (!trx.Tune) {
      vfo_set_freq(
        CLK0_MULT*vfo, CLK1_MULT*bfo,
        CW_Key ? CLK2_MULT*tfo : 0                                        // CW Key
      );
    } else vfo_set_freq(
        CLK0_MULT*vfo, CLK1_MULT*bfo
      );
    #endif                                                                //
cool-vovan
Posts: 10
Joined: 16 Aug 2022, 22:30
Позывной: UR5CAF

Re: Универсальный синтезатор Si570/Si5351

Post by cool-vovan »

cool-vovan wrote: 14 Nov 2023, 16:24 Хочу зробити затримку переходу з передачі на прийом в режимі телеграфу.
Вже розібрався, все запрацювало. Дякую Юрі, UR5VCP, підказав новий варіант реалізації. Він і запрацював. Пізніше зніму відео, виставлю загальний результат.
cool-vovan
Posts: 10
Joined: 16 Aug 2022, 22:30
Позывной: UR5CAF

Re: Универсальный синтезатор Si570/Si5351

Post by cool-vovan »

Знов заплутався. Є таке:

Code: Select all

InputPullUpPin inPow_Switch(PIN_IN_POW_SWITCH);
тут вхід, підтягнутий внутрішнім резистором до "+". Потрібно щоб цей вхід був підтягнутий до "-". Або залишився в високоімпедансному стані. Сам підтягну. Перерив всі форуми, кругом по різному.
UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Универсальный синтезатор Si570/Si5351

Post by UR5FFR »

На этот вход вешается кнопка тангенты которая замыкает его на землю
cool-vovan
Posts: 10
Joined: 16 Aug 2022, 22:30
Позывной: UR5CAF

Re: Универсальный синтезатор Si570/Si5351

Post by cool-vovan »

UR5FFR wrote: 20 Nov 2023, 23:18 На этот вход вешается кнопка тангенты
Дякую. Але я не про це. Це взагалі не про тангенту. Як зняти з піна підтяжку до плюса, щоб можна було лог. одиничкою змінювати значення піна?
UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Универсальный синтезатор Si570/Si5351

Post by UR5FFR »

Тоді треба InputPullUpPin прибрати та проініціалізувати пін як звичайний через pinMode. Працювати з ним за допомогою digitalRead/Write
cool-vovan
Posts: 10
Joined: 16 Aug 2022, 22:30
Позывной: UR5CAF

Re: Универсальный синтезатор Si570/Si5351

Post by cool-vovan »

Дякую. Я так і здогадувався але з мене ще той програмер.)) У файлі pins.cpp ця процедура зроблена класом. Мабуть я зроблю окремо в основному файлі для одного піна. Хочу реалізувати клавішу Вкл./викл. як в цій схемі. Тут відпрацювання іде по позитивному перепаду. На собачніку зробив, вмикається нормально, а вимикання треба зробити бо код написав поки по негативному перепаду на виводі контролера.
Схема.jpg
cool-vovan
Posts: 10
Joined: 16 Aug 2022, 22:30
Позывной: UR5CAF

Re: Универсальный синтезатор Si570/Si5351

Post by cool-vovan »

А якщо я в файлі pins.cpp зроблю отак:

Code: Select all

void InputPullUpPin::setup() {
  if (pin != PIN_NC) 
    pinMode(pin, INPUT); 
}
і підтягну всі заюзані входи до плюса резисторами ззовні? А потрібний мені вхід до мінуса.
UR5FFR
Site Admin
Posts: 2195
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Универсальный синтезатор Si570/Si5351

Post by UR5FFR »

Ну так теж можливо. Але краще код не чіпати або чіпати по мінімуму. Бо потім не розберетесь де що та чому не працює
Post Reply