From 9ff8365c3f7bd49ee67a88b30f23b1764218298a Mon Sep 17 00:00:00 2001 From: phdlee Date: Fri, 7 Sep 2018 23:37:23 +0900 Subject: [PATCH] Add Custom LPF Filter and Changed Version Number --- ubitx_20/ubitx.h | 9 ++++--- ubitx_20/ubitx_20.ino | 48 ++++++++++++++++++++++++++++++++-- ubitx_20/ubitx_eemap.h | 14 ++++++++++ ubitx_20/ubitx_lcd_nextion.ino | 2 +- 4 files changed, 67 insertions(+), 6 deletions(-) diff --git a/ubitx_20/ubitx.h b/ubitx_20/ubitx.h index fedb46ef..de440035 100644 --- a/ubitx_20/ubitx.h +++ b/ubitx_20/ubitx.h @@ -28,19 +28,22 @@ //#define UBITX_DISPLAY_LCD1602I //I2C type 16 x 02 LCD //#define UBITX_DISPLAY_LCD1602I_DUAL //I2C type 16 x02 LCD Dual //#define UBITX_DISPLAY_LCD2004P //24 x 04 LCD (Parallel) -#define UBITX_DISPLAY_LCD2004I //I2C type 24 x 04 LCD -//#define UBITX_DISPLAY_NEXTION //NEXTION LCD +//#define UBITX_DISPLAY_LCD2004I //I2C type 24 x 04 LCD +#define UBITX_DISPLAY_NEXTION //NEXTION LCD //#define UBITX_DISPLAY_NEXTION_SAFE //Only EEProm Write 770~775 #define I2C_LCD_MASTER_ADDRESS_DEFAULT 0x27 //0x27 //DEFAULT, if Set I2C Address by uBITX Manager, read from EEProm #define I2C_LCD_SECOND_ADDRESS_DEFAULT 0x3F //0x27 //only using Dual LCD Mode //Select betwen Analog S-Meter and DSP (I2C) Meter -#define USE_I2CSMETER +//#define USE_I2CSMETER #define EXTEND_KEY_GROUP1 //MODE, BAND(-), BAND(+), STEP //#define EXTEND_KEY_GROUP2 //Numeric (0~9), Point(.), Enter //Not supported in Version 1.0x +//Custom LPF Filter Mod +//#define USE_CUSTOM_LPF_FILTER //LPF FILTER MOD + //#define ENABLE_FACTORYALIGN #define FACTORY_RECOVERY_BOOTUP //Whether to enter Factory Recovery mode by pressing FKey and turning on power #define ENABLE_ADCMONITOR //Starting with Version 1.07, you can read ADC values directly from uBITX Manager. So this function is not necessary. diff --git a/ubitx_20/ubitx_20.ino b/ubitx_20/ubitx_20.ino index c9b235f0..00412f1e 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.097") +#define FIRMWARE_VERSION_INFO F("+v1.100") #define FIRMWARE_VERSION_NUM 0x04 //1st Complete Project : 1 (Version 1.061), 2st Project : 2, 1.08: 3, 1.09 : 4 /** @@ -195,6 +195,13 @@ byte isIFShift = 0; //1 = ifShift, 2 extend int ifShiftValue = 0; // byte TriggerBySW = 0; //Action Start from Nextion LCD, Other MCU + +//Use Custom Filter +//#define CUST_LPF_ENABLED 48 +//#define CUST_LPF_START 49 +char isCustomFilter = 0; +char isCustomFilter_A7 = 0; +char CustFilters[7][2]; /** * Below are the basic functions that control the uBitx. Understanding the functions before @@ -317,7 +324,24 @@ byte delay_background(unsigned delayTime, byte fromType){ //fromType : 4 autoCWK */ void setTXFilters(unsigned long freq){ - +#ifdef USE_CUSTOM_LPF_FILTER + freq = freq / 1000000UL; + for (byte i = 0; i < 7; i++) { + if (freq > CustFilters[i][0]) + { + char aIn = CustFilters[i][1]; + digitalWrite(TX_LPF_A, aIn & 0x01); + digitalWrite(TX_LPF_B, aIn & 0x02); + digitalWrite(TX_LPF_C, aIn & 0x04); + + if (isCustomFilter_A7 == 1) + { + digitalWrite(A7, aIn & 0x08); + } + return; + } + } //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); @@ -338,6 +362,8 @@ void setTXFilters(unsigned long freq){ digitalWrite(TX_LPF_B, 1); digitalWrite(TX_LPF_C, 1); } + +#endif } /** @@ -951,6 +977,24 @@ void initSettings(){ KeyValues[i][2] = EEPROM.read(EXTENDED_KEY_RANGE + (i * 3) + 2); //KEY TYPE } +#ifdef USE_CUSTOM_LPF_FILTER + //Custom Filters + EEPROM.get(CUST_LPF_ENABLED, isCustomFilter); + if (isCustomFilter == 0x58) + { + isCustomFilter_A7 = 1; + } + isCustomFilter = (isCustomFilter == 0x58 || isCustomFilter == 0x57); + + for (byte i = 0; i < 7; i++) { + CustFilters[i][0] = EEPROM.read(CUST_LPF_START + (i * 2)); //LPF (To) Mhz + CustFilters[i][1] = EEPROM.read(CUST_LPF_START + (i * 2) + 1); //Enabled I/O + } +//char isCustomFilter = 0; +//char isCustomFilter_A7 = 0; +//char CustFilters[2][7]; +#endif + //User callsign information if (EEPROM.read(USER_CALLSIGN_KEY) == 0x59) userCallsignLength = EEPROM.read(USER_CALLSIGN_LEN); //MAXIMUM 18 LENGTH diff --git a/ubitx_20/ubitx_eemap.h b/ubitx_20/ubitx_eemap.h index cc371116..c86ac1db 100644 --- a/ubitx_20/ubitx_eemap.h +++ b/ubitx_20/ubitx_eemap.h @@ -39,6 +39,20 @@ //============================================================================== #define RESERVE_FOR_FACTORY1 32 +//============================================================================== +// custom LPF Filter +// 48 : Using Custom LPF Filter (48 = 0x57 or 0x58 => Using Custom LPF Filter, 0x58 = using A7 IO +// 49, 50 : LPF1 (49 : MHz (~ Mhz), 50 : Enabled PIN +// 51, 52 : LPF2 +// 53, 54 : LPF3 +// 55, 56 : LPF4 +// 57, 58 : LPF5 +// 59, 60 : LPF6 +// 61, 62 : LPF7 +//============================================================================== +#define CUST_LPF_ENABLED 48 +#define CUST_LPF_START 49 + //SI5351 I2C Address (Version 1.097) #define I2C_ADDR_SI5351 63 diff --git a/ubitx_20/ubitx_lcd_nextion.ino b/ubitx_20/ubitx_lcd_nextion.ino index 096b86bd..8cb035c4 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.097")); //Version + SendCommandStr(CMD_VERSION, (char *)("+v1.100")); //Version SendEEPromData(CMD_CALLSIGN, 0, userCallsignLength -1, 0); /*