Page 38 of 39
Re: Универсальный синтезатор Si570/Si5351
Posted: 14 Nov 2023, 16:24
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);
Re: Универсальный синтезатор Si570/Si5351
Posted: 14 Nov 2023, 17:17
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 //
Re: Универсальный синтезатор Si570/Si5351
Posted: 15 Nov 2023, 23:07
by cool-vovan
cool-vovan wrote: ↑14 Nov 2023, 16:24
Хочу зробити затримку переходу з передачі на прийом в режимі телеграфу.
Вже розібрався, все запрацювало. Дякую Юрі, UR5VCP, підказав новий варіант реалізації. Він і запрацював. Пізніше зніму відео, виставлю загальний результат.
Re: Универсальный синтезатор Si570/Si5351
Posted: 20 Nov 2023, 22:09
by cool-vovan
Знов заплутався. Є таке:
Code: Select all
InputPullUpPin inPow_Switch(PIN_IN_POW_SWITCH);
тут вхід, підтягнутий внутрішнім резистором до "+". Потрібно щоб цей вхід був підтягнутий до "-". Або залишився в високоімпедансному стані. Сам підтягну. Перерив всі форуми, кругом по різному.
Re: Универсальный синтезатор Si570/Si5351
Posted: 20 Nov 2023, 23:18
by UR5FFR
На этот вход вешается кнопка тангенты которая замыкает его на землю
Re: Универсальный синтезатор Si570/Si5351
Posted: 21 Nov 2023, 02:15
by cool-vovan
UR5FFR wrote: ↑20 Nov 2023, 23:18
На этот вход вешается кнопка тангенты
Дякую. Але я не про це. Це взагалі не про тангенту. Як зняти з піна підтяжку до плюса, щоб можна було лог. одиничкою змінювати значення піна?
Re: Универсальный синтезатор Si570/Si5351
Posted: 21 Nov 2023, 09:11
by UR5FFR
Тоді треба InputPullUpPin прибрати та проініціалізувати пін як звичайний через pinMode. Працювати з ним за допомогою digitalRead/Write
Re: Универсальный синтезатор Si570/Si5351
Posted: 21 Nov 2023, 09:48
by cool-vovan
Дякую. Я так і здогадувався але з мене ще той програмер.)) У файлі pins.cpp ця процедура зроблена класом. Мабуть я зроблю окремо в основному файлі для одного піна. Хочу реалізувати клавішу Вкл./викл. як в цій схемі. Тут відпрацювання іде по позитивному перепаду. На собачніку зробив, вмикається нормально, а вимикання треба зробити бо код написав поки по негативному перепаду на виводі контролера.
Re: Универсальный синтезатор Si570/Si5351
Posted: 21 Nov 2023, 12:14
by cool-vovan
А якщо я в файлі pins.cpp зроблю отак:
Code: Select all
void InputPullUpPin::setup() {
if (pin != PIN_NC)
pinMode(pin, INPUT);
}
і підтягну всі заюзані входи до плюса резисторами ззовні? А потрібний мені вхід до мінуса.
Re: Универсальный синтезатор Si570/Si5351
Posted: 21 Nov 2023, 12:41
by UR5FFR
Ну так теж можливо. Але краще код не чіпати або чіпати по мінімуму. Бо потім не розберетесь де що та чому не працює