Fumio Hirose
/
DDS-VFO
First Programm.HF Lo Band VFO with LPC1114 and AD9851 module.Built in ELEKEY.Using ACM1602NI.
Diff: main.cpp
- Revision:
- 1:ee890adf56ea
- Parent:
- 0:5cdf1a556e60
diff -r 5cdf1a556e60 -r ee890adf56ea main.cpp --- a/main.cpp Sun Nov 13 14:54:43 2016 +0000 +++ b/main.cpp Fri Sep 15 07:26:48 2017 +0000 @@ -1,27 +1,30 @@ #include "mbed.h" #include "I2cLCD.h" +#include "QEI.h" +#define ROTATE_PER_REVOLUTIONS 24 DigitalOut DATA(dp9); DigitalOut W_CLK(dp17); DigitalOut FQ_UD(dp11); -DigitalOut RESET(dp26); //previously known as dp26 +DigitalOut RESET(dp26); DigitalOut LED(dp14); DigitalOut PTT_OUT(dp18); -DigitalIn PTT_ON(dp1); -DigitalIn DOT(dp4); -DigitalIn BAR(dp6); -DigitalOut KEY(dp13); -DigitalIn BAND_SW(dp10); -DigitalIn JOG_1(dp2); -DigitalIn JOG_2(dp28); //previously known as dp28 -DigitalIn JOG_3(dp25); -DigitalIn JOG_4(dp16); +DigitalIn PTT_ON(dp1); +DigitalOut RL1(dp13); //BFO,AUDIO +DigitalOut RL2(dp15); //AGC +DigitalIn BAND_SW(dp10); +DigitalIn JOG_3(dp25); //FREQ STEP +DigitalIn RIT_SW(dp16); //RIT +DigitalIn jmh(dp24); +DigitalIn MODE_IN(dp6); +//DigitalIn test(dp15); double FQX; double FQD; +double FQDD; -double FQD_18 = 1810000; -double FQD_19 = 1907500; +// double FQD_18 = 1810000; +// double FQD_19 = 1907500; double FQD_351 = 3500000; double FQD_352 = 3599000; double FQD_353 = 3680000; @@ -31,35 +34,102 @@ double FQD_4 = 4630000; double FQD_7 = 7000000; double FQD_10 = 10100000; +//double FQD_14 = 522000; +double FQD_JMH = 3620600; +double FQD_JMH1 = 7793100; +double FQD_VOK1 = 6070000; +double FQD_VOK2 = 9650000; +double FQD_KCBS = 6400000; +double FQD_NSB1 = 6055000; +double FQD_NSB2 = 6115000; +double FQD_NSB3 = 9595000; +double FQD_NSB4 = 9760000; +double FQD_NSB5 = 3925000; +double FQD_NSB6 = 3945000; +double FQD_CRI = 7325000; +double FQD_NHK = 9750000; +double FQD_14 = 14000000; +double FQD_181 = 18068000; +double FQD_M = 0; +double FQD_MM = 0; +double FQD_jmh = 0; double FQ; -double FQ_18 = 43191352; -double FQ_19 = 45517913; -double FQ_351 = 83519190.5; -double FQ_352 = 85881750; -double FQ_353 = 87814470; -double FQ_381 = 88339811; -double FQ_382 = 89365820; -double FQ_383 = 90463357; -double FQ_4 = 110484088; -double FQ_7 = 167038250; -double FQ_10 = 241012230; +// double FQ_18 = 43191352; +// double FQ_19 = 45517913; +double FQ_351 = 83517187; +double FQ_352 = 85879508; +double FQ_353 = 87812323; +double FQ_381 = 88337282; +double FQ_382 = 89363339; +double FQ_383 = 90460995; +double FQ_4 = 110481248; +double FQ_7 = 167034290; +double FQ_10 = 241006742; +//double FQ_14 = 12455974; +double FQ_JMH = 86397023; +double FQ_JMH1 = 185963684; +double FQ_VOK1 = 144846025; +double FQ_VOK2 = 230274159; +double FQ_KCBS = 152720685; +double FQ_NSB1 = 144488086; +double FQ_NSB2 = 145919842; +double FQ_NSB3 = 228961619; +double FQ_NSB4 = 232898947; +double FQ_NSB5 = 93660807; +double FQ_NSB6 = 94138060; +double FQ_CRI = 174793597; +double FQ_NHK = 232660321; +double FQ_14 = 334078686; +double FQ_181 = 431152407; +double FQ_M = 0; +double FQ_MM =0; +double FQ_jmh = 0; double f1 = 7000000; double f2 = 7200000; double f1_CW = 7000000; double f2_CW = 7045000; +double f1_M = 0; +double f2_M = 0; +double f1_MM = 0; +double f2_MM = 0; +double f1_CW_M = 0; +double f2_CW_M = 0; +double f1_CW_MM = 0; +double f2_CW_MM = 0; +double f1_jmh = 0; +double f2_jmh = 0; +double f1_CW_jmh = 0; +double f2_CW_jmh = 0; +int BAND_jmh; +int mem; +int mem_jmh; int BAND; +int BAND_M; +int BAND_MM; double IF; double STEPD; -double STEP = 2.386; +double STEP = 2.3863380645591; +int ritd = 0; float wt = 0.1; const int a=1; int s; - -Ticker deley; +int fbuf1; +int fbuf2; +int fbuf3; +int fbuf4; +int fbuf5; +int fbuf6; +int mode = 0; +int riton = 0; +int sig; +int CW_MODE = 0; +int CW_MODE_M; +double CW_OFFSET; float del = 0.1; +int CW_IN = 0;; void DDS(void); void DDS_U(void); @@ -69,28 +139,36 @@ void STEPS(void); void QSY(void); void STEPSS(void); -void JOG(void); -void DDS_CW(void); void PTT_OFF(void); +void RIT(void); +// void MEMIN(void); +// void MEMOUT(void); +void JMH(void); +void JOZ(void); +void CW1(void); +void CW2(void); +void MODEX(void); +void MODEY(void); I2cLCD lcd(dp5, dp27); +QEI wheel(dp2, dp28, NC, ROTATE_PER_REVOLUTIONS, QEI::X4_ENCODING); +//QEI wheel(dp2, dp28, NC, ROTATE_PER_REVOLUTIONS); int main() { - KEY = 0; STEPD = 10; BAND = 7; FQD = FQD_7; FQ = FQ_7; + + RL1 = 1; + RL2 = 0; + lcd.locate(3,1); + lcd.printf("SSB"); - IF = 10857458;//IF 455KHz -// IF = 255329316.50856;// IF 10.7MHz -// lcd.locate(1,1); -// lcd.printf("455K"); -// lcd.locate(0,1); -// lcd.printf("10.7M"); - - +// IF = 10857171;//IF 455KHz + CW_OFFSET = 22167;//CW OFSET 1KHz + IF = 255259586;// IF 10.7MHz LED = 0; s = 1; @@ -109,29 +187,36 @@ wait_us(100); FQ_UD=0; wait_us(100); + FQDD = FQD; GET_LCD_DATA(); FQX = FQ + IF; DDS(); DDS(); - lcd.locate(8,0); + lcd.locate(9,0); lcd.printf("0MHz"); lcd.locate(12,1); lcd.printf("1KHz"); lcd.locate(14,0); lcd.printf("RX"); - lcd.locate(0,1); - lcd.printf("Mode:"); - + + fbuf2 = 0; + while(1) { - if (PTT_ON==0) {DDS_T();} -// if (FQ_UP==0) {DDS_U();} -// if (FQ_DOWN==0) {DDS_D();} -// if (FSTEP==0) {STEPS();} - if (DOT==0) {DDS_CW();} - if (BAR==0) {DDS_CW();} - if (BAND_SW==0) {QSY();} - if (JOG_1==1) {JOG();} + if (PTT_ON == 0) {DDS_T();} + if (BAND_SW == 0) {QSY();} + if (JOG_3 == 1) {STEPS();} + fbuf1 = wheel.getPulses(); + if (RIT_SW == 1) {RIT();} + if (fbuf1 > fbuf2) {DDS_U();} + if (fbuf1 < fbuf2) {DDS_D();} + fbuf2 = fbuf1; + if (jmh == 1) {JOZ();} +// if (memin == 0) {MEMIN();} +// if (memout== 0) {MEMOUT();} +// if (CW_MODE == 0 & CW_IN == 1 ) {CW1();} +// if (CW_MODE == 1 & CW_IN == 0 ) {CW2();} + if (MODE_IN == 1 ) {MODEX();} } } @@ -181,7 +266,20 @@ void DDS_U(void) { -// if (FQD <= f1 && FQD <= f2) { + if (riton==1) { + if (ritd < 99) { + ritd++; + if ( CW_IN == 1 ) { + FQX = FQ + STEP * ritd * 100 + IF + CW_OFFSET; + }else{ + FQX = FQ + STEP * ritd * 100 + IF; + } + DDS(); + lcd.locate( 7,1 ); + lcd.printf("%d0 ",ritd); + } + } else { + if (s==0) { if ((FQD + STEPD) <= f2) { FQD = FQD + STEPD; @@ -193,16 +291,35 @@ FQ = FQ + STEP * 10000; } } -// } + + FQDD = FQD; GET_LCD_DATA(); - FQX = FQ + IF; + + if ( CW_IN == 1 ) { + FQX = FQ + IF + CW_OFFSET; + }else{ + FQX = FQ + IF; + } + DDS(); - wait(wt); + } } void DDS_D(void) { -// if (FQD <= f1 && FQD <= f2) { + if (riton==1) { + if (ritd > -99) { + ritd--; + if ( CW_IN == 1 ) { + FQX = FQ + STEP * ritd * 100 + IF + CW_OFFSET; + }else{ + FQX = FQ + STEP * ritd * 100 + IF; + } + DDS(); + lcd.locate( 7,1 ); + lcd.printf("%d0 ",ritd); + } + } else { if (s==0) { if ((FQD - STEPD) >= f1) { FQD = FQD - STEPD; @@ -214,21 +331,24 @@ FQ = FQ - STEP * 10000; } } -// } + FQDD = FQD; GET_LCD_DATA(); - FQX = FQ + IF; + + if ( CW_IN == 1 ) { + FQX = FQ + IF + CW_OFFSET; + }else{ + FQX = FQ + IF; + } DDS(); - wait(wt); + } } void DDS_T(void) { - - deley.detach(); if (FQD > f1 && FQD < f2) { GET_LCD_DATA(); lcd.locate( 14, 0 ); - lcd.printf( "T" ); + lcd.printf( "TX" ); FQX = FQ; DDS(); @@ -247,45 +367,50 @@ } GET_LCD_DATA(); lcd.locate( 14,0 ); - lcd.printf( "R" ); + lcd.printf( "RX" ); } void GET_LCD_DATA(void) { char f[9]; - sprintf(f,"%8.5lf",FQD / 1000000); + sprintf(f,"%8.5lf",FQDD / 1000000); lcd.locate( 0,0 ); - lcd.printf( f ); - if (FQD >= f1_CW && FQD < f2_CW) { - lcd.locate( 5,1 ); - lcd.printf("CW "); + lcd.printf( "%c%c%c%c%c%c",f[0],f[1],f[2],f[3],f[4],f[5] ); + lcd.printf( ".%c%c%",f[6],f[7] ); + + if (FQDD >= f1_CW && FQDD < f2_CW) { + lcd.locate( 0,1 ); + lcd.printf("CW"); }else{ - if(FQD >= f2_CW && FQD < f2 ) { - lcd.locate( 5,1 ); - lcd.printf("Phone"); + if(FQDD >= f2_CW && FQDD < f2 ) { + lcd.locate( 0,1 ); + lcd.printf("Ph"); }else{ - lcd.locate( 5,1 ); - lcd.printf("none "); + lcd.locate( 0,1 ); + lcd.printf("no"); } } } void STEPS( void ) { + if (s==1) { s = 0; - lcd.locate(13,1); - lcd.printf("0"); + lcd.locate(12,1); + lcd.printf("10"); }else{ s = 1; - lcd.locate(13,1); - lcd.printf("K"); - } + lcd.locate(12,1); + lcd.printf("1K"); + } wait(0.3); + } void QSY(void) { - switch (BAND) { + + switch ( BAND ) { case 7: BAND = 10; FQD_7 = FQD; @@ -297,43 +422,32 @@ f1_CW = 10100000; f2_CW = 10150000; break; + case 10: - BAND = 18; + BAND = 14; FQD_10 = FQD; - FQD = FQD_18; + FQD = FQD_14; FQ_10 = FQ; - FQ = FQ_18; - f1 = 1810000; - f2 = 1825000; - f1_CW = 1810000; - f2_CW = 1825000; + FQ = FQ_14; + f1 = 14000000; + f2 = 14350000; + f1_CW =14000000; + f2_CW =14100000; break; - - case 18: - BAND = 19; - FQD_18 = FQD; - FQD = FQD_19; - FQ_18 = FQ; - FQ = FQ_19; - f1 = 1907500; - f2 = 1912500; - f1_CW = 1907500; - f2_CW = 1912500; +///////////// + case 14: + BAND = 351; + FQD_14 = FQD; + FQD = FQD_351; + FQ_14 = FQ; + FQ = FQ_351; + f1 = 3500000; + f2 = 3575000; + f1_CW =3500000; + f2_CW =3535000; break; - - case 19: - BAND = 351; - FQD_19 = FQD; - FQD = FQD_351; - FQ_19 = FQ; - FQ = FQ_351; - f1 = 3500000; - f2 = 3575000; - f1_CW = 3500000; - f2_CW = 3535000; - break; - +///////////// case 351: BAND = 352; FQD_351 = FQD; @@ -406,6 +520,7 @@ f2_CW = 4630001; break; + case 4: BAND = 7; FQD_4 = FQD; @@ -416,14 +531,16 @@ f2 = 7200000; f1_CW = 7000000; f2_CW = 7045000; - break; - + break; + + default: BAND = 7; FQD = FQD_7; FQ = FQ_7; break; } + FQDD = FQD; GET_LCD_DATA(); FQX = FQ + IF; DDS(); @@ -438,159 +555,483 @@ lcd.locate(13,1); lcd.printf("K"); } -// wait(0.3); -} - -void JOG( void ) { - - int jog; - deley.detach(); - - jog = JOG_2 * 4 +JOG_3 * 2 + JOG_4 * 1; - - switch( jog ) { - - case 2: - wt = 0.3; - s = 0; - lcd.locate(12,0); - lcd.printf("> "); - STEPSS(); - DDS_U(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - case 6: - wt = 0.05; - s = 0; - lcd.locate(12,0); - lcd.printf(">>"); - STEPSS(); - DDS_U(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - case 4: - wt = 0.3; - s =1; - lcd.locate(12,0); - lcd.printf("> "); - STEPSS(); - DDS_U(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - case 0: - wt = 0.05; - s =1; - lcd.locate(12,0); - lcd.printf(">>"); - STEPSS(); - DDS_U(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - - case 3: - wt = 0.3; - s = 0; - lcd.locate(12,0); - lcd.printf(" <"); - STEPSS(); - DDS_D(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - case 7: - wt = 0.05; - s = 0; - lcd.locate(12,0); - lcd.printf("<<"); - STEPSS(); - DDS_D(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - case 5: - wt = 0.3; - s =1; - lcd.locate(12,0); - lcd.printf(" <"); - STEPSS(); - DDS_D(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - case 1: - wt = 0.05; - s =1; - lcd.locate(12,0); - lcd.printf("<<"); - STEPSS(); - DDS_D(); - lcd.locate(12,0); - lcd.printf(" "); - break; - - - default: - wt = 0.05; - s =1; - STEPSS(); - DDS_D(); - lcd.locate(12,0); - lcd.printf(" "); - break; - } -} - -void DDS_CW(void) { - if (FQD > f1 && FQD < f2) { - deley.detach(); - GET_LCD_DATA(); - lcd.locate( 14, 0 ); - lcd.printf( "T" ); - - FQX = FQ; - DDS(); - LED = 1; - PTT_OUT = 1; - KEY = 1; - if (BAR==0) { - wait(3.5*del); - KEY = 0; - wait(del); - }else{ - if (DOT==0) { - wait(del); - KEY = 0; - wait(del); - } - } - deley.attach(&PTT_OFF,4*del); - }else{ - LED=1; - wait(0.2); - LED=0; - wait(0.2); - } - } void PTT_OFF(void) { PTT_OUT = 0; LED = 0; - KEY = 0; FQX = FQ + IF; DDS(); GET_LCD_DATA(); lcd.locate( 14,0 ); - lcd.printf( "R" ); -} \ No newline at end of file + lcd.printf( "RX" ); +} + +void RIT(void) { + + if ( riton == 0) { + riton = 1; + lcd.locate(3,1); + lcd.printf("RIT:"); + lcd.locate( 7,1 ); + lcd.printf("%d0 ",ritd); + + if ( CW_IN == 1 ) { + FQX = FQ + STEP * ritd * 100+ IF + CW_OFFSET; + }else{ + FQX = FQ + STEP * ritd * 100+ IF; + } + + DDS(); + } else { + riton = 0; + lcd.locate(3,1); + lcd.printf(" "); + MODEY(); + if ( CW_IN == 1 ) { + FQX = FQ + STEP + IF + CW_OFFSET; + }else{ + FQX = FQ + STEP + IF; + } + DDS(); + } + wait(0.2); +} + + +//void MEMIN(void) { +// if(mem == 0 ) { +// BAND_M = BAND; +// FQD_M = FQD; +// FQ_M = FQ; +// f1_M = f1; +// f2_M = f2; +// f1_CW_M = f1_CW; +// f2_CW_M = f2_CW; +// mem = 1; +// CW_MODE_M = CW_MODE; +// lcd.locate(11,1); +// lcd.printf("M"); +// }else{ +// mem = 0; +// lcd.locate(11,1); +// lcd.printf(" "); +// } +// wait(0.3); +//} + +//void MEMOUT(void) { +// if (mem == 1) { +// BAND_MM = BAND; +// FQD_MM = FQD; +// FQ_MM = FQ; +// f1_MM = f1; +// f2_MM = f2; +// f1_CW_M = f1_CW; +// f2_CW_M = f2_CW; +// FQD = FQD_M; +// FQ = FQ_M; +// f1 = f1_M; +// f2 = f2_M; +// f1_CW = f1_CW_M; +// f2_CW = f2_CW_M; +// FQDD = FQD; +// GET_LCD_DATA(); +// if (CW_MODE_M == 1) { +// FQX = FQ + IF + CW_OFFSET; +// }else{ +// FQX = FQ + IF; +// } +// DDS(); +// mem = 0; +// lcd.locate(11,1); +// lcd.printf(" "); +// } else { +// BAND = BAND_MM; + // FQD = FQD_MM; + // FQ = FQ_MM; +// f1 = f1_MM; +// f2 = f2_MM; +// f1_CW = f1_CW_M; +// f2_CW = f2_CW_M; +// FQDD = FQD; +// GET_LCD_DATA(); +// if (CW_MODE_M == 1) { +// FQX = FQ + IF + CW_OFFSET; +// }else{ +// FQX = FQ + IF; +// } +// FQX = FQ + IF; +// DDS(); +// } +// wait(0.1); +//} + +void JMH(void) { + + if (mem_jmh == 0) { + FQD = FQD_JMH; + FQ = FQ_JMH; + f1 = FQD_JMH; + f2 = FQD_JMH; + f1_CW = FQD_JMH; + f2_CW = FQD_JMH; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("JMH "); + + }else{ + if (mem_jmh == 1) { + FQD = FQD_JMH1; + FQ = FQ_JMH1; + f1 = FQD_JMH1; + f2 = FQD_JMH1; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("JMH "); + + }else{ + if (mem_jmh == 2) { + FQD = FQD_VOK1; + FQ = FQ_VOK1; + f1 = FQD_VOK1; + f2 = FQD_VOK1; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("VOK "); + + }else{ + if (mem_jmh == 3) { + FQD = FQD_VOK2; + FQ = FQ_VOK2; + f1 = FQD_VOK2; + f2 = FQD_VOK2; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("VOK "); + + }else{ + if (mem_jmh == 4) { + FQD = FQD_KCBS; + FQ = FQ_KCBS; + f1 = FQD_KCBS; + f2 = FQD_KCBS; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("KCBS"); + + + }else{ + if (mem_jmh == 5) { + FQD = FQD_NSB1; + FQ = FQ_NSB1; + f1 = FQD_NSB1; + f2 = FQD_NSB1; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("NSB1"); + + + }else{ + if (mem_jmh == 6) { + FQD = FQD_NSB2; + FQ = FQ_NSB2; + f1 = FQD_NSB2; + f2 = FQD_NSB2; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("NSB2"); + + }else{ + if (mem_jmh == 7) { + FQD = FQD_NSB3; + FQ = FQ_NSB3; + f1 = FQD_NSB3; + f2 = FQD_NSB3; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); +// mem_jmh = 8; + lcd.locate(7,1); + lcd.printf("NSB1"); + + }else{ + if (mem_jmh == 8) { + FQD = FQD_NSB4; + FQ = FQ_NSB4; + f1 = FQD_NSB4; + f2 = FQD_NSB4; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); +// mem_jmh = 9; + lcd.locate(7,1); + lcd.printf("NSB2"); + + }else{ + if (mem_jmh == 9) { + FQD = FQD_NSB5; + FQ = FQ_NSB5; + f1 = FQD_NSB5; + f2 = FQD_NSB5; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("NSB1"); + + }else{ + if (mem_jmh == 10) { + FQD = FQD_NSB6; + FQ = FQ_NSB6; + f1 = FQD_NSB6; + f2 = FQD_NSB6; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); +// mem_jmh = 11; + lcd.locate(7,1); + lcd.printf("NSB2"); + + + }else{ + if (mem_jmh == 11) { + FQD = FQD_CRI; + FQ = FQ_CRI; + f1 = FQD_CRI; + f2 = FQD_CRI; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); +// mem_jmh = 12; + lcd.locate(7,1); + lcd.printf("CRI "); + + + }else{ + if (mem_jmh == 12) { + FQD = FQD_NHK; + FQ = FQ_NHK; + f1 = FQD_NHK; + f2 = FQD_NHK; + f1_CW = FQD_JMH1; + f2_CW = FQD_JMH1; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + lcd.locate(7,1); + lcd.printf("NHK "); + + } else { + lcd.locate(7,1); + lcd.printf(" "); +} +} +} +} +} +} +} +} +} +} +} +} +} + wait(0.2); +} + +void CW1(void) { + + if ( riton == 1 ) { + FQX = FQ + STEP * ritd * 100 + IF + CW_OFFSET; + } else { + FQX = FQ + IF + CW_OFFSET; + } + DDS(); + + FQDD = FQD; + GET_LCD_DATA(); + + CW_MODE = 1; + DDS(); +} + +void CW2(void) { + if ( riton == 1 ) { + FQX = FQ + STEP * ritd * 100 + IF; + } else { + FQX = FQ + IF; + } + DDS(); + + FQDD = FQD; + GET_LCD_DATA(); + + CW_MODE = 0; + DDS(); +} + +void JOZ(void) { + + BAND_jmh = BAND; + FQD_jmh = FQD; + FQ_jmh = FQ; + f1_jmh = f1; + f2_jmh = f2; + f1_CW_jmh = f1_CW; + f2_CW_jmh = f2_CW; + fbuf5 = fbuf1; + fbuf6 = fbuf2; + fbuf3 = 0; + fbuf4 = 0; + + JMH(); + wait(0.5); + + while (jmh == 0) { + + if (MODE_IN == 1 ) {MODEX();} + + if (CW_MODE == 1 ) {CW1();} + if (CW_MODE != 1 ) {CW2();} + + fbuf3 = wheel.getPulses(); + if (fbuf3 > fbuf4) { + if (mem_jmh <12 ) { + mem_jmh++; + JMH(); + } + } + if (fbuf3 < fbuf4) { + if (mem_jmh > 0) { + mem_jmh--; + JMH(); + } + } + fbuf4 = fbuf3; + + } + + fbuf3 = 0; + fbuf4 = 0; + fbuf1 = fbuf5; + fbuf2 = fbuf6; + BAND = BAND_jmh; + FQD = FQD_jmh; + FQ = FQ_jmh; + f1 = f1_jmh; + f2 = f2_jmh; + f1_CW = f1_CW_jmh; + f2_CW = f2_CW_jmh; + FQDD = FQD; + FQX = FQ + IF; + GET_LCD_DATA(); + DDS(); + + lcd.locate(7,1); + lcd.printf(" "); + MODEY(); + wait(0.3); +} + +void MODEX(void) { + if (CW_IN == 0) { + CW_IN++; + RL1 = 1; + RL2 = 1; + CW1(); + lcd.locate(3,1); + lcd.printf("CW "); + wait(0.3); + }else{ + if (CW_IN == 1) { + CW_IN++; + RL1 = 0; + RL2 = 0; + CW2(); + lcd.locate(3,1); + lcd.printf("AM "); + wait(0.3); + }else{ + if (CW_IN == 2) { + CW_IN = 0; + RL1= 1; + RL2= 0; + lcd.locate(3,1); + lcd.printf("SSB"); + wait(0.3); + CW2(); + CW_IN = 0; + } + } + } +// DDS_U(); +} + +void MODEY(void) { + if (CW_IN == 0) { + lcd.locate(3,1); + lcd.printf("SSB"); + }else{ + if (CW_IN == 1) { + lcd.locate(3,1); + lcd.printf("CW "); + }else{ + if (CW_IN == 2) { + lcd.locate(3,1); + lcd.printf("AM "); + } + } + } +// DDS_U(); +} \ No newline at end of file