Compare commits
13 Commits
v1.11
...
keyer-simp
Author | SHA1 | Date | |
---|---|---|---|
4fd35aea4f | |||
295b158662 | |||
89af919e42 | |||
4765ab5a22 | |||
53c3f0e0bf | |||
|
295c49969f | ||
|
262ef3947a | ||
|
a4d9f6e6c5 | ||
|
395dd42459 | ||
|
f25bf57556 | ||
|
171f889f4a | ||
|
05de66a038 | ||
|
2c075d5236 |
19
README.md
19
README.md
@@ -1,6 +1,15 @@
|
||||
#KC4UPR'S NOTE
|
||||
----------------------------------------------------------------------------
|
||||
This is a fork of the KD8CEC firmware that will be specific to my uBITX V5
|
||||
installation. My intent is to remove unnecessary code, as well as make some
|
||||
GPIO changes based on my use of the Nextion LCD. Specifically, I'd like to
|
||||
eliminate the use of analog I/O for reading the CW keys, and possibly enable
|
||||
control of accessories such as filters using the extra GPIO pins that are
|
||||
now available.
|
||||
|
||||
#NOTICE
|
||||
----------------------------------------------------------------------------
|
||||
- Now Release Version 1.08 on my blog (http://www.hamskey.com)
|
||||
- Now Release Version 1.20 on my blog (http://www.hamskey.com)
|
||||
- You can download and compiled hex file and uBITX Manager application on release section (https://github.com/phdlee/ubitx/releases)
|
||||
- For more information, see my blog (http://www.hamskey.com)
|
||||
|
||||
@@ -17,13 +26,17 @@ The copyright information of the original is below.
|
||||
KD8CEC
|
||||
----------------------------------------------------------------------------
|
||||
Prepared or finished tasks for the next version
|
||||
- Nextion LCD
|
||||
- Add TTS module
|
||||
- Remote control on another MCU
|
||||
- Direct control for Student
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
## REVISION RECORD
|
||||
1.20
|
||||
- Support uBITX V5
|
||||
- Change to SDR Frequency (Remove just RTL-SDR's error Frequency (2390Hz))
|
||||
1.12
|
||||
- Support Custom LPF Control
|
||||
- Other Minor Bugs
|
||||
1.1
|
||||
- Support Nextion LCD, TJC LCD
|
||||
- Read & Backup uBITX, ADC Monitoring, ATT, IF-Shift and more on Nextion LCD (TJC LCD)
|
||||
|
@@ -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 <arduino.h>
|
||||
#include <Arduino.h>
|
||||
|
||||
//================================================================
|
||||
//Public Variable
|
||||
|
@@ -22,6 +22,9 @@
|
||||
//==============================================================================
|
||||
// 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.
|
||||
//You must select only one.
|
||||
//#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX (Parallel)
|
||||
@@ -38,7 +41,10 @@
|
||||
//Select betwen Analog S-Meter and DSP (I2C) Meter
|
||||
//#define USE_I2CSMETER
|
||||
|
||||
#define EXTEND_KEY_GROUP1 //MODE, BAND(-), BAND(+), STEP
|
||||
// Use alternate keyer?
|
||||
#define USE_ALTKEYER
|
||||
|
||||
//#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
|
||||
@@ -55,6 +61,7 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
//==============================================================================
|
||||
// User Select feather list
|
||||
//==============================================================================
|
||||
/*
|
||||
//Enable all features
|
||||
#define FN_BAND 1 //592
|
||||
#define FN_VFO_TOGGLE 1 //78
|
||||
@@ -78,7 +85,7 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
#define FN_KEYTYPE 1 //168
|
||||
#define FN_ADCMONITOR 1 //516
|
||||
#define FN_TXONOFF 1 //58
|
||||
|
||||
*/
|
||||
/*
|
||||
//Test Configuration (88%)
|
||||
#define FN_BAND 0 //592
|
||||
@@ -104,7 +111,6 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
#define FN_ADCMONITOR 1 //516
|
||||
#define FN_TXONOFF 1 //58
|
||||
*/
|
||||
|
||||
/*
|
||||
//Recommended Character LCD Developer 87%
|
||||
#define FN_BAND 1 //592
|
||||
@@ -131,7 +137,6 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
#define FN_TXONOFF 1 //58
|
||||
*/
|
||||
|
||||
/*
|
||||
//Recommended for Nextion, TJC LCD 88%
|
||||
#define FN_BAND 1 //600
|
||||
#define FN_VFO_TOGGLE 1 //90
|
||||
@@ -155,7 +160,7 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
#define FN_KEYTYPE 0 //294
|
||||
#define FN_ADCMONITOR 0 //526 //not available with Nextion or Serial UI
|
||||
#define FN_TXONOFF 1 //70
|
||||
*/
|
||||
|
||||
//==============================================================================
|
||||
// End of User Select Mode and Compil options
|
||||
//==============================================================================
|
||||
@@ -216,6 +221,12 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
#define ANALOG_SPARE (A7)
|
||||
#define ANALOG_SMETER (A7) //by KD8CEC
|
||||
|
||||
#ifdef USE_ALTKEYER
|
||||
#define DIGITAL_DOT (12)
|
||||
#define DIGITAL_DASH (11)
|
||||
#define DIGITAL_KEY (A3)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* The second set of 16 pins on the Raduino's bottom connector are have the three clock outputs and the digital lines to control the rig.
|
||||
* This assignment is as follows :
|
||||
@@ -330,5 +341,3 @@ extern void DisplayVersionInfo(const char* fwVersionInfo);
|
||||
extern int GetI2CSmeterValue(int valueType); //ubitx_ui.ino
|
||||
|
||||
#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.
|
||||
// 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
|
||||
|
||||
/**
|
||||
@@ -72,10 +72,43 @@
|
||||
|
||||
// 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
|
||||
//For Test //45005000
|
||||
//#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
|
||||
#define LOWEST_FREQ (3000000l)
|
||||
#define HIGHEST_FREQ (30000000l)
|
||||
@@ -345,26 +378,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
|
||||
}
|
||||
@@ -445,13 +503,23 @@ void setFrequency(unsigned long f){
|
||||
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(1, 44991500
|
||||
+ if1AdjustValue
|
||||
+ SDR_Center_Freq
|
||||
//+ ((advancedFreqOption1 & 0x04) == 0x00 ? 0 : (f % 10000000))
|
||||
+ moveFrequency
|
||||
+ 2390);
|
||||
+ moveFrequency );
|
||||
//+ 2390); Do not add another SDR because the error is different. V1.3
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -735,8 +803,16 @@ void checkButton(){
|
||||
delay(50);
|
||||
if (!btnDown()) //debounce
|
||||
return;
|
||||
|
||||
//for touch screen
|
||||
#ifdef USE_SW_SERIAL
|
||||
SetSWActivePage(1);
|
||||
doMenu();
|
||||
|
||||
if (isCWAutoMode == 0)
|
||||
SetSWActivePage(0);
|
||||
#else
|
||||
doMenu();
|
||||
#endif
|
||||
|
||||
//wait for the button to go up again
|
||||
while(btnDown()) {
|
||||
@@ -1159,12 +1235,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;
|
||||
@@ -1214,6 +1300,12 @@ void initPorts(){
|
||||
pinMode(ANALOG_KEYER, INPUT_PULLUP);
|
||||
pinMode(ANALOG_SMETER, INPUT); //by KD8CEC
|
||||
|
||||
#ifdef USE_ALTKEYER
|
||||
pinMode(DIGITAL_DOT, INPUT_PULLUP);
|
||||
pinMode(DIGITAL_DASH, INPUT_PULLUP);
|
||||
if (DIGITAL_KEY != PTT) pinMode(DIGITAL_KEY, INPUT_PULLUP);
|
||||
#endif
|
||||
|
||||
#ifdef USE_CUSTOM_LPF_FILTER
|
||||
if (isCustomFilter_A7)
|
||||
{
|
||||
@@ -1382,6 +1474,13 @@ void checkAutoSaveFreqMode()
|
||||
|
||||
void loop(){
|
||||
if (isCWAutoMode == 0){ //when CW AutoKey Mode, disable this process
|
||||
#ifdef USE_ALTKEYER
|
||||
// when using the alternate keyer, don't check the PTT if we're in CW mode--assuming the pin is the same as PTT
|
||||
if (DIGITAL_KEY == PTT) {
|
||||
if (!txCAT && (cwMode == 0))
|
||||
checkPTT();
|
||||
} else
|
||||
#endif
|
||||
if (!txCAT)
|
||||
checkPTT();
|
||||
checkButton();
|
||||
|
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
@@ -38,7 +38,21 @@
|
||||
char lastPaddle = 0;
|
||||
|
||||
//reads the analog keyer pin and reports the paddle
|
||||
byte getPaddle(){
|
||||
byte getPaddle() {
|
||||
#ifdef USE_ALTKEYER
|
||||
// Alternate keyer
|
||||
if ((DIGITAL_KEY != PTT) || ((DIGITAL_KEY == PTT) && (cwMode > 0))) {
|
||||
if (digitalRead(DIGITAL_KEY) == LOW) {
|
||||
return PADDLE_STRAIGHT;
|
||||
}
|
||||
}
|
||||
// paddles work whether or not CW mode is actually selected
|
||||
int rv = 0;
|
||||
rv |= digitalRead(DIGITAL_DOT) == LOW ? PADDLE_DOT : 0;
|
||||
rv |= digitalRead(DIGITAL_DASH) == LOW ? PADDLE_DASH : 0;
|
||||
return rv;
|
||||
|
||||
#else
|
||||
int paddle = analogRead(ANALOG_KEYER);
|
||||
|
||||
if (paddle > 800) // above 4v is up
|
||||
@@ -52,6 +66,7 @@ byte getPaddle(){
|
||||
return PADDLE_BOTH; //both are between 1 and 2v
|
||||
else
|
||||
return PADDLE_STRAIGHT; //less than 1v is the straight key
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -96,9 +111,22 @@ unsigned char keyerState = IDLE;
|
||||
//Below is a test to reduce the keying error. do not delete lines
|
||||
//create by KD8CEC for compatible with new CW Logic
|
||||
char update_PaddleLatch(byte isUpdateKeyState) {
|
||||
unsigned char tmpKeyerControl = 0;
|
||||
int paddle = analogRead(ANALOG_KEYER);
|
||||
unsigned char tmpKeyerControl = 0;
|
||||
|
||||
#ifdef USE_ALTKEYER
|
||||
// One big note... I have no idea how debounce does or doesn't affect this... but there is no debounce right now. It's conceivable
|
||||
// that the normal uBITX use of an analog input for this masks bouncing...
|
||||
if ((digitalRead(DIGITAL_DASH) == LOW)) tmpKeyerControl |= DAH_L;
|
||||
if (Iambic_Key) {
|
||||
if (digitalRead(DIGITAL_DOT) == LOW) tmpKeyerControl |= DIT_L;
|
||||
} else {
|
||||
// I really would like to have the PTT (during CW mode) just result in key down regardless of Iambic, but this doesn't do that yet...
|
||||
if ((DIGITAL_KEY != PTT) || ((DIGITAL_KEY == PTT) && (cwMode > 0))) {
|
||||
if (digitalRead(DIGITAL_KEY) == LOW) tmpKeyerControl |= DAH_L;
|
||||
}
|
||||
}
|
||||
#else
|
||||
int paddle = analogRead(ANALOG_KEYER);
|
||||
if (paddle >= cwAdcDashFrom && paddle <= cwAdcDashTo)
|
||||
tmpKeyerControl |= DAH_L;
|
||||
else if (paddle >= cwAdcDotFrom && paddle <= cwAdcDotTo)
|
||||
@@ -111,9 +139,10 @@ char update_PaddleLatch(byte isUpdateKeyState) {
|
||||
tmpKeyerControl = 0 ;
|
||||
else if (paddle >= cwAdcSTFrom && paddle <= cwAdcSTTo)
|
||||
tmpKeyerControl = DIT_L ;
|
||||
else
|
||||
tmpKeyerControl = 0 ;
|
||||
else
|
||||
tmpKeyerControl = 0 ;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (isUpdateKeyState == 1)
|
||||
keyerControl |= tmpKeyerControl;
|
||||
@@ -224,10 +253,9 @@ void cwKeyer(void){
|
||||
|
||||
Check_Cat(2);
|
||||
} //end of while
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
while(1){
|
||||
if (update_PaddleLatch(0) == DIT_L) {
|
||||
if (update_PaddleLatch(0) == DAH_L) {
|
||||
// if we are here, it is only because the key is pressed
|
||||
if (!inTx){
|
||||
//DelayTime Option
|
||||
@@ -239,7 +267,7 @@ void cwKeyer(void){
|
||||
}
|
||||
cwKeydown();
|
||||
|
||||
while ( update_PaddleLatch(0) == DIT_L )
|
||||
while ( update_PaddleLatch(0) == DAH_L )
|
||||
delay_background(1, 3);
|
||||
|
||||
cwKeyUp();
|
||||
@@ -365,5 +393,3 @@ void cwKeyer(){
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
@@ -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.200")); //Version
|
||||
SendEEPromData(CMD_CALLSIGN, 0, userCallsignLength -1, 0);
|
||||
|
||||
/*
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user