diff --git a/ubitx_20/softserial_tiny.cpp b/ubitx_20/softserial_tiny.cpp index 4738e87..6023c67 100644 --- a/ubitx_20/softserial_tiny.cpp +++ b/ubitx_20/softserial_tiny.cpp @@ -70,7 +70,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA The latest version of this library can always be found at http://arduiniana.org. */ -#include +#include //================================================================ //Public Variable diff --git a/ubitx_20/ubitx.h b/ubitx_20/ubitx.h index de44003..2eb279d 100644 --- a/ubitx_20/ubitx.h +++ b/ubitx_20/ubitx.h @@ -22,6 +22,9 @@ //============================================================================== // Compile Option //============================================================================== +//Ubitx Board Version +#define UBITX_BOARD_VERSION 4 //v1 ~ v4 : 4, v5: 5 + //Depending on the type of LCD mounted on the uBITX, uncomment one of the options below. //You must select only one. //#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX (Parallel) @@ -330,5 +333,3 @@ extern void DisplayVersionInfo(const char* fwVersionInfo); extern int GetI2CSmeterValue(int valueType); //ubitx_ui.ino #endif //end of if header define - - diff --git a/ubitx_20/ubitx_20.ino b/ubitx_20/ubitx_20.ino index 2b23fb0..cdbe69b 100644 --- a/ubitx_20/ubitx_20.ino +++ b/ubitx_20/ubitx_20.ino @@ -6,7 +6,7 @@ // So I put + in the sense that it was improved one by one based on Original Firmware. // This firmware has been gradually changed based on the original firmware created by Farhan, Jack, Jerry and others. -#define FIRMWARE_VERSION_INFO F("+v1.110") +#define FIRMWARE_VERSION_INFO F("+v1.120") #define FIRMWARE_VERSION_NUM 0x04 //1st Complete Project : 1 (Version 1.061), 2st Project : 2, 1.08: 3, 1.09 : 4 /** @@ -72,10 +72,19 @@ // the second oscillator should ideally be at 57 MHz, however, the crystal filter's center frequency // is shifted down a little due to the loading from the impedance matching L-networks on either sides -#define SECOND_OSC_USB (56995000l) -#define SECOND_OSC_LSB (32995000l) -//these are the two default USB and LSB frequencies. The best frequencies depend upon your individual taste and filter shape -#define INIT_USB_FREQ (11996500l) + +#if UBITX_BOARD_VERSION == 5 + #define SECOND_OSC_USB (56064200l) + #define SECOND_OSC_LSB (33945800l) + #define INIT_USB_FREQ (11059200l) +#else + #define SECOND_OSC_USB (56995000l) + #define SECOND_OSC_LSB (32995000l) + //these are the two default USB and LSB frequencies. The best frequencies depend upon your individual taste and filter shape + #define INIT_USB_FREQ (11996500l) +#endif + + // limits the tuning and working range of the ubitx between 3 MHz and 30 MHz #define LOWEST_FREQ (3000000l) #define HIGHEST_FREQ (30000000l) @@ -345,26 +354,51 @@ void setTXFilters(unsigned long freq){ } } //end of for #else - if (freq > 21000000L){ // the default filter is with 35 MHz cut-off - digitalWrite(TX_LPF_A, 0); - digitalWrite(TX_LPF_B, 0); - digitalWrite(TX_LPF_C, 0); - } - else if (freq >= 14000000L){ //thrown the KT1 relay on, the 30 MHz LPF is bypassed and the 14-18 MHz LPF is allowd to go through - digitalWrite(TX_LPF_A, 1); - digitalWrite(TX_LPF_B, 0); - digitalWrite(TX_LPF_C, 0); - } - else if (freq > 7000000L){ - digitalWrite(TX_LPF_A, 1); - digitalWrite(TX_LPF_B, 1); - digitalWrite(TX_LPF_C, 0); - } - else { - digitalWrite(TX_LPF_A, 1); - digitalWrite(TX_LPF_B, 1); - digitalWrite(TX_LPF_C, 1); - } + + #if UBITX_BOARD_VERSION == 5 + if (freq > 21000000L){ // the default filter is with 35 MHz cut-off + digitalWrite(TX_LPF_A, 0); + digitalWrite(TX_LPF_B, 0); + digitalWrite(TX_LPF_C, 0); + } + else if (freq >= 14000000L){ //thrown the KT1 relay on, the 30 MHz LPF is bypassed and the 14-18 MHz LPF is allowd to go through + digitalWrite(TX_LPF_A, 1); + digitalWrite(TX_LPF_B, 0); + digitalWrite(TX_LPF_C, 0); + } + else if (freq > 7000000L){ + digitalWrite(TX_LPF_A, 0); + digitalWrite(TX_LPF_B, 1); + digitalWrite(TX_LPF_C, 0); + } + else { + digitalWrite(TX_LPF_A, 0); + digitalWrite(TX_LPF_B, 0); + digitalWrite(TX_LPF_C, 1); + } + #else + if (freq > 21000000L){ // the default filter is with 35 MHz cut-off + digitalWrite(TX_LPF_A, 0); + digitalWrite(TX_LPF_B, 0); + digitalWrite(TX_LPF_C, 0); + } + else if (freq >= 14000000L){ //thrown the KT1 relay on, the 30 MHz LPF is bypassed and the 14-18 MHz LPF is allowd to go through + digitalWrite(TX_LPF_A, 1); + digitalWrite(TX_LPF_B, 0); + digitalWrite(TX_LPF_C, 0); + } + else if (freq > 7000000L){ + digitalWrite(TX_LPF_A, 1); + digitalWrite(TX_LPF_B, 1); + digitalWrite(TX_LPF_C, 0); + } + else { + digitalWrite(TX_LPF_A, 1); + digitalWrite(TX_LPF_B, 1); + digitalWrite(TX_LPF_C, 1); + } + #endif + #endif } @@ -1159,12 +1193,22 @@ void initSettings(){ if (vfoB_mode < 2) vfoB_mode = 3; + +#if UBITX_BOARD_VERSION == 5 + //original code with modified by kd8cec + if (usbCarrier > 11060000l || usbCarrier < 11048000l) + usbCarrier = 11052000l; + + if (cwmCarrier > 11060000l || cwmCarrier < 11048000l) + cwmCarrier = 11052000l; +#else //original code with modified by kd8cec if (usbCarrier > 12010000l || usbCarrier < 11990000l) usbCarrier = 11997000l; if (cwmCarrier > 12010000l || cwmCarrier < 11990000l) cwmCarrier = 11997000l; +#endif if (vfoA > 35000000l || 3500000l > vfoA) { vfoA = 7150000l; diff --git a/ubitx_20/ubitx_factory_alignment.ino b/ubitx_20/ubitx_factory_alignment.ino index 8178a20..4f3e504 100644 --- a/ubitx_20/ubitx_factory_alignment.ino +++ b/ubitx_20/ubitx_factory_alignment.ino @@ -1,3 +1,4 @@ +#include "ubitx.h" /** * This procedure is only for those who have a signal generator/transceiver tuned to exactly 7.150 and a dummy load @@ -27,14 +28,25 @@ void factory_alignment(){ printLine2("#2 BFO"); delay(1000); +#if UBITX_BOARD_VERSION == 5 + usbCarrier = 11053000l; + menuSetupCarrier(1); + if (usbCarrier == 11053000l){ + printLine2("Setup Aborted"); + return; + } + +#else usbCarrier = 11994999l; menuSetupCarrier(1); - if (usbCarrier == 11994999l){ printLine2("Setup Aborted"); return; } +#endif + + printLine2("#3:Test 3.5MHz"); cwMode = 0; @@ -88,4 +100,3 @@ void factory_alignment(){ updateDisplay(); } - diff --git a/ubitx_20/ubitx_lcd_nextion.ino b/ubitx_20/ubitx_lcd_nextion.ino index fdec271..786708e 100644 --- a/ubitx_20/ubitx_lcd_nextion.ino +++ b/ubitx_20/ubitx_lcd_nextion.ino @@ -1041,7 +1041,7 @@ void SendUbitxData(void) EEPROM.get(EXTERNAL_DEVICE_OPT1, nextionDisplayOption); SendCommandUL(CMD_DISP_OPTION2, nextionDisplayOption); - SendCommandStr(CMD_VERSION, (char *)("+v1.110")); //Version + SendCommandStr(CMD_VERSION, (char *)("+v1.120")); //Version SendEEPromData(CMD_CALLSIGN, 0, userCallsignLength -1, 0); /* diff --git a/ubitx_20/ubitx_menu.ino b/ubitx_20/ubitx_menu.ino index 9bcd126..502bd94 100644 --- a/ubitx_20/ubitx_menu.ino +++ b/ubitx_20/ubitx_menu.ino @@ -1662,6 +1662,15 @@ void menuSetupCarrier(int btn){ delay_background(1000, 0); //usbCarrier = 11995000l; //Remarked by KD8CEC, Suggest from many user, if entry routine factoryrest + /* + //for uBITX V5.0, but not used by KD8CEC, if you want default value of carrier on Calibration, delete remark symbols +#if UBITX_BOARD_VERSION == 5 + usbCarrier = 11053000l; +#else + usbCarrier = 11995000l; +#endif + */ + si5351bx_setfreq(0, usbCarrier); printCarrierFreq(usbCarrier); @@ -1705,4 +1714,3 @@ void menuSetupCarrier(int btn){ //menuOn = 0; menuClearExit(0); } - diff --git a/ubitx_20/ubitx_si5351.ino b/ubitx_20/ubitx_si5351.ino index 049cf0b..e230bfd 100644 --- a/ubitx_20/ubitx_si5351.ino +++ b/ubitx_20/ubitx_si5351.ino @@ -13,6 +13,7 @@ * The output clock channel that controls the frequency is connected to the PLL-B. * The WSPR protocol is generated by changing the clock of the PLL-B. ************************************************************************************/ +#include "ubitx.h" // ************* SI5315 routines - tks Jerry Gaffke, KE7ER *********************** // An minimalist standalone set of Si5351 routines. @@ -58,7 +59,13 @@ uint8_t SI5351BX_ADDR; // I2C address of Si5351 (variable f // User program may have reason to poke new values into these 3 RAM variables uint32_t si5351bx_vcoa = (SI5351BX_XTAL*SI5351BX_MSA); // 25mhzXtal calibrate uint8_t si5351bx_rdiv = 0; // 0-7, CLK pin sees fout/(2**rdiv) + +#if UBITX_BOARD_VERSION == 5 +uint8_t si5351bx_drive[3] = {3, 3, 3}; // 0=2ma 1=4ma 2=6ma 3=8ma for CLK 0,1,2 +#else uint8_t si5351bx_drive[3] = {1, 1, 1}; // 0=2ma 1=4ma 2=6ma 3=8ma for CLK 0,1,2 +#endif + uint8_t si5351bx_clken = 0xFF; // Private, all CLK output drivers off int32_t calibration = 0; @@ -92,6 +99,18 @@ void si5351bx_init() { // Call once at power-up, start PLLA i2cWriten(26, si5351Val, 8); // Write to 8 PLLA msynth regs i2cWrite(177, 0x20); // Reset PLLA (0x80 resets PLLB) + + +#if UBITX_BOARD_VERSION == 5 + //why? TODO : CHECK by KD8CEC + //initializing the ppl2 as well + i2cWriten(34, si5351Val, 8); // Write to 8 PLLA msynth regs + i2cWrite(177, 0xa0); // Reset PLLA & PPLB (0x80 resets PLLB) +#else + // +#endif + + } void si5351bx_setfreq(uint8_t clknum, uint32_t fout) { // Set a CLK to fout Hz @@ -169,6 +188,3 @@ void TXSubFreq(unsigned long P2) i2cWrite(40, (P2 & 65280) >> 8); i2cWrite(41, P2 & 255); } - - -