kopia lustrzana https://github.com/kamocat/uSDX
37 wiersze
1.7 KiB
C
37 wiersze
1.7 KiB
C
#ifdef QCX
|
|
#define CAL_IQ 1
|
|
#ifdef CAL_IQ
|
|
int16_t cal_iq_dummy = 0;
|
|
// RX I/Q calibration procedure: terminate with 50 ohm, enable CW filter, adjust R27, R24, R17 subsequently to its minimum side-band rejection value in dB
|
|
void calibrate_iq()
|
|
{
|
|
smode = 1;
|
|
lcd.setCursor(0, 0); lcd.print(blanks); lcd.print(blanks);
|
|
digitalWrite(SIG_OUT, true); // loopback on
|
|
si5351.freq(freq, 0, 90); // RX in USB
|
|
si5351.SendRegister(SI_CLK_OE, 0b11111000); // CLK2_EN=0, CLK1_EN,CLK0_EN=1
|
|
float dbc;
|
|
si5351.freq_calc_fast(+700); si5351.SendPLLBRegisterBulk(); delay(100);
|
|
dbc = smeter();
|
|
si5351.freq_calc_fast(-700); si5351.SendPLLBRegisterBulk(); delay(100);
|
|
lcd.setCursor(0, 1); lcd.print("I-Q bal. 700Hz"); lcd.print(blanks);
|
|
for(; !digitalRead(BUTTONS);){ wdt_reset(); smeter(dbc); } for(; digitalRead(BUTTONS);) wdt_reset();
|
|
si5351.freq_calc_fast(+600); si5351.SendPLLBRegisterBulk(); delay(100);
|
|
dbc = smeter();
|
|
si5351.freq_calc_fast(-600); si5351.SendPLLBRegisterBulk(); delay(100);
|
|
lcd.setCursor(0, 1); lcd.print("Phase Lo 600Hz"); lcd.print(blanks);
|
|
for(; !digitalRead(BUTTONS);){ wdt_reset(); smeter(dbc); } for(; digitalRead(BUTTONS);) wdt_reset();
|
|
si5351.freq_calc_fast(+800); si5351.SendPLLBRegisterBulk(); delay(100);
|
|
dbc = smeter();
|
|
si5351.freq_calc_fast(-800); si5351.SendPLLBRegisterBulk(); delay(100);
|
|
lcd.setCursor(0, 1); lcd.print("Phase Hi 800Hz"); lcd.print(blanks);
|
|
for(; !digitalRead(BUTTONS);){ wdt_reset(); smeter(dbc); } for(; digitalRead(BUTTONS);) wdt_reset();
|
|
|
|
lcd.setCursor(9, 0); lcd.print(blanks); // cleanup dbmeter
|
|
digitalWrite(SIG_OUT, false); // loopback off
|
|
si5351.SendRegister(SI_CLK_OE, 0b11111100); // CLK2_EN=0, CLK1_EN,CLK0_EN=1
|
|
change = true; //restore original frequency setting
|
|
}
|
|
#endif
|
|
#endif //QCX
|