Compare commits
1 Commits
v1.07
...
version1.0
Author | SHA1 | Date | |
---|---|---|---|
|
34be2d0845 |
117
README.md
117
README.md
@@ -1,18 +1,28 @@
|
|||||||
#IMPORTANT INFORMATION
|
#IMPORTANT INFORMATION
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
- Now Release Version 1.061 on my blog (http://www.hamskey.com)
|
- Beta 0.26 and Beta 0.261, Beta 0.262, Beta 0.27 is complete test
|
||||||
- You can download and compiled hex file and uBITX Manager application on my blog (http://www.hamskey.com)
|
- You can download and use it.
|
||||||
|
|
||||||
#NOTICE
|
#NOTICE
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
I received uBITX a month ago and found that many features are required, and began coding with the idea of implementing minimal functionality as a general hf transceiver rather than an experimental device.
|
I received uBITX a month ago and found that many features are required, and began coding with the idea of implementing minimal functionality as a general hf transceiver rather than an experimental device.
|
||||||
|
|
||||||
|
- fixed bugs...
|
||||||
|
- Diallock for uBITX's sensitive encoders
|
||||||
|
- built in softare Memory keyer and cw options control for CW communication
|
||||||
|
- Implementation of CAT communication protocol for Digital Communication (as FT8, JT65, etc)
|
||||||
|
- Delay Options for external Linear.
|
||||||
|
- and more...
|
||||||
|
|
||||||
Most of the basic functions of the HF transceiver I thought were implemented.
|
Most of the basic functions of the HF transceiver I thought were implemented.
|
||||||
The minimum basic specification for uBITX to operate as a radio, I think it is finished.
|
The minimum basic specification for uBITX to operate as a radio, I think it is finished.
|
||||||
So I will release the 0.27 version and if I do not see the bug anymore, I will try to change the version name to 1.0.
|
So I will release the 0.27 version and if I do not see the bug anymore, I will try to change the version name to 1.0.
|
||||||
Now uBITX is an HF radio and will be able to join you in your happy hams life.
|
Now uBITX is an HF radio and will be able to join you in your happy hams life.
|
||||||
Based on this source, you can use it by adding functions.
|
Based on this source, you can use it by adding functions.
|
||||||
|
|
||||||
|
I am going to do a new project based on this source, linking with WSPR, WSJT-X and so on.
|
||||||
|
Of course, this repository is still running. If you have any bugs or ideas, please feel free to email me.
|
||||||
|
|
||||||
http://www.hamskey.com
|
http://www.hamskey.com
|
||||||
|
|
||||||
DE KD8CEC
|
DE KD8CEC
|
||||||
@@ -26,105 +36,16 @@ The copyright information of the original is below.
|
|||||||
KD8CEC
|
KD8CEC
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
Prepared or finished tasks for the next version
|
Prepared or finished tasks for the next version
|
||||||
- Reduce Program size
|
- Most of them are implemented and included in version 0.27.
|
||||||
- uBITX with RTL-SDR
|
- User Interface on LCD -> Option by user (not need)
|
||||||
- Direct control for Student
|
- Include WSPR Beacone function - (implement other new repository)
|
||||||
|
complete experiment
|
||||||
|
need solve : Big code size (over 100%, then remove some functions for experment)
|
||||||
|
need replace Si5351 Library (increase risk and need more beta tester)
|
||||||
|
W3PM sent me his wonderful source - using BITX, GPS
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
## REVISION RECORD
|
## REVISION RECORD
|
||||||
1.07 (Working...)
|
|
||||||
- Please do not download it yet. The code will continue to change for the time being.
|
|
||||||
- BetaVersion for Reduce program size
|
|
||||||
|
|
||||||
1.061
|
|
||||||
- Added WSPR
|
|
||||||
You only need uBITX to use WSPR. No external devices are required.
|
|
||||||
Added Si5351 module for WSPR
|
|
||||||
- Update uBITX Manager to Version 1.0
|
|
||||||
- Reduce program size
|
|
||||||
for WSPR
|
|
||||||
for other Module
|
|
||||||
- Fixed IF Shift Bug
|
|
||||||
Disable IF Shift on TX
|
|
||||||
IF shift available in USB mode
|
|
||||||
Fixed cat routine in IF Shift setup
|
|
||||||
- Bugs fixed
|
|
||||||
cw start delay option
|
|
||||||
Auto key Bug
|
|
||||||
(found bug : LZ1LDO)
|
|
||||||
Message selection when Auto Key is used in RIT mode
|
|
||||||
(found bug : gerald)
|
|
||||||
- Improve CW Keying (start TX)
|
|
||||||
|
|
||||||
1.05
|
|
||||||
- include 1.05W, 1.051, 1.051W
|
|
||||||
- for WSPR Beta Test Version
|
|
||||||
|
|
||||||
1.04
|
|
||||||
- Optimized from Version1.03
|
|
||||||
- Reduce program size (97% -> 95%)
|
|
||||||
|
|
||||||
1.03
|
|
||||||
- Change eBFO Calibration Step (50 to 5)
|
|
||||||
- Change CW Frequency Display type
|
|
||||||
|
|
||||||
1.02
|
|
||||||
- Applied CW Start Delay to New CW Key logic (This is my mistake when applying the new CW Key Logic.Since uBITX operations are not significantly affected, this does not create a separate Release, It will be reflected in the next release.) - complete
|
|
||||||
- Modified CW Key Logic for Auto Key, (available AutoKey function by any cw keytype) - complete
|
|
||||||
- reduce cpu use usage (working)
|
|
||||||
- reduce (working)
|
|
||||||
|
|
||||||
1.01
|
|
||||||
- Fixed Cat problem with (IAMBIC A or B Selected)
|
|
||||||
1.0
|
|
||||||
- rename 0.30 to 1.0
|
|
||||||
|
|
||||||
0.35
|
|
||||||
- vfo to channel bug fixed (not saved mode -> fixed, channel has frequency and mode)
|
|
||||||
- add Channel tag (ch.1 ~ 10) by uBITX Manager
|
|
||||||
- add VFO to Channel, Channel To VFO
|
|
||||||
|
|
||||||
0.34
|
|
||||||
- TX Status check in auto Keysend logic
|
|
||||||
- optimize codes
|
|
||||||
- change default tune step size, and fixed bug
|
|
||||||
- change IF shift step (1Hz -> 50Hz)
|
|
||||||
|
|
||||||
0.33
|
|
||||||
- Added CWL, CWU Mode, (dont complete test yet)
|
|
||||||
- fixed VFO changed bug.
|
|
||||||
- Added Additional BFO for CWL, CWL
|
|
||||||
- Added IF Shift
|
|
||||||
- Change confirmation key PTT -> function key (not critical menus)
|
|
||||||
- Change CW Key Select type, (toggle -> select by dial)
|
|
||||||
|
|
||||||
0.32
|
|
||||||
- Added function Scroll Frequencty on upper line
|
|
||||||
- Added Example code for Draw meter and remarked (you can see and use this code in source codes)
|
|
||||||
- Added Split function, just toggle VFOs when TX/RX
|
|
||||||
|
|
||||||
0.31
|
|
||||||
- Fixed CW ADC Range error
|
|
||||||
- Display Message on Upper Line (anothor VFO Frequency, Tune Step, Selected Key Type)
|
|
||||||
|
|
||||||
0.30
|
|
||||||
- implemented the function to monitor the value of all analog inputs. This allows you to monitor the status of the CW keys connected to your uBITX.
|
|
||||||
- possible to set the ADC range for CW Keying. If no setting is made, it will have the same range as the original code. If you set the CW Keying ADC Values using uBITX Manager 0.3, you can reduce the key error.
|
|
||||||
- Added the function to select Straight Key, IAMBICA, IAMBICB key from the menu.
|
|
||||||
- default Band select is Ham Band mode, if you want common type, long press function key at band select menu, uBITX Manager can be used to modify frequencies to suit your country.
|
|
||||||
|
|
||||||
0.29
|
|
||||||
- Remove the use of initialization values in BFO settings - using crruent value, if factory reset
|
|
||||||
- Select Tune Step, default 0, 20, 50, 100, 200, Use the uBITX Manager to set the steps value you want. You can select Step by pressing and holding the Function Key (1sec ~ 2sec).
|
|
||||||
- Modify Dial Lock Function, Press the Function key for more than 3 seconds to toggle dial lock.
|
|
||||||
- created a new frequency tune method. remove original source codes, Threshold has been applied to reduce malfunction. checked the continuity of the user operating to make natural tune possible.
|
|
||||||
- stabilize and remove many warning messages - by Pullrequest and merge
|
|
||||||
- Changed cw keying method. removed the original code and applied Ron's code and Improved compatibility with original hardware and CAT commnication. It can be used without modification of hardware.
|
|
||||||
|
|
||||||
0.28
|
|
||||||
- Fixed CAT problem with hamlib on Linux
|
|
||||||
- restore Protocol autorecovery logic
|
|
||||||
|
|
||||||
0.27
|
0.27
|
||||||
(First alpha test version, This will be renamed to the major version 1.0)
|
(First alpha test version, This will be renamed to the major version 1.0)
|
||||||
- Dual VFO Dial Lock (vfoA Dial lock)
|
- Dual VFO Dial Lock (vfoA Dial lock)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
//Firmware Version
|
//Firmware Version
|
||||||
#define FIRMWARE_VERSION_INFO F("CE v1.070")
|
#define FIRMWARE_VERSION_INFO F("CE v1.071")
|
||||||
#define FIRMWARE_VERSION_NUM 0x02 //1st Complete Project : 1 (Version 1.061), 2st Project : 2
|
#define FIRMWARE_VERSION_NUM 0x02 //1st Complete Project : 1 (Version 1.061), 2st Project : 2
|
||||||
|
|
||||||
//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.
|
||||||
@@ -334,9 +334,9 @@ unsigned char txFilter = 0; //which of the four transmit filters are in use
|
|||||||
boolean modeCalibrate = false;//this mode of menus shows extended menus to calibrate the oscillators and choose the proper
|
boolean modeCalibrate = false;//this mode of menus shows extended menus to calibrate the oscillators and choose the proper
|
||||||
//beat frequency
|
//beat frequency
|
||||||
|
|
||||||
byte advancedFreqOption1; //255 : Bit0: use IFTune_Value, Bit1 : use Stored enabled SDR Mode, Bit2 : dynamic sdr frequency
|
byte advancedFreqOption1; //255 : Bit0: use IFTune_Value, Bit1 : use Stored enabled SDR Mode, Bit2~Bit3 : dynamic sdr frequency, bit 7: IFTune_Value Reverse for DIY uBITX
|
||||||
byte attLevel = 0; //ATT : RF Gain Control (Receive) <-- IF1 Shift, 0 : Off, ShiftValue is attLevel * 100; attLevel 150 = 15K
|
byte attLevel = 0; //ATT : RF Gain Control (Receive) <-- IF1 Shift, 0 : Off, ShiftValue is attLevel * 100; attLevel 150 = 15K
|
||||||
char if1TuneValue = 0; //0 : OFF, IF1 + if1TuneValue * 100; // + - 12500;
|
byte if1TuneValue = 0; //0 : OFF, IF1 + if1TuneValue * 100; // + - 12500;
|
||||||
byte sdrModeOn = 0; //SDR MODE ON / OFF
|
byte sdrModeOn = 0; //SDR MODE ON / OFF
|
||||||
unsigned long SDR_Center_Freq; //DEFAULT Frequency : 32000000
|
unsigned long SDR_Center_Freq; //DEFAULT Frequency : 32000000
|
||||||
|
|
||||||
@@ -509,46 +509,85 @@ void setFrequency(unsigned long f){
|
|||||||
setTXFilters(f);
|
setTXFilters(f);
|
||||||
|
|
||||||
unsigned long appliedCarrier = ((cwMode == 0 ? usbCarrier : cwmCarrier) + (isIFShift && (inTx == 0) ? ifShiftValue : 0));
|
unsigned long appliedCarrier = ((cwMode == 0 ? usbCarrier : cwmCarrier) + (isIFShift && (inTx == 0) ? ifShiftValue : 0));
|
||||||
long if1AdjustValue = ((inTx == 0) ? (attLevel * 100) : 0) + (if1TuneValue * 100); //if1Tune RX, TX Enabled, ATT : only RX Mode
|
int appliedTuneValue = 0;
|
||||||
|
|
||||||
if (sdrModeOn && (inTx == 0)) //IF SDR
|
//applied if tune
|
||||||
|
//byte advancedFreqOption1; //255 : Bit0: use IFTune_Value, Bit1 : use Stored enabled SDR Mode, Bit2 : dynamic sdr frequency0, Bit3 : dynamic sdr frequency1, bit 7: IFTune_Value Reverse for DIY uBITX
|
||||||
|
if ((advancedFreqOption1 & 0x01) != 0x00)
|
||||||
|
{
|
||||||
|
appliedTuneValue = if1TuneValue;
|
||||||
|
|
||||||
|
//In the LSB state, the optimum reception value was found. To apply to USB, 3Khz decrease is required.
|
||||||
|
if (sdrModeOn && (inTx == 0))
|
||||||
|
appliedTuneValue -= 15; //decrease 1.55Khz
|
||||||
|
|
||||||
|
//if (isUSB)
|
||||||
|
if (cwMode == 2 || (cwMode == 0 && (isUSB)))
|
||||||
|
appliedTuneValue -= 30; //decrease 3Khz
|
||||||
|
}
|
||||||
|
|
||||||
|
//if1Tune RX, TX Enabled, ATT : only RX Mode
|
||||||
|
//The IF Tune shall be measured at the LSB. Then, move the 3Khz down for USB.
|
||||||
|
long if1AdjustValue = ((inTx == 0) ? (attLevel * 100) : 0) + (appliedTuneValue * 100); //if1Tune RX, TX Enabled, ATT : only RX Mode //5600
|
||||||
|
|
||||||
|
//for DIY uBITX (custom filter)
|
||||||
|
if ((advancedFreqOption1 & 0x80) != 0x00) //Reverse IF Tune (- Value for DIY uBITX)
|
||||||
|
if1AdjustValue *= -1;
|
||||||
|
|
||||||
|
if (sdrModeOn && (inTx == 0)) //IF SDR MODE
|
||||||
{
|
{
|
||||||
//Fixed Frequency SDR (Default Frequency : 32Mhz, available change sdr Frequency by uBITX Manager)
|
//Fixed Frequency SDR (Default Frequency : 32Mhz, available change sdr Frequency by uBITX Manager)
|
||||||
//Dynamic Frequency is for SWL without cat
|
//Dynamic Frequency is for SWL without cat
|
||||||
|
|
||||||
|
//byte advancedFreqOption1; //255 : Bit0: use IFTune_Value, Bit1 : use Stored enabled SDR Mode, Bit2 : dynamic sdr frequency0, Bit3 : dynamic sdr frequency1, bit 7: IFTune_Value Reverse for DIY uBITX
|
||||||
|
long moveFrequency = 0;
|
||||||
|
//7 6 5 4 3 2 1 0
|
||||||
|
// _ _ <-- SDR Freuqncy Option
|
||||||
|
byte sdrOption = (advancedFreqOption1 >> 2) & 0x03;
|
||||||
|
|
||||||
|
if (sdrOption == 1) // SDR Frequency + frequenc
|
||||||
|
{
|
||||||
|
//example : offset Freq : 20 Mhz and frequency = 7.080 => 27.080 Mhz
|
||||||
|
//example : offset Freq : 0 Mhz and frequency = 7.080 => 7.080 Mhz
|
||||||
|
//for available HF, SDR
|
||||||
|
moveFrequency = f;
|
||||||
|
}
|
||||||
|
else if (sdrOption == 2) //Mhz move
|
||||||
|
{
|
||||||
//Offset Frequency + Mhz,
|
//Offset Frequency + Mhz,
|
||||||
//Example : Offset Frequency : 30Mhz and current Frequncy is 7.080 => 37.080Mhz
|
//Example : Offset Frequency : 30Mhz and current Frequncy is 7.080 => 37.080Mhz
|
||||||
// Offset Frequency : 30Mhz and current Frequncy is 14.074 => 34.074Mhz
|
// Offset Frequency : 30Mhz and current Frequncy is 14.074 => 34.074Mhz
|
||||||
|
moveFrequency = (f % 10000000);
|
||||||
//Dynamic Frequency
|
}
|
||||||
//if (advancedFreqOption1 & 0x04 != 0x00)
|
else if (sdrOption == 3) //Khzz move
|
||||||
// if1AdjustValue += (f % 10000000);
|
{
|
||||||
|
//Offset Frequency + Khz,
|
||||||
|
//Example : Offset Frequency : 30Mhz and current Frequncy is 7.080 => 30.080Mhz
|
||||||
|
// Offset Frequency : 30Mhz and current Frequncy is 14.074 => 30.074Mhz
|
||||||
|
moveFrequency = (f % 1000000);
|
||||||
|
}
|
||||||
|
|
||||||
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
|
||||||
+ 2390);
|
+ 2390);
|
||||||
/*
|
|
||||||
si5351bx_setfreq(2, 44999500 + f);
|
|
||||||
si5351bx_setfreq(1, 44999500 + SDR_Center_Freq + 2390);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (cwMode == 1 || (cwMode == 0 && (!isUSB)))
|
if (cwMode == 1 || (cwMode == 0 && (!isUSB))) //cwl or lsb
|
||||||
{
|
{
|
||||||
//CWL(cwMode == 1) or LSB (cwMode == 0 && (!isUSB))
|
//CWL(cwMode == 1) or LSB (cwMode == 0 && (!isUSB))
|
||||||
si5351bx_setfreq(2, SECOND_OSC_LSB + if1AdjustValue + appliedCarrier + f);
|
si5351bx_setfreq(2, SECOND_OSC_LSB + if1AdjustValue + appliedCarrier + f);
|
||||||
//si5351bx_setfreq(1, SECOND_OSC_LSB + if1AdjustValue - (sdrModeOn ? (SDR_Center_Freq- usbCarrier) : 0));
|
|
||||||
si5351bx_setfreq(1, SECOND_OSC_LSB + if1AdjustValue);
|
si5351bx_setfreq(1, SECOND_OSC_LSB + if1AdjustValue);
|
||||||
}
|
}
|
||||||
else
|
else //cwu or usb
|
||||||
{
|
{
|
||||||
//CWU (cwMode == 2) or LSB (cwMode == 0 and isUSB)
|
//CWU (cwMode == 2) or USB (cwMode == 0 and isUSB)
|
||||||
si5351bx_setfreq(2, SECOND_OSC_USB + if1AdjustValue - appliedCarrier + f);
|
si5351bx_setfreq(2, SECOND_OSC_USB + if1AdjustValue - appliedCarrier + f);
|
||||||
//si5351bx_setfreq(1, SECOND_OSC_USB + if1AdjustValue + (sdrModeOn ? (SDR_Center_Freq- usbCarrier) : 0)); //Increase LO Frequency => 1198500 -> 32Mhz
|
si5351bx_setfreq(1, SECOND_OSC_USB + if1AdjustValue);
|
||||||
si5351bx_setfreq(1, SECOND_OSC_USB + if1AdjustValue); //Increase LO Frequency => 1198500 -> 32Mhz
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1062,13 +1101,13 @@ void initSettings(){
|
|||||||
//Advanced Freq control
|
//Advanced Freq control
|
||||||
EEPROM.get(ADVANCED_FREQ_OPTION1, advancedFreqOption1);
|
EEPROM.get(ADVANCED_FREQ_OPTION1, advancedFreqOption1);
|
||||||
|
|
||||||
//use Advanced Frequency Control
|
//byte advancedFreqOption1; //255 : Bit0: use IFTune_Value, Bit1 : use Stored enabled SDR Mode, Bit2 : dynamic sdr frequency0, Bit3 : dynamic sdr frequency1, bit 7: IFTune_Value Reverse for DIY uBITX
|
||||||
if (advancedFreqOption1 & 0x01 != 0x00)
|
if ((advancedFreqOption1 & 0x01) != 0x00)
|
||||||
{
|
{
|
||||||
EEPROM.get(IF1_CAL, if1TuneValue);
|
EEPROM.get(IF1_CAL, if1TuneValue);
|
||||||
|
|
||||||
//Stored Enabled SDR Mode
|
//Stored Enabled SDR Mode
|
||||||
if (advancedFreqOption1 & 0x02 != 0x00)
|
if ((advancedFreqOption1 & 0x02) != 0x00)
|
||||||
{
|
{
|
||||||
EEPROM.get(ENABLE_SDR, sdrModeOn);
|
EEPROM.get(ENABLE_SDR, sdrModeOn);
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Reference in New Issue
Block a user