Compare commits
9 Commits
version0.3
...
version1.0
Author | SHA1 | Date | |
---|---|---|---|
|
fb2c9d2cc3 | ||
|
bf68dd6c26 | ||
|
4a6909f361 | ||
|
e0f9148972 | ||
|
81333e7af4 | ||
|
ed767f2e34 | ||
|
1e9576ddc2 | ||
|
a7684284d2 | ||
|
3b4aaa664c |
@@ -109,7 +109,8 @@ void CatSetFreq(byte fromType)
|
||||
//#define BCD_LEN 9
|
||||
//PROTOCOL : 0x03
|
||||
//Computer <-(frequency)-> TRCV CAT_BUFF
|
||||
void CatGetFreqMode(unsigned long freq, byte fromType)
|
||||
//void CatGetFreqMode(unsigned long freq, byte fromType)
|
||||
void CatGetFreqMode(unsigned long freq) //for remove warning messages
|
||||
{
|
||||
int i;
|
||||
byte tmpValue;
|
||||
@@ -149,15 +150,21 @@ void CatGetFreqMode(unsigned long freq, byte fromType)
|
||||
SendCatData(5);
|
||||
}
|
||||
|
||||
void CatSetSplit(boolean isSplit, byte fromType)
|
||||
//void CatSetSplit(boolean isSplit, byte fromType)
|
||||
void CatSetSplit(boolean isSplit) //for remove warning messages
|
||||
{
|
||||
|
||||
if (isSplit)
|
||||
splitOn = 1;
|
||||
else
|
||||
splitOn = 0;
|
||||
|
||||
Serial.write(ACK);
|
||||
}
|
||||
|
||||
void CatSetPTT(boolean isPTTOn, byte fromType)
|
||||
{
|
||||
if (fromType == 2 || fromType == 3) {
|
||||
//
|
||||
if ((!inTx) && (fromType == 2 || fromType == 3)) {
|
||||
Serial.write(ACK);
|
||||
return;
|
||||
}
|
||||
@@ -193,7 +200,7 @@ void CatSetPTT(boolean isPTTOn, byte fromType)
|
||||
void CatVFOToggle(boolean isSendACK, byte fromType)
|
||||
{
|
||||
if (fromType != 2 && fromType != 3) {
|
||||
menuVfoToggle(1, 0);
|
||||
menuVfoToggle(1);
|
||||
}
|
||||
|
||||
if (isSendACK)
|
||||
@@ -232,7 +239,8 @@ void CatSetMode(byte tmpMode, byte fromType)
|
||||
}
|
||||
|
||||
//Read EEProm by uBITX Manager Software
|
||||
void ReadEEPRom(byte fromType)
|
||||
//void ReadEEPRom(byte fromType)
|
||||
void ReadEEPRom() //for remove warnings.
|
||||
{
|
||||
//5BYTES
|
||||
//CAT_BUFF[0] [1] [2] [3] [4] //4 COMMAND
|
||||
@@ -255,7 +263,8 @@ void ReadEEPRom(byte fromType)
|
||||
}
|
||||
|
||||
//Write just proecess 1byes
|
||||
void WriteEEPRom(byte fromType)
|
||||
//void WriteEEPRom(byte fromType)
|
||||
void WriteEEPRom(void) //for remove warning
|
||||
{
|
||||
//5BYTES
|
||||
uint16_t eepromStartIndex = CAT_BUFF[0] + CAT_BUFF[1] * 256;
|
||||
@@ -275,7 +284,8 @@ void WriteEEPRom(byte fromType)
|
||||
}
|
||||
}
|
||||
|
||||
void ReadEEPRom_FT817(byte fromType)
|
||||
//void ReadEEPRom_FT817(byte fromType)
|
||||
void ReadEEPRom_FT817(void) //for remove warnings
|
||||
{
|
||||
byte temp0 = CAT_BUFF[0];
|
||||
byte temp1 = CAT_BUFF[1];
|
||||
@@ -601,7 +611,8 @@ void WriteEEPRom_FT817(byte fromType)
|
||||
Serial.write(ACK);
|
||||
}
|
||||
|
||||
void CatRxStatus(byte fromType)
|
||||
//void CatRxStatus(byte fromType)
|
||||
void CatRxStatus(void) //for remove warning
|
||||
{
|
||||
byte sMeterValue = 1;
|
||||
|
||||
@@ -621,7 +632,8 @@ void CatRxStatus(byte fromType)
|
||||
}
|
||||
|
||||
|
||||
void CatTxStatus(byte fromType)
|
||||
//void CatTxStatus(byte fromType)
|
||||
void CatTxStatus(void) //for remove warning
|
||||
{
|
||||
boolean isHighSWR = false;
|
||||
boolean isSplitOn = false;
|
||||
@@ -722,11 +734,11 @@ void Check_Cat(byte fromType)
|
||||
|
||||
case 0x02 : //Split On
|
||||
case 0x82: //Split Off
|
||||
CatSetSplit(CAT_BUFF[4] == 0x02, fromType);
|
||||
CatSetSplit(CAT_BUFF[4] == 0x02);
|
||||
break;
|
||||
|
||||
case 0x03 : //Read Frequency and mode
|
||||
CatGetFreqMode(frequency, fromType);
|
||||
CatGetFreqMode(frequency);
|
||||
break;
|
||||
|
||||
case 0x07 : //Set Operating Mode
|
||||
@@ -743,24 +755,24 @@ void Check_Cat(byte fromType)
|
||||
break;
|
||||
|
||||
case 0xDB: //Read uBITX EEPROM Data
|
||||
ReadEEPRom(fromType); //Call by uBITX Manager Program
|
||||
ReadEEPRom(); //Call by uBITX Manager Program
|
||||
break;
|
||||
case 0xBB: //Read FT-817 EEPROM Data (for comfirtable)
|
||||
ReadEEPRom_FT817(fromType);
|
||||
ReadEEPRom_FT817();
|
||||
break;
|
||||
|
||||
case 0xDC: //Write uBITX EEPROM Data
|
||||
WriteEEPRom(fromType); //Call by uBITX Manager Program
|
||||
WriteEEPRom(); //Call by uBITX Manager Program
|
||||
break;
|
||||
case 0xBC: //Write FT-817 EEPROM Data (for comfirtable)
|
||||
WriteEEPRom_FT817(fromType);
|
||||
break;
|
||||
|
||||
case 0xE7 : //Read RX Status
|
||||
CatRxStatus(fromType);
|
||||
CatRxStatus();
|
||||
break;
|
||||
case 0xF7: //Read TX Status
|
||||
CatTxStatus(fromType);
|
||||
CatTxStatus();
|
||||
break;
|
||||
default:
|
||||
/*
|
||||
|
@@ -156,10 +156,10 @@ int count = 0; //to generally count ticks, loops, etc
|
||||
#define VFO_B_MODE 257
|
||||
#define CW_DELAY 258
|
||||
#define CW_START 259
|
||||
#define HAM_BAND_COUNT 260 //
|
||||
#define TX_TUNE_TYPE 261 //
|
||||
#define HAM_BAND_RANGE 262 //FROM (2BYTE) TO (2BYTE) * 10 = 40byte
|
||||
#define HAM_BAND_FREQS 302 //40, 1 BAND = 4Byte most bit is mode
|
||||
#define HAM_BAND_COUNT 260 //
|
||||
#define TX_TUNE_TYPE 261 //
|
||||
#define HAM_BAND_RANGE 262 //FROM (2BYTE) TO (2BYTE) * 10 = 40byte
|
||||
#define HAM_BAND_FREQS 302 //40, 1 BAND = 4Byte most bit is mode
|
||||
#define TUNING_STEP 342 //TUNING STEP * 6 (index 1 + STEPS 5) //1STEP :
|
||||
|
||||
|
||||
@@ -176,6 +176,10 @@ int count = 0; //to generally count ticks, loops, etc
|
||||
#define CW_ADC_BOTH_FROM 356 //CW ADC Range BOTH from (Lower 8 bit)
|
||||
#define CW_ADC_BOTH_TO 357 //CW ADC Range BOTH to (Lower 8 bit)
|
||||
#define CW_KEY_TYPE 358
|
||||
#define CW_DISPLAY_SHIFT 359 //Transmits on CWL, CWU Mode, LCD Frequency shifts Sidetone Frequency.
|
||||
//(7:Enable / Disable //0: enable, 1:disable, (default is applied shift)
|
||||
//6 : 0 : Adjust Pulus, 1 : Adjust Minus
|
||||
//0~5: Adjust Value : * 10 = Adjust Value (0~300)
|
||||
|
||||
#define DISPLAY_OPTION1 361 //Display Option1
|
||||
#define DISPLAY_OPTION2 362 //Display Option2
|
||||
@@ -285,6 +289,9 @@ bool Iambic_Key = true;
|
||||
#define IAMBICB 0x10 // 0 for Iambic A, 1 for Iambic B
|
||||
unsigned char keyerControl = IAMBICB;
|
||||
|
||||
byte isShiftDisplayCWFreq = 1; //Display Frequency
|
||||
int shiftDisplayAdjustVal = 0; //
|
||||
|
||||
//Variables for auto cw mode
|
||||
byte isCWAutoMode = 0; //0 : none, 1 : CW_AutoMode_Menu_Selection, 2 : CW_AutoMode Sending
|
||||
byte cwAutoTextCount = 0; //cwAutoText Count
|
||||
@@ -401,7 +408,6 @@ void saveBandFreqByIndex(unsigned long f, unsigned long mode, char bandIndex) {
|
||||
When the delay is used, the program will generate an error because it is not communicating,
|
||||
so Create a new delay function that can do background processing.
|
||||
*/
|
||||
|
||||
unsigned long delayBeforeTime = 0;
|
||||
byte delay_background(unsigned delayTime, byte fromType){ //fromType : 4 autoCWKey -> Check Paddle
|
||||
delayBeforeTime = millis();
|
||||
@@ -519,7 +525,6 @@ void setFrequency(unsigned long f){
|
||||
* put the uBitx in tx mode. It takes care of rit settings, sideband settings
|
||||
* Note: In cw mode, doesnt key the radio, only puts it in tx mode
|
||||
*/
|
||||
|
||||
void startTx(byte txMode, byte isDisplayUpdate){
|
||||
//Check Hamband only TX //Not found Hamband index by now frequency
|
||||
if (tuneTXType >= 100 && getIndexHambanBbyFreq(ritOn ? ritTxFrequency : frequency) == -1) {
|
||||
@@ -675,7 +680,7 @@ void checkButton(){
|
||||
delay(10);
|
||||
Check_Cat(0);
|
||||
}
|
||||
delay(50);//debounce
|
||||
//delay(50);//debounce
|
||||
}
|
||||
|
||||
|
||||
@@ -690,13 +695,12 @@ int encodedSumValue = 0;
|
||||
unsigned long lastTunetime = 0; //if continous moving, skip threshold processing
|
||||
byte lastMovedirection = 0; //0 : stop, 1 : cw, 2 : ccw
|
||||
|
||||
#define skipThresholdTime 100
|
||||
//#define skipThresholdTime 70
|
||||
#define encodeTimeOut 1000
|
||||
|
||||
void doTuningWithThresHold(){
|
||||
int s = 0;
|
||||
unsigned long prev_freq;
|
||||
long incdecValue = 0;
|
||||
|
||||
if ((vfoActive == VFO_A && ((isDialLock & 0x01) == 0x01)) ||
|
||||
(vfoActive == VFO_B && ((isDialLock & 0x02) == 0x02)))
|
||||
@@ -720,7 +724,9 @@ void doTuningWithThresHold(){
|
||||
encodedSumValue += (s > 0 ? 1 : -1);
|
||||
|
||||
//check threshold and operator actions (hold dial speed = continous moving, skip threshold check)
|
||||
if ((lastTunetime < millis() - skipThresholdTime) && ((encodedSumValue * encodedSumValue) <= (threshold * threshold)))
|
||||
//not use continues changing by Threshold
|
||||
//if ((lastTunetime < (millis() - skipThresholdTime)) && ((encodedSumValue * encodedSumValue) <= (threshold * threshold)))
|
||||
if (((encodedSumValue * encodedSumValue) <= (threshold * threshold)))
|
||||
return;
|
||||
|
||||
lastTunetime = millis();
|
||||
@@ -730,7 +736,8 @@ void doTuningWithThresHold(){
|
||||
|
||||
prev_freq = frequency;
|
||||
//incdecValue = tuningStep * s;
|
||||
frequency += (arTuneStep[tuneStepIndex -1] * s * (s * s < 10 ? 1 : 3)); //appield weight (s is speed)
|
||||
//frequency += (arTuneStep[tuneStepIndex -1] * s * (s * s < 10 ? 1 : 3)); //appield weight (s is speed)
|
||||
frequency += (arTuneStep[tuneStepIndex -1] * s); //appield weight (s is speed) //if want need more increase size, change step size
|
||||
|
||||
if (prev_freq < 10000000l && frequency > 10000000l)
|
||||
isUSB = true;
|
||||
@@ -750,15 +757,16 @@ void doRIT(){
|
||||
unsigned long old_freq = frequency;
|
||||
|
||||
if (knob < 0)
|
||||
frequency -= 100l;
|
||||
frequency -= (arTuneStep[tuneStepIndex -1]); //
|
||||
else if (knob > 0)
|
||||
frequency += 100;
|
||||
frequency += (arTuneStep[tuneStepIndex -1]); //
|
||||
|
||||
if (old_freq != frequency){
|
||||
setFrequency(frequency);
|
||||
updateDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
save Frequency and mode to eeprom for Auto Save with protected eeprom cycle, by kd8cec
|
||||
*/
|
||||
@@ -908,13 +916,13 @@ void initSettings(){
|
||||
if ((3 < tuneTXType && tuneTXType < 100) || 103 < tuneTXType || useHamBandCount < 1 || findedValidValueCount < 5)
|
||||
{
|
||||
tuneTXType = 2;
|
||||
//if empty band Information, auto insert default region 1 frequency range
|
||||
//if empty band Information, auto insert default region 2 frequency range
|
||||
//This part is made temporary for people who have difficulty setting up, so can remove it when you run out of memory.
|
||||
useHamBandCount = 10;
|
||||
hamBandRange[0][0] = 1810; hamBandRange[0][1] = 2000;
|
||||
hamBandRange[1][0] = 3500; hamBandRange[1][1] = 3800;
|
||||
hamBandRange[2][0] = 5351; hamBandRange[2][1] = 5367;
|
||||
hamBandRange[3][0] = 7000; hamBandRange[3][1] = 7300; //region 1
|
||||
hamBandRange[3][0] = 7000; hamBandRange[3][1] = 7300; //region 2
|
||||
hamBandRange[4][0] = 10100; hamBandRange[4][1] = 10150;
|
||||
hamBandRange[5][0] = 14000; hamBandRange[5][1] = 14350;
|
||||
hamBandRange[6][0] = 18068; hamBandRange[6][1] = 18168;
|
||||
@@ -962,6 +970,22 @@ void initSettings(){
|
||||
cwAdcBothFrom = EEPROM.read(CW_ADC_BOTH_FROM) | ((tmpMostBits & 0x30) << 4);
|
||||
cwAdcBothTo = EEPROM.read(CW_ADC_BOTH_TO) | ((tmpMostBits & 0xC0) << 2);
|
||||
|
||||
//Display Type for CW mode
|
||||
isShiftDisplayCWFreq = EEPROM.read(CW_DISPLAY_SHIFT);
|
||||
|
||||
//Adjust CW Mode Freq
|
||||
shiftDisplayAdjustVal = (isShiftDisplayCWFreq & 0x3F) * 10;
|
||||
|
||||
//check Minus
|
||||
if ((isShiftDisplayCWFreq & 0x40) == 0x40)
|
||||
shiftDisplayAdjustVal = shiftDisplayAdjustVal * -1;
|
||||
|
||||
//Shift Display Check (Default : 0)
|
||||
if ((isShiftDisplayCWFreq & 0x80) == 0) //Enabled
|
||||
isShiftDisplayCWFreq = 1;
|
||||
else //Disabled
|
||||
isShiftDisplayCWFreq = 0;
|
||||
|
||||
//default Value (for original hardware)
|
||||
if (cwAdcSTFrom >= cwAdcSTTo)
|
||||
{
|
||||
@@ -1036,7 +1060,6 @@ void initSettings(){
|
||||
}
|
||||
|
||||
void initPorts(){
|
||||
|
||||
analogReference(DEFAULT);
|
||||
|
||||
//??
|
||||
@@ -1086,7 +1109,7 @@ void setup()
|
||||
|
||||
//Serial.begin(9600);
|
||||
lcd.begin(16, 2);
|
||||
printLineF(1, F("CECBT v0.35"));
|
||||
printLineF(1, F("CECBT v1.04"));
|
||||
|
||||
Init_Cat(38400, SERIAL_8N1);
|
||||
initMeter(); //not used in this build
|
||||
@@ -1117,11 +1140,6 @@ void setup()
|
||||
factory_alignment();
|
||||
}
|
||||
|
||||
|
||||
//for debug
|
||||
int dbgCnt = 0;
|
||||
byte flasher = 0;
|
||||
|
||||
//Auto save Frequency and Mode with Protected eeprom life by KD8CEC
|
||||
void checkAutoSaveFreqMode()
|
||||
{
|
||||
@@ -1140,18 +1158,8 @@ void checkAutoSaveFreqMode()
|
||||
//check time for Frequency auto save
|
||||
if (millis() - saveCheckTime > saveIntervalSec * 1000)
|
||||
{
|
||||
if (vfoActive == VFO_A)
|
||||
{
|
||||
vfoA = frequency;
|
||||
vfoA_mode = modeToByte();
|
||||
storeFrequencyAndMode(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
vfoB = frequency;
|
||||
vfoB_mode = modeToByte();
|
||||
storeFrequencyAndMode(2);
|
||||
}
|
||||
FrequencyToVFO(1);
|
||||
saveCheckTime = 0; //for reduce cpu use rate
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1178,11 +1186,11 @@ void loop(){
|
||||
|
||||
if (isCWAutoMode == 0 && beforeIdle_ProcessTime < millis() - 250) {
|
||||
idle_process();
|
||||
checkAutoSaveFreqMode(); //move here form out scope for reduce cpu use rate
|
||||
beforeIdle_ProcessTime = millis();
|
||||
}
|
||||
} //end of check TX Status
|
||||
|
||||
//we check CAT after the encoder as it might put the radio into TX
|
||||
Check_Cat(inTx? 1 : 0);
|
||||
checkAutoSaveFreqMode();
|
||||
}
|
||||
|
@@ -31,12 +31,15 @@ void updateLine2Buffer(char isDirectCall)
|
||||
{
|
||||
if (ritOn)
|
||||
{
|
||||
strcpy(line2Buffer, "RitTX:");
|
||||
/*
|
||||
line2Buffer[0] = 'R';
|
||||
line2Buffer[1] = 'i';
|
||||
line2Buffer[2] = 't';
|
||||
line2Buffer[3] = 'T';
|
||||
line2Buffer[4] = 'X';
|
||||
line2Buffer[5] = ':';
|
||||
*/
|
||||
|
||||
//display frequency
|
||||
tmpFreq = ritTxFrequency;
|
||||
@@ -61,12 +64,10 @@ void updateLine2Buffer(char isDirectCall)
|
||||
if (vfoActive == VFO_B)
|
||||
{
|
||||
tmpFreq = vfoA;
|
||||
//line2Buffer[0] = 'A';
|
||||
}
|
||||
else
|
||||
{
|
||||
tmpFreq = vfoB;
|
||||
//line2Buffer[0] = 'B';
|
||||
}
|
||||
|
||||
// EXAMPLE 1 & 2
|
||||
@@ -133,16 +134,18 @@ void updateLine2Buffer(char isDirectCall)
|
||||
line2Buffer[8] = 'I';
|
||||
line2Buffer[9] = 'F';
|
||||
|
||||
if (ifShiftValue == 0)
|
||||
{
|
||||
//if (ifShiftValue == 0)
|
||||
//{
|
||||
/*
|
||||
line2Buffer[10] = 'S';
|
||||
line2Buffer[11] = ':';
|
||||
line2Buffer[12] = 'O';
|
||||
line2Buffer[13] = 'F';
|
||||
line2Buffer[14] = 'F';
|
||||
}
|
||||
else
|
||||
{
|
||||
*/
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
line2Buffer[10] = ifShiftValue >= 0 ? '+' : 0;
|
||||
line2Buffer[11] = 0;
|
||||
line2Buffer[12] = ' ';
|
||||
@@ -151,7 +154,7 @@ void updateLine2Buffer(char isDirectCall)
|
||||
memset(b, 0, sizeof(b));
|
||||
ltoa(ifShiftValue, b, DEC);
|
||||
strncat(line2Buffer, b, 5);
|
||||
}
|
||||
//}
|
||||
|
||||
if (isDirectCall == 1) //if call by encoder (not scheduler), immediate print value
|
||||
printLine2(line2Buffer);
|
||||
@@ -213,16 +216,18 @@ void updateLine2Buffer(char isDirectCall)
|
||||
//meterType : 0 = S.Meter, 1 : P.Meter
|
||||
void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
|
||||
{
|
||||
drawMeter(meterValue); //call original source code
|
||||
int lineNumber = 0;
|
||||
if ((displayOption1 & 0x01) == 0x01)
|
||||
lineNumber = 1;
|
||||
if (meterType == 0 || meterType == 1 || meterType == 2)
|
||||
{
|
||||
drawMeter(meterValue); //call original source code
|
||||
int lineNumber = 0;
|
||||
if ((displayOption1 & 0x01) == 0x01)
|
||||
lineNumber = 1;
|
||||
|
||||
lcd.setCursor(drawPosition, lineNumber);
|
||||
|
||||
lcd.setCursor(drawPosition, lineNumber);
|
||||
|
||||
for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6
|
||||
lcd.write(lcdMeter[i]);
|
||||
|
||||
for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6
|
||||
lcd.write(lcdMeter[i]);
|
||||
}
|
||||
}
|
||||
|
||||
byte testValue = 0;
|
||||
|
@@ -90,13 +90,13 @@ void cwKeyUp(){
|
||||
#define PDLSWAP 0x08 // 0 for normal, 1 for swap
|
||||
#define IAMBICB 0x10 // 0 for Iambic A, 1 for Iambic B
|
||||
enum KSTYPE {IDLE, CHK_DIT, CHK_DAH, KEYED_PREP, KEYED, INTER_ELEMENT };
|
||||
static long ktimer;
|
||||
static unsigned long ktimer;
|
||||
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;
|
||||
unsigned char tmpKeyerControl = 0;
|
||||
int paddle = analogRead(ANALOG_KEYER);
|
||||
|
||||
if (paddle >= cwAdcDashFrom && paddle <= cwAdcDashTo)
|
||||
@@ -126,9 +126,7 @@ char update_PaddleLatch(byte isUpdateKeyState) {
|
||||
// modified by KD8CEC
|
||||
******************************************************************************/
|
||||
void cwKeyer(void){
|
||||
byte paddle;
|
||||
lastPaddle = 0;
|
||||
int dot,dash;
|
||||
bool continue_loop = true;
|
||||
unsigned tmpKeyControl = 0;
|
||||
|
||||
@@ -174,6 +172,9 @@ void cwKeyer(void){
|
||||
keyerControl &= ~(DIT_L + DAH_L); // clear both paddle latch bits
|
||||
keyerState = KEYED; // next state
|
||||
if (!inTx){
|
||||
//DelayTime Option
|
||||
delay_background(delayBeforeCWStartTime * 2, 2);
|
||||
|
||||
keyDown = 0;
|
||||
cwTimeout = millis() + cwDelayTime * 10; //+ CW_TIMEOUT;
|
||||
startTx(TX_CW, 1);
|
||||
@@ -206,7 +207,7 @@ void cwKeyer(void){
|
||||
break;
|
||||
}
|
||||
|
||||
Check_Cat(3);
|
||||
Check_Cat(2);
|
||||
} //end of while
|
||||
}
|
||||
else{
|
||||
@@ -214,6 +215,9 @@ void cwKeyer(void){
|
||||
if (update_PaddleLatch(0) == DIT_L) {
|
||||
// if we are here, it is only because the key is pressed
|
||||
if (!inTx){
|
||||
//DelayTime Option
|
||||
delay_background(delayBeforeCWStartTime * 2, 2);
|
||||
|
||||
keyDown = 0;
|
||||
cwTimeout = millis() + cwDelayTime * 10; //+ CW_TIMEOUT;
|
||||
startTx(TX_CW, 1);
|
||||
@@ -231,13 +235,14 @@ void cwKeyer(void){
|
||||
keyDown = 0;
|
||||
stopTx();
|
||||
}
|
||||
if (!cwTimeout)
|
||||
return;
|
||||
//if (!cwTimeout) //removed by KD8CEC
|
||||
// return;
|
||||
// got back to the beginning of the loop, if no further activity happens on straight key
|
||||
// we will time out, and return out of this routine
|
||||
//delay(5);
|
||||
delay_background(5, 3);
|
||||
continue;
|
||||
//delay_background(5, 3); //removed by KD8CEC
|
||||
//continue; //removed by KD8CEC
|
||||
return; //Tx stop control by Main Loop
|
||||
}
|
||||
|
||||
Check_Cat(2);
|
||||
|
@@ -56,7 +56,7 @@ void menuBand(int btn){
|
||||
return;
|
||||
}
|
||||
|
||||
printLineF2(F("Press to confirm"));
|
||||
//printLineF2(F("Press to confirm"));
|
||||
//wait for the button menu select button to be lifted)
|
||||
while (btnDown()) {
|
||||
delay_background(50, 0);
|
||||
@@ -64,7 +64,7 @@ void menuBand(int btn){
|
||||
btnPressCount = 0;
|
||||
if (tuneTXType > 0) { //Just toggle 0 <-> 2, if tuneTXType is 100, 100 -> 0 -> 2
|
||||
tuneTXType = 0;
|
||||
printLineF2(F("Full range mode"));
|
||||
printLineF2(F("General mode"));
|
||||
}
|
||||
else {
|
||||
tuneTXType = 2;
|
||||
@@ -72,9 +72,9 @@ void menuBand(int btn){
|
||||
}
|
||||
delay_background(1000, 0);
|
||||
printLine2ClearAndUpdate();
|
||||
printLineF2(F("Press to confirm"));
|
||||
}
|
||||
}
|
||||
printLineF2(F("Press to confirm"));
|
||||
|
||||
char currentBandIndex = -1;
|
||||
//Save Band Information
|
||||
@@ -92,7 +92,6 @@ void menuBand(int btn){
|
||||
ritDisable();
|
||||
|
||||
while(!btnDown()){
|
||||
|
||||
knob = enc_read();
|
||||
if (knob != 0){
|
||||
if (tuneTXType == 2 || tuneTXType == 3 || tuneTXType == 102 || tuneTXType == 103) { //only ham band move
|
||||
@@ -127,17 +126,7 @@ void menuBand(int btn){
|
||||
delay_background(20, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
while(btnDown()) {
|
||||
delay(50);
|
||||
Check_Cat(0); //To prevent disconnections
|
||||
}
|
||||
*/
|
||||
FrequencyToVFO(1);
|
||||
|
||||
//printLine2ClearAndUpdate();
|
||||
//delay_background(500, 0);
|
||||
//menuOn = 0;
|
||||
menuClearExit(500);
|
||||
}
|
||||
|
||||
@@ -181,25 +170,6 @@ void byteToMode(byte modeValue, byte autoSetModebyFreq){
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
//Convert Number to Mode by KD8CEC
|
||||
void byteWithFreqToMode(byte modeValue){
|
||||
if (modeValue == 4)
|
||||
cwMode = 1;
|
||||
else if (modeValue == 5)
|
||||
cwMode = 2;
|
||||
else {
|
||||
cwMode = 0;
|
||||
if (modeValue == 3)
|
||||
isUSB = 1;
|
||||
else if (modeValue == 0) //Not Set
|
||||
isUSB = (frequency > 10000000l) ? true : false;
|
||||
else
|
||||
isUSB = 0;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
//IF Shift function, BFO Change like RIT, by KD8CEC
|
||||
void menuIFSSetup(int btn){
|
||||
int knob = 0;
|
||||
@@ -212,11 +182,7 @@ void menuIFSSetup(int btn){
|
||||
printLineF2(F("IF Shift:Off, On?"));
|
||||
}
|
||||
else {
|
||||
//if (isIFShift == 0){
|
||||
//printLineF2(F("IF Shift is ON"));
|
||||
//delay_background(500, 0);
|
||||
isIFShift = 1;
|
||||
//}
|
||||
|
||||
delay_background(500, 0);
|
||||
updateLine2Buffer(1);
|
||||
@@ -255,7 +221,7 @@ void menuIFSSetup(int btn){
|
||||
isIFShift = 0;
|
||||
printLineF2(F("IF Shift is OFF"));
|
||||
setFrequency(frequency);
|
||||
delay_background(500, 0);
|
||||
delay_background(1500, 0);
|
||||
}
|
||||
|
||||
//menuOn = 0;
|
||||
@@ -289,18 +255,13 @@ void menuSelectMode(int btn){
|
||||
|
||||
beforeMode = selectModeType;
|
||||
|
||||
while(!btnDown() && digitalRead(PTT) == HIGH){
|
||||
while(!btnDown()){
|
||||
//Display Mode Name
|
||||
printLineF1(F("LSB USB CWL CWU"));
|
||||
if (selectModeType == 0)
|
||||
printLineF1(F("LSB"));
|
||||
else if (selectModeType == 1)
|
||||
printLineF1(F("USB"));
|
||||
else if (selectModeType == 2)
|
||||
printLineF1(F("CWL"));
|
||||
else if (selectModeType == 3)
|
||||
printLineF1(F("CWU"));
|
||||
|
||||
memset(c, 0, sizeof(c));
|
||||
strcpy(c, " LSB USB CWL CWU");
|
||||
c[selectModeType * 4] = '>';
|
||||
printLine1(c);
|
||||
|
||||
knob = enc_read();
|
||||
|
||||
if (knob != 0)
|
||||
@@ -320,7 +281,8 @@ void menuSelectMode(int btn){
|
||||
}
|
||||
}
|
||||
|
||||
Check_Cat(0); //To prevent disconnections
|
||||
//Check_Cat(0); //To prevent disconnections
|
||||
delay_background(50, 0);
|
||||
}
|
||||
|
||||
if (beforeMode != selectModeType) {
|
||||
@@ -347,31 +309,25 @@ void menuSelectMode(int btn){
|
||||
si5351bx_setfreq(0, cwmCarrier + (isIFShift ? ifShiftValue : 0)); //set back the carrier oscillator anyway, cw tx switches it off
|
||||
|
||||
setFrequency(frequency);
|
||||
|
||||
//delay_background(500, 0);
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Memory to VFO, VFO to Memory by KD8CEC
|
||||
//select between MtoV and VtoM by isMemoryToVfo
|
||||
void menuCHMemory(int btn, byte isMemoryToVfo){
|
||||
int knob = 0;
|
||||
int selectChannel = 0;
|
||||
byte isDisplayInfo = 1;
|
||||
byte isCancel = 0;
|
||||
int moveStep = 0;
|
||||
unsigned long resultFreq, tmpFreq = 0;
|
||||
byte loadMode = 0;
|
||||
|
||||
if (!btn){
|
||||
if (isMemoryToVfo == 1)
|
||||
printLine2("Channel To VFO?");
|
||||
printLineF2(F("Channel To VFO?"));
|
||||
else
|
||||
printLine2("VFO To Channel?");
|
||||
printLineF2(F("VFO To Channel?"));
|
||||
}
|
||||
else {
|
||||
delay_background(500, 0);
|
||||
@@ -412,10 +368,6 @@ void menuCHMemory(int btn, byte isMemoryToVfo){
|
||||
strcat(c, b); //append channel Number;
|
||||
strcat(c, " :"); //append channel Number;
|
||||
}
|
||||
/*
|
||||
if (selectChannel < 10)
|
||||
printLineFromEEPRom(0, 4, 0, userCallsignLength -1); //eeprom to lcd use offset (USER_CALLSIGN_DAT)
|
||||
*/
|
||||
|
||||
//display frequency
|
||||
tmpFreq = resultFreq;
|
||||
@@ -472,7 +424,7 @@ void menuCHMemory(int btn, byte isMemoryToVfo){
|
||||
else
|
||||
{
|
||||
//Save current Frequency to Channel (selectChannel)
|
||||
EEPROM.put(CHANNEL_FREQ + 4 * selectChannel, (frequency & 0x1FFFFFFF) | (modeToByte() << 29) );
|
||||
EEPROM.put(CHANNEL_FREQ + 4 * selectChannel, (frequency & 0x1FFFFFFF) | (((unsigned long)modeToByte()) << 29) );
|
||||
printLine2("Saved Frequency");
|
||||
}
|
||||
}
|
||||
@@ -491,7 +443,7 @@ void menuSetupKeyType(int btn){
|
||||
printLineF2(F("Change Key Type?"));
|
||||
}
|
||||
else {
|
||||
printLineF2(F("Press to set Key"));
|
||||
//printLineF2(F("Press to set Key")); //for reduce usable flash memory
|
||||
delay_background(500, 0);
|
||||
selectedKeyType = cwKeyType;
|
||||
|
||||
@@ -539,10 +491,7 @@ void menuSetupKeyType(int btn){
|
||||
else
|
||||
keyerControl |= IAMBICB;
|
||||
}
|
||||
|
||||
//delay_background(2000, 0);
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
|
||||
menuClearExit(1000);
|
||||
}
|
||||
}
|
||||
@@ -573,18 +522,11 @@ void menuADCMonitor(int btn){
|
||||
adcPinA0 = analogRead(A0); //A0(BLACK, EncoderA)
|
||||
adcPinA1 = analogRead(A1); //A1(BROWN, EncoderB)
|
||||
adcPinA2 = analogRead(A2); //A2(RED, Function Key)
|
||||
adcPinA3 = analogRead(A3); //A3(ORANGE, CW Key)
|
||||
adcPinA6 = analogRead(A6); //A6(BLUE, Ptt)
|
||||
adcPinA3 = analogRead(A3); //A3(PTT)
|
||||
adcPinA6 = analogRead(A6); //A6(KEYER)
|
||||
adcPinA7 = analogRead(A7); //A7(VIOLET, Spare)
|
||||
|
||||
/*
|
||||
sprintf(c, "%4d %4d %4d", adcPinA0, adcPinA1, adcPinA2);
|
||||
printLine1(c);
|
||||
sprintf(c, "%4d %4d %4d", adcPinA3, adcPinA6, adcPinA7);
|
||||
printLine2(c);
|
||||
*/
|
||||
|
||||
if (adcPinA6 < 10) {
|
||||
if (adcPinA3 < 50) {
|
||||
if (pressKeyTime == 0)
|
||||
pressKeyTime = millis();
|
||||
else if (pressKeyTime < (millis() - 3000))
|
||||
@@ -623,13 +565,11 @@ void menuADCMonitor(int btn){
|
||||
delay_background(200, 0);
|
||||
} //end of while
|
||||
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(0);
|
||||
}
|
||||
|
||||
//VFO Toggle and save VFO Information, modified by KD8CEC
|
||||
void menuVfoToggle(int btn, char isUseDelayTime)
|
||||
void menuVfoToggle(int btn)
|
||||
{
|
||||
if (!btn){
|
||||
if (vfoActive == VFO_A)
|
||||
@@ -641,40 +581,25 @@ void menuVfoToggle(int btn, char isUseDelayTime)
|
||||
FrequencyToVFO(1);
|
||||
|
||||
if (vfoActive == VFO_B){
|
||||
//vfoB = frequency;
|
||||
//vfoB_mode = modeToByte();
|
||||
//storeFrequencyAndMode(2); //vfoB -> eeprom
|
||||
|
||||
vfoActive = VFO_A;
|
||||
frequency = vfoA;
|
||||
saveCheckFreq = frequency;
|
||||
byteToMode(vfoA_mode, 0);
|
||||
//printLineF2(F("Selected VFO A"));
|
||||
}
|
||||
else {
|
||||
//vfoA = frequency;
|
||||
//vfoA_mode = modeToByte();
|
||||
//storeFrequencyAndMode(1); //vfoA -> eeprom
|
||||
|
||||
vfoActive = VFO_B;
|
||||
frequency = vfoB;
|
||||
saveCheckFreq = frequency;
|
||||
byteToMode(vfoB_mode, 0);
|
||||
//printLineF2(F("Selected VFO B"));
|
||||
}
|
||||
|
||||
ritDisable();
|
||||
setFrequency(frequency);
|
||||
|
||||
//if (isUseDelayTime == 1) //Found Issue in wsjt-x Linux 32bit
|
||||
// delay_background(500, 0);
|
||||
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(0);
|
||||
}
|
||||
}
|
||||
|
||||
//modified for reduce used flash memory by KD8CEC
|
||||
void menuRitToggle(int btn){
|
||||
if (!btn){
|
||||
if (ritOn == 1)
|
||||
@@ -684,17 +609,15 @@ void menuRitToggle(int btn){
|
||||
}
|
||||
else {
|
||||
if (ritOn == 0){
|
||||
printLineF2(F("RIT is ON"));
|
||||
//printLineF2(F("RIT is ON"));
|
||||
//enable RIT so the current frequency is used at transmit
|
||||
ritEnable(frequency);
|
||||
}
|
||||
else{
|
||||
printLineF2(F("RIT is OFF"));
|
||||
//printLineF2(F("RIT is OFF"));
|
||||
ritDisable();
|
||||
}
|
||||
//delay_background(500, 0);
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
|
||||
menuClearExit(500);
|
||||
}
|
||||
}
|
||||
@@ -719,9 +642,6 @@ void menuSplitOnOff(int btn){
|
||||
printLineF2(F("Split On!"));
|
||||
}
|
||||
|
||||
//delay_background(500, 0);
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(500);
|
||||
}
|
||||
}
|
||||
@@ -746,9 +666,6 @@ void menuTxOnOff(int btn, byte optionType){
|
||||
printLineF2(F("TX ON!"));
|
||||
}
|
||||
|
||||
//delay_background(500, 0);
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(500);
|
||||
}
|
||||
}
|
||||
@@ -764,17 +681,18 @@ void menuSetup(int btn){
|
||||
else
|
||||
printLineF2(F("Setup Off?"));
|
||||
}else {
|
||||
modeCalibrate = ! modeCalibrate;
|
||||
/*
|
||||
if (!modeCalibrate){
|
||||
modeCalibrate = true;
|
||||
printLineF2(F("Setup:On"));
|
||||
//printLineF2(F("Setup:On"));
|
||||
}
|
||||
else {
|
||||
modeCalibrate = false;
|
||||
printLineF2(F("Setup:Off"));
|
||||
//printLineF2(F("Setup:Off"));
|
||||
}
|
||||
//delay_background(2000, 0);
|
||||
//printLine2Clear();
|
||||
//menuOn = 0;
|
||||
*/
|
||||
|
||||
menuClearExit(1000);
|
||||
}
|
||||
}
|
||||
@@ -802,14 +720,14 @@ void menuCWSpeed(int btn){
|
||||
return;
|
||||
}
|
||||
|
||||
printLineF1(F("Press to set WPm"));
|
||||
printLineF1(F("Press to set WPM"));
|
||||
strcpy(b, "WPM:");
|
||||
itoa(wpm,c, 10);
|
||||
strcat(b, c);
|
||||
printLine2(b);
|
||||
delay_background(300, 0);
|
||||
|
||||
while(!btnDown() && digitalRead(PTT) == HIGH){
|
||||
while(!btnDown()){
|
||||
|
||||
knob = enc_read();
|
||||
if (knob != 0){
|
||||
@@ -824,23 +742,18 @@ void menuCWSpeed(int btn){
|
||||
printLine2(b);
|
||||
}
|
||||
//abort if this button is down
|
||||
if (btnDown())
|
||||
//re-enable the clock1 and clock 2
|
||||
break;
|
||||
//if (btnDown())
|
||||
//re-enable the clock1 and clock 2
|
||||
// break;
|
||||
|
||||
Check_Cat(0); //To prevent disconnections
|
||||
}
|
||||
|
||||
//save the setting
|
||||
//if (digitalRead(PTT) == LOW){
|
||||
printLineF2(F("CW Speed set!"));
|
||||
cwSpeed = 1200/wpm;
|
||||
EEPROM.put(CW_SPEED, cwSpeed);
|
||||
//}
|
||||
//delay_background(2000, 0);
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(1000);
|
||||
//save the setting
|
||||
//printLineF2(F("CW Speed set!"));
|
||||
cwSpeed = 1200 / wpm;
|
||||
EEPROM.put(CW_SPEED, cwSpeed);
|
||||
menuClearExit(1000);
|
||||
}
|
||||
|
||||
//Builtin CW Keyer Logic by KD8CEC
|
||||
@@ -873,8 +786,7 @@ void menuSetupCwDelay(int btn){
|
||||
int tmpCWDelay = cwDelayTime * 10;
|
||||
|
||||
if (!btn){
|
||||
strcpy(b, "CW TX->RX Delay");
|
||||
printLine2(b);
|
||||
printLineF2(F("CW TX->RX Delay"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -885,7 +797,7 @@ void menuSetupCwDelay(int btn){
|
||||
printLine2(b);
|
||||
delay_background(300, 0);
|
||||
|
||||
while(!btnDown() && digitalRead(PTT) == HIGH){
|
||||
while(!btnDown()){
|
||||
knob = enc_read();
|
||||
if (knob != 0){
|
||||
if (tmpCWDelay > 3 && knob < 0)
|
||||
@@ -906,64 +818,68 @@ void menuSetupCwDelay(int btn){
|
||||
}
|
||||
|
||||
//save the setting
|
||||
//if (digitalRead(PTT) == LOW){
|
||||
printLineF2(F("CW Delay set!"));
|
||||
cwDelayTime = tmpCWDelay / 10;
|
||||
EEPROM.put(CW_DELAY, cwDelayTime);
|
||||
//delay_background(2000, 0);
|
||||
//}
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
//printLineF2(F("CW Delay set!"));
|
||||
cwDelayTime = tmpCWDelay / 10;
|
||||
EEPROM.put(CW_DELAY, cwDelayTime);
|
||||
menuClearExit(1000);
|
||||
}
|
||||
|
||||
//CW Time delay by KD8CEC
|
||||
void menuSetupTXCWInterval(int btn){
|
||||
char needDisplayInformation = 1;
|
||||
int knob = 0;
|
||||
int tmpTXCWInterval = delayBeforeCWStartTime * 2;
|
||||
|
||||
if (!btn){
|
||||
strcpy(b, "CW Start Delay");
|
||||
printLine2(b);
|
||||
printLineF2(F("CW Start Delay"));
|
||||
return;
|
||||
}
|
||||
|
||||
printLineF1(F("Press, set Delay"));
|
||||
/*
|
||||
strcpy(b, "Start Delay:");
|
||||
itoa(tmpTXCWInterval,c, 10);
|
||||
strcat(b, c);
|
||||
printLine2(b);
|
||||
*/
|
||||
delay_background(300, 0);
|
||||
|
||||
while(!btnDown() && digitalRead(PTT) == HIGH){
|
||||
while(!btnDown()){
|
||||
|
||||
if (needDisplayInformation == 1) {
|
||||
strcpy(b, "Start Delay:");
|
||||
itoa(tmpTXCWInterval,c, 10);
|
||||
strcat(b, c);
|
||||
printLine2(b);
|
||||
needDisplayInformation = 0;
|
||||
}
|
||||
|
||||
knob = enc_read();
|
||||
if (knob != 0){
|
||||
if (tmpTXCWInterval > 0 && knob < 0)
|
||||
tmpTXCWInterval -= 2;
|
||||
if (tmpTXCWInterval < 500 && knob > 0)
|
||||
tmpTXCWInterval += 2;
|
||||
|
||||
/*
|
||||
strcpy(b, "Start Delay:");
|
||||
itoa(tmpTXCWInterval,c, 10);
|
||||
strcat(b, c);
|
||||
printLine2(b);
|
||||
*/
|
||||
needDisplayInformation = 1;
|
||||
}
|
||||
//abort if this button is down
|
||||
if (btnDown())
|
||||
break;
|
||||
//if (btnDown())
|
||||
// break;
|
||||
|
||||
Check_Cat(0); //To prevent disconnections
|
||||
}
|
||||
|
||||
//save the setting
|
||||
//if (digitalRead(PTT) == LOW){
|
||||
printLineF2(F("CW Start set!"));
|
||||
delayBeforeCWStartTime = tmpTXCWInterval / 2;
|
||||
EEPROM.put(CW_START, delayBeforeCWStartTime);
|
||||
//delay_background(2000, 0);
|
||||
//}
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
//printLineF2(F("CW Start set!"));
|
||||
delayBeforeCWStartTime = tmpTXCWInterval / 2;
|
||||
EEPROM.put(CW_START, delayBeforeCWStartTime);
|
||||
|
||||
menuClearExit(1000);
|
||||
}
|
||||
|
||||
@@ -1158,9 +1074,9 @@ void menuSetupCarrier(int btn){
|
||||
knob = enc_read();
|
||||
|
||||
if (knob > 0)
|
||||
usbCarrier -= 50;
|
||||
usbCarrier -= 5;
|
||||
else if (knob < 0)
|
||||
usbCarrier += 50;
|
||||
usbCarrier += 5;
|
||||
else
|
||||
continue; //don't update the frequency or the display
|
||||
|
||||
@@ -1224,8 +1140,6 @@ void menuSetupCWCarrier(int btn){
|
||||
si5351bx_setfreq(0, cwmCarrier);
|
||||
printCarrierFreq(cwmCarrier);
|
||||
|
||||
//Check_Cat(0); //To prevent disconnections
|
||||
//delay(100);
|
||||
delay_background(100, 0);
|
||||
}
|
||||
|
||||
@@ -1244,8 +1158,6 @@ void menuSetupCWCarrier(int btn){
|
||||
si5351bx_setfreq(0, cwmCarrier); //set back the carrier oscillator anyway, cw tx switches it off
|
||||
|
||||
setFrequency(frequency);
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(0);
|
||||
}
|
||||
|
||||
@@ -1281,8 +1193,6 @@ void menuSetupCwTone(int btn){
|
||||
itoa(sideTone, b, 10);
|
||||
printLine2(b);
|
||||
|
||||
//delay(100);
|
||||
//Check_Cat(0); //To prevent disconnections
|
||||
delay_background(100, 0);
|
||||
}
|
||||
noTone(CW_TONE);
|
||||
@@ -1295,8 +1205,6 @@ void menuSetupCwTone(int btn){
|
||||
else
|
||||
sideTone = prev_sideTone;
|
||||
|
||||
//printLine2ClearAndUpdate();
|
||||
//menuOn = 0;
|
||||
menuClearExit(0);
|
||||
}
|
||||
|
||||
@@ -1308,20 +1216,15 @@ void setDialLock(byte tmpLock, byte fromMode) {
|
||||
isDialLock &= ~(vfoActive == VFO_A ? 0x01 : 0x02);
|
||||
|
||||
if (fromMode == 2 || fromMode == 3) return;
|
||||
|
||||
if (tmpLock == 1)
|
||||
printLineF2(F("Dial Lock ON"));
|
||||
else
|
||||
printLineF2(F("Dial Lock OFF"));
|
||||
|
||||
delay_background(1000, 0);
|
||||
//delay_background(1000, 0);
|
||||
printLine2ClearAndUpdate();
|
||||
}
|
||||
|
||||
unsigned int btnDownTimeCount;
|
||||
byte btnDownTimeCount;
|
||||
|
||||
#define PRESS_ADJUST_TUNE 1000
|
||||
#define PRESS_LOCK_CONTROL 2000
|
||||
#define PRESS_ADJUST_TUNE 20 //1000msec 20 * 50 = 1000milisec
|
||||
#define PRESS_LOCK_CONTROL 40 //2000msec 40 * 50 = 2000milisec
|
||||
|
||||
//Modified by KD8CEC
|
||||
void doMenu(){
|
||||
@@ -1335,14 +1238,12 @@ void doMenu(){
|
||||
|
||||
//Appened Lines by KD8CEC for Adjust Tune step and Set Dial lock
|
||||
while(btnDown()){
|
||||
//delay(50);
|
||||
//Check_Cat(0); //To prevent disconnections
|
||||
delay_background(50, 0);
|
||||
|
||||
if (btnDownTimeCount++ == (PRESS_ADJUST_TUNE / 50)) { //Set Tune Step
|
||||
if (btnDownTimeCount++ == (PRESS_ADJUST_TUNE)) { //Set Tune Step
|
||||
printLineF2(F("Set Tune Step?"));
|
||||
}
|
||||
else if (btnDownTimeCount > (PRESS_LOCK_CONTROL / 50)) { //check long time Down Button -> 2.5 Second => Lock
|
||||
else if (btnDownTimeCount > (PRESS_LOCK_CONTROL)) { //check long time Down Button -> 2.5 Second => Lock
|
||||
if (vfoActive == VFO_A)
|
||||
setDialLock((isDialLock & 0x01) == 0x01 ? 0 : 1, 0); //Reverse Dial lock
|
||||
else
|
||||
@@ -1353,12 +1254,12 @@ void doMenu(){
|
||||
delay(50); //debounce
|
||||
|
||||
//ADJUST TUNE STEP
|
||||
if (btnDownTimeCount > (PRESS_ADJUST_TUNE / 50))
|
||||
if (btnDownTimeCount > PRESS_ADJUST_TUNE)
|
||||
{
|
||||
printLineF1(F("Press to set step"));
|
||||
printLineF1(F("Press to set"));
|
||||
isNeedDisplay = 1; //check to need display for display current value
|
||||
|
||||
while (digitalRead(PTT) == HIGH && !btnDown())
|
||||
while (!btnDown())
|
||||
{
|
||||
//Check_Cat(0); //To prevent disconnections
|
||||
//delay(50); //debounce
|
||||
@@ -1392,8 +1293,6 @@ void doMenu(){
|
||||
}
|
||||
} //end of while
|
||||
|
||||
printLineF2(F("Changed Step!"));
|
||||
//SAVE EEPROM
|
||||
EEPROM.put(TUNING_STEP, tuneStepIndex);
|
||||
delay_background(500, 0);
|
||||
printLine2ClearAndUpdate();
|
||||
@@ -1422,7 +1321,7 @@ void doMenu(){
|
||||
else if (select < 10)
|
||||
menuBand(btnState);
|
||||
else if (select < 20)
|
||||
menuVfoToggle(btnState, 1);
|
||||
menuVfoToggle(btnState);
|
||||
else if (select < 30)
|
||||
menuSelectMode(btnState);
|
||||
else if (select < 40)
|
||||
@@ -1443,6 +1342,8 @@ void doMenu(){
|
||||
menuSetup(btnState);
|
||||
else if (select < 120)
|
||||
menuExit(btnState);
|
||||
|
||||
/*
|
||||
else if (select < 130 && modeCalibrate)
|
||||
menuSetupCalibration(btnState); //crystal
|
||||
else if (select < 140 && modeCalibrate)
|
||||
@@ -1463,14 +1364,40 @@ void doMenu(){
|
||||
menuTxOnOff(btnState, 0x01); //TX OFF / ON
|
||||
else if (select < 220 && modeCalibrate)
|
||||
menuExit(btnState);
|
||||
*/
|
||||
|
||||
else if (modeCalibrate)
|
||||
{
|
||||
if (select < 130)
|
||||
menuSetupCalibration(btnState); //crystal
|
||||
else if (select < 140)
|
||||
menuSetupCarrier(btnState); //lsb
|
||||
else if (select < 150)
|
||||
menuSetupCWCarrier(btnState); //lsb
|
||||
else if (select < 160)
|
||||
menuSetupCwTone(btnState);
|
||||
else if (select < 170)
|
||||
menuSetupCwDelay(btnState);
|
||||
else if (select < 180)
|
||||
menuSetupTXCWInterval(btnState);
|
||||
else if (select < 190)
|
||||
menuSetupKeyType(btnState);
|
||||
else if (select < 200)
|
||||
menuADCMonitor(btnState);
|
||||
else if (select < 210)
|
||||
menuTxOnOff(btnState, 0x01); //TX OFF / ON
|
||||
else if (select < 220)
|
||||
menuExit(btnState);
|
||||
}
|
||||
|
||||
Check_Cat(0); //To prevent disconnections
|
||||
}
|
||||
|
||||
/*
|
||||
//debounce the button
|
||||
while(btnDown()){
|
||||
delay_background(50, 0); //To prevent disconnections
|
||||
}
|
||||
//delay(50);
|
||||
*/
|
||||
}
|
||||
|
||||
|
@@ -60,6 +60,7 @@ void i2cWriten(uint8_t reg, uint8_t *vals, uint8_t vcnt) { // write array
|
||||
Wire.endTransmission();
|
||||
}
|
||||
|
||||
uint8_t si5351Val[8] = {0, 1, 0, 0, 0, 0, 0, 0}; //for reduce program memory size
|
||||
|
||||
void si5351bx_init() { // Call once at power-up, start PLLA
|
||||
uint32_t msxp1;
|
||||
@@ -68,11 +69,13 @@ void si5351bx_init() { // Call once at power-up, start PLLA
|
||||
i2cWrite(3, si5351bx_clken); // Disable all CLK output drivers
|
||||
i2cWrite(183, SI5351BX_XTALPF << 6); // Set 25mhz crystal load capacitance
|
||||
msxp1 = 128 * SI5351BX_MSA - 512; // and msxp2=0, msxp3=1, not fractional
|
||||
uint8_t vals[8] = {0, 1, BB2(msxp1), BB1(msxp1), BB0(msxp1), 0, 0, 0};
|
||||
i2cWriten(26, vals, 8); // Write to 8 PLLA msynth regs
|
||||
//uint8_t vals[8] = {0, 1, BB2(msxp1), BB1(msxp1), BB0(msxp1), 0, 0, 0};
|
||||
si5351Val[2] = BB2(msxp1);
|
||||
si5351Val[3] = BB1(msxp1);
|
||||
si5351Val[4] = BB0(msxp1);
|
||||
|
||||
i2cWriten(26, si5351Val, 8); // Write to 8 PLLA msynth regs
|
||||
i2cWrite(177, 0x20); // Reset PLLA (0x80 resets PLLB)
|
||||
// for (reg=16; reg<=23; reg++) i2cWrite(reg, 0x80); // Powerdown CLK's
|
||||
// i2cWrite(187, 0); // No fannout of clkin, xtal, ms0, ms4
|
||||
}
|
||||
|
||||
void si5351bx_setfreq(uint8_t clknum, uint32_t fout) { // Set a CLK to fout Hz
|
||||
|
@@ -99,8 +99,6 @@ void initMeter(){
|
||||
//0 ~ 25 : 30 over : + 10
|
||||
void drawMeter(int needle) {
|
||||
//5Char + O over
|
||||
int drawCharLength = needle / 5;
|
||||
int drawCharLengthLast = needle % 5;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
@@ -283,6 +281,15 @@ void updateDisplay() {
|
||||
strcat(c, "B:");
|
||||
}
|
||||
|
||||
//Fixed by Mitani Massaru (JE4SMQ)
|
||||
if (isShiftDisplayCWFreq == 1)
|
||||
{
|
||||
if (cwMode == 1) //CWL
|
||||
tmpFreq = tmpFreq - sideTone + shiftDisplayAdjustVal;
|
||||
else if (cwMode == 2) //CWU
|
||||
tmpFreq = tmpFreq + sideTone + shiftDisplayAdjustVal;
|
||||
}
|
||||
|
||||
//display frequency
|
||||
for (int i = 15; i >= 6; i--) {
|
||||
if (tmpFreq > 0) {
|
||||
@@ -320,22 +327,6 @@ void updateDisplay() {
|
||||
lcd.setCursor(5,diplayVFOLine);
|
||||
lcd.write(":");
|
||||
}
|
||||
|
||||
/*
|
||||
//now, the second line
|
||||
memset(c, 0, sizeof(c));
|
||||
memset(b, 0, sizeof(b));
|
||||
|
||||
if (inTx)
|
||||
strcat(c, "TX ");
|
||||
else if (ritOn)
|
||||
strcpy(c, "RIT");
|
||||
|
||||
strcpy(c, " \xff");
|
||||
drawMeter(meter_reading);
|
||||
strcat(c, meter);
|
||||
strcat(c, "\xff");
|
||||
printLine2(c);*/
|
||||
}
|
||||
|
||||
int enc_prev_state = 3;
|
||||
|
Reference in New Issue
Block a user