commit
171f889f4a
@ -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
|
The latest version of this library can always be found at
|
||||||
http://arduiniana.org.
|
http://arduiniana.org.
|
||||||
*/
|
*/
|
||||||
#include <arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
//================================================================
|
//================================================================
|
||||||
//Public Variable
|
//Public Variable
|
||||||
|
@ -22,21 +22,24 @@
|
|||||||
//==============================================================================
|
//==============================================================================
|
||||||
// Compile Option
|
// Compile Option
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
//Ubitx Board Version
|
||||||
|
#define UBITX_BOARD_VERSION 5 //v1 ~ v4 : 4, v5: 5
|
||||||
|
|
||||||
//Depending on the type of LCD mounted on the uBITX, uncomment one of the options below.
|
//Depending on the type of LCD mounted on the uBITX, uncomment one of the options below.
|
||||||
//You must select only one.
|
//You must select only one.
|
||||||
//#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX (Parallel)
|
#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX (Parallel)
|
||||||
//#define UBITX_DISPLAY_LCD1602I //I2C type 16 x 02 LCD
|
//#define UBITX_DISPLAY_LCD1602I //I2C type 16 x 02 LCD
|
||||||
//#define UBITX_DISPLAY_LCD1602I_DUAL //I2C type 16 x02 LCD Dual
|
//#define UBITX_DISPLAY_LCD1602I_DUAL //I2C type 16 x02 LCD Dual
|
||||||
//#define UBITX_DISPLAY_LCD2004P //24 x 04 LCD (Parallel)
|
//#define UBITX_DISPLAY_LCD2004P //24 x 04 LCD (Parallel)
|
||||||
//#define UBITX_DISPLAY_LCD2004I //I2C type 24 x 04 LCD
|
//#define UBITX_DISPLAY_LCD2004I //I2C type 24 x 04 LCD
|
||||||
#define UBITX_DISPLAY_NEXTION //NEXTION LCD
|
//#define UBITX_DISPLAY_NEXTION //NEXTION LCD
|
||||||
|
|
||||||
//#define UBITX_DISPLAY_NEXTION_SAFE //Only EEProm Write 770~775
|
//#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_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
|
#define I2C_LCD_SECOND_ADDRESS_DEFAULT 0x3F //0x27 //only using Dual LCD Mode
|
||||||
|
|
||||||
//Select betwen Analog S-Meter and DSP (I2C) Meter
|
//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_GROUP1 //MODE, BAND(-), BAND(+), STEP
|
||||||
//#define EXTEND_KEY_GROUP2 //Numeric (0~9), Point(.), Enter //Not supported in Version 1.0x
|
//#define EXTEND_KEY_GROUP2 //Numeric (0~9), Point(.), Enter //Not supported in Version 1.0x
|
||||||
@ -330,5 +333,3 @@ extern void DisplayVersionInfo(const char* fwVersionInfo);
|
|||||||
extern int GetI2CSmeterValue(int valueType); //ubitx_ui.ino
|
extern int GetI2CSmeterValue(int valueType); //ubitx_ui.ino
|
||||||
|
|
||||||
#endif //end of if header define
|
#endif //end of if header define
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// So I put + in the sense that it was improved one by one based on Original Firmware.
|
// 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.
|
// 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.200")
|
||||||
#define FIRMWARE_VERSION_NUM 0x04 //1st Complete Project : 1 (Version 1.061), 2st Project : 2, 1.08: 3, 1.09 : 4
|
#define FIRMWARE_VERSION_NUM 0x04 //1st Complete Project : 1 (Version 1.061), 2st Project : 2, 1.08: 3, 1.09 : 4
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,10 +72,43 @@
|
|||||||
|
|
||||||
// the second oscillator should ideally be at 57 MHz, however, the crystal filter's center frequency
|
// 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
|
// 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)
|
#if UBITX_BOARD_VERSION == 5
|
||||||
//these are the two default USB and LSB frequencies. The best frequencies depend upon your individual taste and filter shape
|
//For Test //45005000
|
||||||
#define INIT_USB_FREQ (11996500l)
|
//#define SECOND_OSC_USB (56064200l)
|
||||||
|
//#define SECOND_OSC_LSB (33945800l)
|
||||||
|
|
||||||
|
/*
|
||||||
|
//For Test //4500000
|
||||||
|
#define SECOND_OSC_USB (56059200l)
|
||||||
|
#define SECOND_OSC_LSB (33940800l)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
//For Test // V1.121 44991500(LSB), 44998500 (USB), abs : 7k
|
||||||
|
#define SECOND_OSC_USB (56057700l)
|
||||||
|
#define SECOND_OSC_LSB (33932300l)
|
||||||
|
*/
|
||||||
|
|
||||||
|
//==============================================================================================================================
|
||||||
|
//For Test // V1.200 V1.122 45002500 (LSB), 45002000 (USB) (Change Default BFO Frequency 11056xxx, adjust bfo and ifshift ), abs: 0.5k
|
||||||
|
//Best, Test 3 uBITX V5
|
||||||
|
//Last Value, If more data is collected, it can be changed to a better value.
|
||||||
|
#define SECOND_OSC_USB (56058700l)
|
||||||
|
#define SECOND_OSC_LSB (33945800l)
|
||||||
|
|
||||||
|
//Not used, Just comment (Default)
|
||||||
|
#define INIT_USB_FREQ (11056500l)
|
||||||
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
#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
|
||||||
|
//Not used, Just comment (Default)
|
||||||
|
#define INIT_USB_FREQ (11996500l)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// limits the tuning and working range of the ubitx between 3 MHz and 30 MHz
|
// limits the tuning and working range of the ubitx between 3 MHz and 30 MHz
|
||||||
#define LOWEST_FREQ (3000000l)
|
#define LOWEST_FREQ (3000000l)
|
||||||
#define HIGHEST_FREQ (30000000l)
|
#define HIGHEST_FREQ (30000000l)
|
||||||
@ -345,6 +378,29 @@ void setTXFilters(unsigned long freq){
|
|||||||
}
|
}
|
||||||
} //end of for
|
} //end of for
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#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
|
if (freq > 21000000L){ // the default filter is with 35 MHz cut-off
|
||||||
digitalWrite(TX_LPF_A, 0);
|
digitalWrite(TX_LPF_A, 0);
|
||||||
digitalWrite(TX_LPF_B, 0);
|
digitalWrite(TX_LPF_B, 0);
|
||||||
@ -365,6 +421,8 @@ void setTXFilters(unsigned long freq){
|
|||||||
digitalWrite(TX_LPF_B, 1);
|
digitalWrite(TX_LPF_B, 1);
|
||||||
digitalWrite(TX_LPF_C, 1);
|
digitalWrite(TX_LPF_C, 1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -445,13 +503,23 @@ void setFrequency(unsigned long f){
|
|||||||
moveFrequency = (f % 1000000);
|
moveFrequency = (f % 1000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if UBITX_BOARD_VERSION == 5
|
||||||
|
si5351bx_setfreq(2, 45002000 + if1AdjustValue + f);
|
||||||
|
si5351bx_setfreq(1, 45002000
|
||||||
|
+ if1AdjustValue
|
||||||
|
+ SDR_Center_Freq
|
||||||
|
//+ ((advancedFreqOption1 & 0x04) == 0x00 ? 0 : (f % 10000000))
|
||||||
|
+ moveFrequency);
|
||||||
|
// + 2390); //RTL-SDR Frequency Error, Do not add another SDR because the error is different. V1.3
|
||||||
|
#else
|
||||||
si5351bx_setfreq(2, 44991500 + if1AdjustValue + f);
|
si5351bx_setfreq(2, 44991500 + if1AdjustValue + f);
|
||||||
si5351bx_setfreq(1, 44991500
|
si5351bx_setfreq(1, 44991500
|
||||||
+ if1AdjustValue
|
+ if1AdjustValue
|
||||||
+ SDR_Center_Freq
|
+ SDR_Center_Freq
|
||||||
//+ ((advancedFreqOption1 & 0x04) == 0x00 ? 0 : (f % 10000000))
|
//+ ((advancedFreqOption1 & 0x04) == 0x00 ? 0 : (f % 10000000))
|
||||||
+ moveFrequency
|
+ moveFrequency );
|
||||||
+ 2390);
|
//+ 2390); Do not add another SDR because the error is different. V1.3
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1159,12 +1227,22 @@ void initSettings(){
|
|||||||
if (vfoB_mode < 2)
|
if (vfoB_mode < 2)
|
||||||
vfoB_mode = 3;
|
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
|
//original code with modified by kd8cec
|
||||||
if (usbCarrier > 12010000l || usbCarrier < 11990000l)
|
if (usbCarrier > 12010000l || usbCarrier < 11990000l)
|
||||||
usbCarrier = 11997000l;
|
usbCarrier = 11997000l;
|
||||||
|
|
||||||
if (cwmCarrier > 12010000l || cwmCarrier < 11990000l)
|
if (cwmCarrier > 12010000l || cwmCarrier < 11990000l)
|
||||||
cwmCarrier = 11997000l;
|
cwmCarrier = 11997000l;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (vfoA > 35000000l || 3500000l > vfoA) {
|
if (vfoA > 35000000l || 3500000l > vfoA) {
|
||||||
vfoA = 7150000l;
|
vfoA = 7150000l;
|
||||||
|
@ -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
|
* 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");
|
printLine2("#2 BFO");
|
||||||
delay(1000);
|
delay(1000);
|
||||||
|
|
||||||
|
#if UBITX_BOARD_VERSION == 5
|
||||||
|
usbCarrier = 11053000l;
|
||||||
|
menuSetupCarrier(1);
|
||||||
|
if (usbCarrier == 11053000l){
|
||||||
|
printLine2("Setup Aborted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
usbCarrier = 11994999l;
|
usbCarrier = 11994999l;
|
||||||
menuSetupCarrier(1);
|
menuSetupCarrier(1);
|
||||||
|
|
||||||
if (usbCarrier == 11994999l){
|
if (usbCarrier == 11994999l){
|
||||||
printLine2("Setup Aborted");
|
printLine2("Setup Aborted");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
printLine2("#3:Test 3.5MHz");
|
printLine2("#3:Test 3.5MHz");
|
||||||
cwMode = 0;
|
cwMode = 0;
|
||||||
@ -88,4 +100,3 @@ void factory_alignment(){
|
|||||||
updateDisplay();
|
updateDisplay();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1041,7 +1041,7 @@ void SendUbitxData(void)
|
|||||||
EEPROM.get(EXTERNAL_DEVICE_OPT1, nextionDisplayOption);
|
EEPROM.get(EXTERNAL_DEVICE_OPT1, nextionDisplayOption);
|
||||||
SendCommandUL(CMD_DISP_OPTION2, nextionDisplayOption);
|
SendCommandUL(CMD_DISP_OPTION2, nextionDisplayOption);
|
||||||
|
|
||||||
SendCommandStr(CMD_VERSION, (char *)("+v1.110")); //Version
|
SendCommandStr(CMD_VERSION, (char *)("+v1.122")); //Version
|
||||||
SendEEPromData(CMD_CALLSIGN, 0, userCallsignLength -1, 0);
|
SendEEPromData(CMD_CALLSIGN, 0, userCallsignLength -1, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1662,6 +1662,15 @@ void menuSetupCarrier(int btn){
|
|||||||
delay_background(1000, 0);
|
delay_background(1000, 0);
|
||||||
|
|
||||||
//usbCarrier = 11995000l; //Remarked by KD8CEC, Suggest from many user, if entry routine factoryrest
|
//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);
|
si5351bx_setfreq(0, usbCarrier);
|
||||||
printCarrierFreq(usbCarrier);
|
printCarrierFreq(usbCarrier);
|
||||||
@ -1705,4 +1714,3 @@ void menuSetupCarrier(int btn){
|
|||||||
//menuOn = 0;
|
//menuOn = 0;
|
||||||
menuClearExit(0);
|
menuClearExit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
* The output clock channel that controls the frequency is connected to the PLL-B.
|
* 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.
|
* The WSPR protocol is generated by changing the clock of the PLL-B.
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
#include "ubitx.h"
|
||||||
|
|
||||||
// ************* SI5315 routines - tks Jerry Gaffke, KE7ER ***********************
|
// ************* SI5315 routines - tks Jerry Gaffke, KE7ER ***********************
|
||||||
// An minimalist standalone set of Si5351 routines.
|
// 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
|
// User program may have reason to poke new values into these 3 RAM variables
|
||||||
uint32_t si5351bx_vcoa = (SI5351BX_XTAL*SI5351BX_MSA); // 25mhzXtal calibrate
|
uint32_t si5351bx_vcoa = (SI5351BX_XTAL*SI5351BX_MSA); // 25mhzXtal calibrate
|
||||||
uint8_t si5351bx_rdiv = 0; // 0-7, CLK pin sees fout/(2**rdiv)
|
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
|
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
|
uint8_t si5351bx_clken = 0xFF; // Private, all CLK output drivers off
|
||||||
int32_t calibration = 0;
|
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
|
i2cWriten(26, si5351Val, 8); // Write to 8 PLLA msynth regs
|
||||||
i2cWrite(177, 0x20); // Reset PLLA (0x80 resets PLLB)
|
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
|
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(40, (P2 & 65280) >> 8);
|
||||||
i2cWrite(41, P2 & 255);
|
i2cWrite(41, P2 & 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user