AKI-H8 3664Fで、cos波形をA/D変換し、スルーして、D/A変換に出力してみました。
A/D変換の割込みを使った、しょぼい、プログラムです。
(何故かと、言えば、D/A変換した後、きれいな波形が見られないからです。
これは、シールドの問題もありますが...)
所がですね、
尾硲様に、又々、お教え頂きました。
なんと、D/Aの結線間違いでした!(超恥ずかしいです)
きれいー、超きれいですー、うれしいです。
尾硲OMに、再び御礼申し上げます m(__)m
丸め有りの方が、少しきれいな氣がします。
元信号は2KHzです。
サンプリング周波数は、プログラムまかせ。
C6711 DSKのA-D変換器(TCL320AD535)は、標本化周波数は8KHzに固定されています、なんでやろ...
(勿論、持ってないです。)
_main:
ORC #H'C0,CCR ;DI
mov.b #B'01000000,r0l
mov.b r0l,@ADCSR ;set AD MODE ,AN0=in, ADIE=1
mov.b #255,r0l
mov.b r0l,@PCR5 ;set mode output
mov.b r0l,@PCR1 ;空きI/Oポートの処理 Port1を出力に設定して置く。
mov.b r0l,@PCR8 ;Port8
mov.b #H'07,r0l
mov.b r0l,@PCR2 ;Port2
mov.b #H'70,r0l
mov.b r0l,@PCR7 ;Port7
mov.w #to_da,r0
mov.w r0,@INT_AD ;set AD_Interrupt vector address to to_da
ANDC #H'3F,CCR ;EI
bsetADST
loop: bra loop
to_da: (A/D変換の割込みルーティン)
mov.b @ADDRA,r1l
;AKI-3664Fは、ADDRAの上位10ビットに取り込んだ値が格納される。
not.b r1l ;上位8ビットのみ取り出し、製作したD/A変換器は、符号が反転するので
mov.b r1l,@PDR5 ;R1Lを符号反転し、D/Aに送る
bsetADST
rte
ここの割込み処理の部分(to_da)で、丸めを行うには
mov.w @ADDRA,r1 ;ワードで取り込んで、7回シフトした所で、丸めを行う。
shlr.w r1
shlr.wr1
shlr.wr1
shlr.wr1
shlr.w r1
shlr.wr1
shlr.wr1
marume:
btst #0,r1l
bne kirisute
kuriage:
add.w #1,r1
kirisute:
shlr.wr1
not.b r1l
mov.b r1l,@PDR5
bsetADST
rte
丸めなしと、丸め有りを比較してみます。(レベルが違っていて、すんません。)
[これは、D/A結線間違いの時の図です]
丸めがないほうが、素直みたいですね。
やっぱ、実験は、おもしろい。
[こっちが、正しい図です、再掲]
それから、丸めた時のサンプリング周波数を調べました。
繰り返しが一番小さい周波数を見ると、85KHzあたりでした。(丸め有り)
何度も訂正して、ほんとに申し訳ありません。 m(__)m
今度こそ、間違いがないと思います。
複素乗算による、ヘテロダインを調べていますが、ヒルベルト変換が、よう解らないので
「やさしいフーリエ変換 松尾 博著 森北出版」を、見て(読んでいるではない!)
これは、ちょっと、難しいなあ、理解は、皆目ですわ。
H8の基板を、蛇の目基板で作ってますので、結線間違い等、不安定極まりないです。
プリント基板版を作りますので、ご容赦下さいませ。
H.15.9.19
This document created by Scientific Notebook 4.1. この文書は次の製品で作成しました Scientific Notebook 4.1.