rftgyふじこlp:今は反芻している…JP1NOM

のんべんだらりと生きてしまいましたよ。

今日のDDS

2016年10月25日 07時32分00秒 | DDS
unsigned int ShiftOut = FreqDiv;
unsigned int TestOut = FreqDiv;
char i = 0;
for(i=0; i<32; i++) {
TestOut = ShiftOut & 1;
if(TestOut==1) {
_sdo = 1;
} else {
_sdo = 0;
}
_clk = 1;
ShiftOut = ShiftOut >> 1;
_clk = 0;
}
ShiftOut = FortyBitWd;
for(i=0; i<8; i++) {
TestOut = ShiftOut & 1;
if(TestOut==1) {
_sdo = 1;
} else {
_sdo = 0;
}
_clk = 1;
ShiftOut = ShiftOut >> 1;
_clk = 0;
}
_len = 1;
_len = 0;
}

mbedのライブラリから抜粋。
LPC1114でAD9851を制御する場合の核心部分。
(スペースを無視して表示するのは何とかならんのか?)

Delphiだと多少はわかるのだが、Cだとサブルーチンの使い方が良くわからん。考え方は同じだろうけど、Cの教科書を読み直すか。コンパイラが優秀なら同じルーチンをサブルーチン化してくれるのだろうけど、mbedがどんなコンパイラだかわからん。

冒頭に引用した処理はサブルーチン化しないと同じ処理を四回書かないといかん。

今日のIchigoJam

2016年10月21日 08時33分00秒 | IchigoJam

LPCのIDEが家の環境では動かないので、仕方なしにIchigoJamのママ組み込み。
なぜかマザボに組んでいたときにはパワーオン、オートロードが効いていたので、BTNを押して起動するという術を忘れていたので、無駄に悩んでしまった…

このあとDDS出力の増幅と、リレーを取り付ける。

今日のIchigoJam

2016年10月18日 14時24分00秒 | IchigoJam
100Hzステップ版。
制限事項:DDSの初期化コマンドを省略したため、起動直後はDDSの出力が出ていません。周波数アップまたはダウンボタンを一回押せば出力されます。
50行、GOSUB340追加で解決。

1 'VFO
20 VIDEO0:A=0:B=5428:C=22241:K=7000:L=0
50 GOSUB100:GOSUB330:GOSUB340
60 IFIN(1)=0GOSUB190:GOSUB330
70 IFIN(2)=0GOSUB130:GOSUB330
80 IFIN(4)=0GOSUB280
90 GOTO 60
100 POKE#700,64,0,2,#C0,57,17,#70,86,#6C,56,12
110 IFI2CW(62,#701,1,#704,5)
120 WAIT2
121 IFI2CW(62,#701,1,#709,2)
125 IFI2CW(62,#701,1,#702,1)+I2CW(62,#700,1,#900,8)
127 RETURN
130 IFC<30645C=C+2173
140 IFC>30644ANDB<32767B=B+1
150 IFC>30644ANDB>=32767A=A+1:B=0
160 IFC>30377C=C-30377
170 IFL<9L=L+1ELSEL=0:K=K+1
180 RETURN
190 X=A:Y=B:Z=C
200 IFC>=22026C=C-10741
210 IFC<22027ANDB>1B=B-1
220 IFC<22027ANDB<1A=A-1:B=32767
240 B=B-330:GOSUB340:OUT5,1:LED1:A=X:B=Y:C=Z
260 IFIN(9)=1GOTO260
270 OUT5,0:LED0:GOSUB340:RETURN
280 IFC>=2173C=C-2173
290 IFC<2173ANDB>1B=B-1
300 IFC<2173C=C+30594
310 IFL>0L=L-1ELSEK=K-1:L=9
330 LOCATE0,0:?K;".";L
340 OUT3,0:OUT2,0
350 M=C:I=15:GOSUB410
360 M=B:I=15:GOSUB410
370 M=A:I=2:GOSUB410
380 M=1:I=8:GOSUB410
390 OUT3,1:OUT3,0:GOSUB125:RETURN
410 OUT1,0:FORJ=1TOI
420 IFM&1=1OUT1,1
430 OUT2,1:OUT2,0:M=M>>1:OUT1,0:NEXT:RETURN