AKI-H8 3664FでA/D、D/A変換を、やってみる

AKI-H8 3664Fで、cos波形をA/D変換し、スルーして、D/A変換に出力してみました。

A/D変換の割込みを使った、しょぼい、プログラムです。

(何故かと、言えば、D/A変換した後、きれいな波形が見られないからです。

これは、シールドの問題もありますが...)

MATH

所がですね、

尾硲様に、又々、お教え頂きました。

なんと、D/Aの結線間違いでした!(超恥ずかしいです)

MATH

きれいー、超きれいですー、うれしいです。

尾硲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結線間違いの時の図です]

MATH

丸めがないほうが、素直みたいですね。

やっぱ、実験は、おもしろい。

[こっちが、正しい図です、再掲]

MATH

それから、丸めた時のサンプリング周波数を調べました。

MATH

繰り返しが一番小さい周波数を見ると、85KHzあたりでした。(丸め有り)

何度も訂正して、ほんとに申し訳ありません。 m(__)m

今度こそ、間違いがないと思います。

 

複素乗算による、ヘテロダインを調べていますが、ヒルベルト変換が、よう解らないので

「やさしいフーリエ変換 松尾 博著 森北出版」を、見て(読んでいるではない!)

これは、ちょっと、難しいなあ、理解は、皆目ですわ。

H8の基板を、蛇の目基板で作ってますので、結線間違い等、不安定極まりないです。

プリント基板版を作りますので、ご容赦下さいませ。 

 

H.15.9.19

This document created by Scientific Notebook 4.1. この文書は次の製品で作成しました Scientific Notebook 4.1.