Compare commits

..

5 Commits

Author SHA1 Message Date
phdlee
bf68dd6c26 Change Version Number 2018-02-22 13:27:51 +09:00
phdlee
4a6909f361 Change BFO Cal Step(50 to 5), Change CW Frequency Method 2018-02-22 12:26:18 +09:00
phdlee
e0f9148972 Change RIT tune step (freq tune step) 2018-02-13 19:54:19 +09:00
phdlee
81333e7af4 modified CW Key Logic for AutoKey and reduce cpu use rate, reduce program memory 2018-02-10 15:07:56 +09:00
phdlee
ed767f2e34 CW Start Delay applied New CW Logic 2018-02-10 13:29:30 +09:00
4 changed files with 54 additions and 31 deletions

View File

@@ -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
@@ -749,9 +756,11 @@ void doRIT(){
unsigned long old_freq = frequency;
if (knob < 0)
frequency -= 100l;
frequency -= (arTuneStep[tuneStepIndex -1]); //
//frequency -= 100l;
else if (knob > 0)
frequency += 100;
frequency += (arTuneStep[tuneStepIndex -1]); //
//frequency += 100;
if (old_freq != frequency){
setFrequency(frequency);
@@ -961,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)
{
@@ -1085,7 +1110,7 @@ void setup()
//Serial.begin(9600);
lcd.begin(16, 2);
printLineF(1, F("CECBT v1.01"));
printLineF(1, F("CECBT v1.03"));
Init_Cat(38400, SERIAL_8N1);
initMeter(); //not used in this build
@@ -1116,11 +1141,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()
{
@@ -1139,21 +1159,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
}
}
}
@@ -1180,11 +1187,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();
}

View File

@@ -172,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);
@@ -212,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);
@@ -229,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);

View File

@@ -1149,9 +1149,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
@@ -1345,7 +1345,7 @@ void doMenu(){
//ADJUST TUNE STEP
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 (!btnDown())
@@ -1382,7 +1382,7 @@ void doMenu(){
}
} //end of while
printLineF2(F("Changed Step!"));
//printLineF2(F("Changed Step!")); //remarked for reduce program memory by KD8CEC
//SAVE EEPROM
EEPROM.put(TUNING_STEP, tuneStepIndex);
delay_background(500, 0);

View File

@@ -281,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) {