IchigoJam-DDS with PTT。
周波数ステップは1KHz、Kで+Lで-。
PでPTT-ON(455KHzダウン)、OでPTT-OFF(455KHzアップ)。
元のデータが初期値7000KHzのままなので、PTT押すと6545KHzになるはず。
10 'DDS-PTT
500 CLS:A=0:B=5079:C=8010
501 OUT4,1:OUT4,0:OUT2,1:OUT2,0:OUT3,1:OUT3,0:OUT5,0
502 K=7000:L=0
506 GOSUB2000
510 D=INKEY():IFD=0GOTO510
535 IFD=80GOSUB1500:GOSUB2000
540 IFD=75GOSUB1100:GOSUB2000
545 IFD=76GOSUB1600:GOSUB2000
550 GOTO 510
1100 IFC<8868C=C+23900
1110 IFC>8867ANDB<32767B=B+1
1120 IFC>8867ANDB>=32767A=A+1:B=0
1130 IFC>8867C=C-8867
1140 K=K+1
1150 RETURN
1500 X=A:Y=B:Z=C
1501 IFC>=28291C=C-28291
1510 IFC<28291ANDB>1B=B-1
1520 IFC<28291ANDB<1A=A-1:B=32767
1540 B=B-331
1550 GOSUB2007:OUT5,1:LED1
1555 A=X:B=Y:C=Z
1560 D=INKEY():IFD<>79GOTO1560
1570 OUT5,0:LED0:GOSUB2007:RETURN
1600 IFC>=23900C=C-23900
1610 IFC<23900ANDB>1B=B-1
1620 IFC<23900ANDB<1A=A-1:B=32767
1640 IFK>0K=K-1
1660 RETURN
2000 LOCATE0,0:?K;".";L/10;L%10
2007 OUT3,0:OUT2,0
2010 M=C:I=15:GOSUB3000
2011 M=B:I=15:GOSUB3000
2012 M=A:I=2:GOSUB3000
2013 M=1:I=8:GOSUB3000
2015 OUT3,1:OUT3,0
2020 RETURN
3000 FORJ=1TOI:OUT1,0
3020 IFM&1=1OUT1,1
3030 OUT2,1:OUT2,0:M=M>>1:NEXT:RETURN
96バイトの空き。
IchigoJam本体のストレージは四つあって、FILE0に保存すると起動時に自動的に読み込んでRUNするので、こいつをSAVE0しておけばよい。PC側のターミナルでコピペでも良い。
LCD表示はIchigoJamのシリアル通信機能を使ってもう一台のIchigoJam(SLAVE)に行わせればいけそうだ。表示プログラムもFILE0に書き込んでおけばいいだろう。DDS制御側(HOST)では冒頭にWAITをかける必要があるだろう。
通常PRINT出力はVIDEOとともにシリアルポートにも出力されるので、現在の単体での表示を改め、UPなら1,DOWNなら-1を表示する。これはシリアルポートにも出力されるので、SLAVEはINPUT文で受信し、起動時周波数7000KHzに加算してLCDを駆動する。
RXDとTXDを双方向に結線しておいて、SLAVEからACKが返るまでHOSTが待機するのが表示と実周波数のトラッキングエラーをなくす方法だが、HOSTが±1を表示してからDDSにデータを送ってやれば必要なさそうな気もする。
つまりDDSの周波数を変えるための40bitのデータ送信に時間がかかるのである。
とまぁ、ここまではすべて思考実験。週末にDDSとIchigoJam Uを入手するつもり。
なんとかなるかな?
周波数ステップは1KHz、Kで+Lで-。
PでPTT-ON(455KHzダウン)、OでPTT-OFF(455KHzアップ)。
元のデータが初期値7000KHzのままなので、PTT押すと6545KHzになるはず。
10 'DDS-PTT
500 CLS:A=0:B=5079:C=8010
501 OUT4,1:OUT4,0:OUT2,1:OUT2,0:OUT3,1:OUT3,0:OUT5,0
502 K=7000:L=0
506 GOSUB2000
510 D=INKEY():IFD=0GOTO510
535 IFD=80GOSUB1500:GOSUB2000
540 IFD=75GOSUB1100:GOSUB2000
545 IFD=76GOSUB1600:GOSUB2000
550 GOTO 510
1100 IFC<8868C=C+23900
1110 IFC>8867ANDB<32767B=B+1
1120 IFC>8867ANDB>=32767A=A+1:B=0
1130 IFC>8867C=C-8867
1140 K=K+1
1150 RETURN
1500 X=A:Y=B:Z=C
1501 IFC>=28291C=C-28291
1510 IFC<28291ANDB>1B=B-1
1520 IFC<28291ANDB<1A=A-1:B=32767
1540 B=B-331
1550 GOSUB2007:OUT5,1:LED1
1555 A=X:B=Y:C=Z
1560 D=INKEY():IFD<>79GOTO1560
1570 OUT5,0:LED0:GOSUB2007:RETURN
1600 IFC>=23900C=C-23900
1610 IFC<23900ANDB>1B=B-1
1620 IFC<23900ANDB<1A=A-1:B=32767
1640 IFK>0K=K-1
1660 RETURN
2000 LOCATE0,0:?K;".";L/10;L%10
2007 OUT3,0:OUT2,0
2010 M=C:I=15:GOSUB3000
2011 M=B:I=15:GOSUB3000
2012 M=A:I=2:GOSUB3000
2013 M=1:I=8:GOSUB3000
2015 OUT3,1:OUT3,0
2020 RETURN
3000 FORJ=1TOI:OUT1,0
3020 IFM&1=1OUT1,1
3030 OUT2,1:OUT2,0:M=M>>1:NEXT:RETURN
96バイトの空き。
IchigoJam本体のストレージは四つあって、FILE0に保存すると起動時に自動的に読み込んでRUNするので、こいつをSAVE0しておけばよい。PC側のターミナルでコピペでも良い。
LCD表示はIchigoJamのシリアル通信機能を使ってもう一台のIchigoJam(SLAVE)に行わせればいけそうだ。表示プログラムもFILE0に書き込んでおけばいいだろう。DDS制御側(HOST)では冒頭にWAITをかける必要があるだろう。
通常PRINT出力はVIDEOとともにシリアルポートにも出力されるので、現在の単体での表示を改め、UPなら1,DOWNなら-1を表示する。これはシリアルポートにも出力されるので、SLAVEはINPUT文で受信し、起動時周波数7000KHzに加算してLCDを駆動する。
RXDとTXDを双方向に結線しておいて、SLAVEからACKが返るまでHOSTが待機するのが表示と実周波数のトラッキングエラーをなくす方法だが、HOSTが±1を表示してからDDSにデータを送ってやれば必要なさそうな気もする。
つまりDDSの周波数を変えるための40bitのデータ送信に時間がかかるのである。
とまぁ、ここまではすべて思考実験。週末にDDSとIchigoJam Uを入手するつもり。
なんとかなるかな?