AD変換割り込みタイミング計測。 割り込み処理の中でトグルしてみた。 AD入力クロックは2MHz。
ADサンプリング周波数は次式による。 SR=DataClock÷(4×デシメーションレート) で、デシメーションレートは DELSIGは64固定となっていることから SR=2MHz÷(4×64)=7812.5=7.8125kHz=128usだぞ。 あれー。まさかーオシロのソフトが?とおもってアナログオシロでみてみたけれど、これが現実。 どうしてこの差がでてきたんだ? (^^) でクロック辺りの設定をみなおした。 VC2をクロックとして使っている。 SysClock=24MHz VC1=SysClock÷2=12MHz VC2=VC1/6=2MHz だよねぇ。あってそうな感じもするんだけどなぁ。 アナログモジュール、デジタルモジュールのどちらにも同じVC2が接続されてるしなぁ。 遅いクロックでやってみようかぁ。VC3のSourceはSysClock/1で÷26の設定だから、24MHz÷26=923.07kHz=1.083usになるはずだなぁ。 サンプルソフトで割り込み周期を測定してみた。
理想的には このサンプルプログラムは以下のように動作しているはず。 VC2をクロックとして使っている。 SysClock=24MHz VC1=SysClock÷8=3MHz VC2=VC1/9=333.333kHz SR=333.333kHz÷(4×64)=1302.08=1.302kHz=768usだね。 これはぴったりだぁ。 いたずらその1サンプルソフトのVCクロック設定を2MHzになるようにしてみた。
&ref(): File not found: "DELSIG8_AD割り込み_delsig8nptest_CLK2MHz.PNG" at page "PSoC/DELSIG8"; ということは・・・ サンプリングクロックの考え方はあっているんだなぁ。 接続がまずいのかなぁ。 アナログブロックとデジタルブロックの接続みなおし
んじゃ、またまたいたずら。DBB00につながっている配線を、DBB01にしてみた。ここで影響がでるならば、使われているということだ。ちなみに、DBB01は何もモジュールとしてマッピングされていない。 じゃぁなによ?と思ってみたら、グローバルリソースがすこし違う。~
ほんじゃぁサンプルのCPU ClockをSysClock/8にしてみるべ。
&ref(): File not found: "DELSIG8_AD割り込み_delsig8nptest_CLK2MHz_CPUCLKp8.PNG" at page "PSoC/DELSIG8"; そっかぁ、CPU_Clockの設定の影響もでてくるのかぁ。まぁ確かになぁ。 じゃぁサンプリング周波数はどうなるんだ? ADサンプリング周波数は次式による。 SR=DataClock÷(4×デシメーションレート) って書いてあった。 CPU_Clock=SysClock/1だと この式で当てはまる。 CPU_Clock=SysClock/8だと この式で当てはまらない。 どのぐらい当てはまらないかというと、 SysClock/1 = 128us SysClock/8 = 228us 単純に 8倍変わっているわけでは無さそう。 データシートを確認してみた。
DataClock = 2MHzにしている。 DataClock = SampleRate×256 なので、SampleRate = 7812.5 CPUOverhead = 190×SampleRate/CPU_CLOCK = 0.743×DataClock/CPUClock = 190×7812.5/(24MHz/8) = 190×7812.5/3MHz = 49.4% でも納得いかないなぁ。CPUClockがかわったとしても、割り込みに要する時間はながくなったとしても、A/Dのサンプリング周波数がかわるはずないよねぇ?? ん?かわっちゃうの?? とりあえず、0.56倍(4.39kHz/7.8125kHz)になるとおもって、コーディングするか。 原因は結局!この後、やっぱり気になって調査を続行した。やっとわかったよー^^;; どぞー! |