ですので、確かに、そうだと、思います。
H8-3667Fのポート5を、8ビット分(これは、以前から同じ)
加えて、上位の2ビットを、ポート8のビット0,1に振り当ててみました。
これで、10ビットD/Aにしたのですが、出力の差は、大きく見れませんでした。
トラジェネの出力を0dBm、−40dBmの2通りで、スペアナで観測いたしました。
トラジェネの出力0dBmが上ですが、波形が壊れています。
下が、出力ー40dBmの時の波形で、正しく表示されています。
10ビットでは、理屈上
ですから、実測でも、60dBの差は、観測できると、思ったのですが、駄目でした。
やはり、32ビットのアキュムレータが、オーバーフローしていました。
上記のプログラムで、加算時に、キャリー(オーバーフロー)があれば、r0h レジがゼロ以外になります。
やっぱ、オーバーフローでした...
出力のボトムから、60dB以上の差をつけるには、出力を大きくしないと、不可能です。
すると、アキュムレータが、オーバーフロ−、しよるのです...
H8 3664Fで、
firは、帯域の関係で、31個が限度でしたから
今は、アキュムレータを32ビット以上にしても、意味がありませんね...
ともかく、原因が解って、よかったです。
ベストテクノロジー社のSH2(SH7047F)に、しようかな....
フリーのGCCが付いていますが、
肝心の所(積和)を、インラインアセンブラにしたら、いけそうです。
そんな訳で、インラインアセンブラの勉強を、チョット、してます。
C言語の変数を取り込めて、便利な事が解りました。
信号の複素化も、勿論、やるつもりなのですが、
こんな事も、やってたりして、忙しいわ...
H.15.11.7
This document created by Scientific Notebook 4.1. この文書は次の製品で作成しました Scientific Notebook 4.1.