[戻る]
一括表示

PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2013/11/26(Tue) 03:39:04 No.113

次の実験予定。

edyさんのソースコードを拝借。

Re: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/05(Sun) 23:03:32 No.169

> edyさんのソースコードを拝借。

実験してみたところ、CY8C27443-24PXI で、100MHz迄動作する事を確認した。

流石に125MHzでは、とんでもない大きな数字が表示されてNGだった。

但し、実験なので内蔵発振をクロックにしており、実用不適。
マトモに使うには、外部から正確なクロックを注入してやる必要がある。

P.S.

その後、外部クロックとして12.8MHz TCXO を注入してみたが、内部クロックでも、外部クロックでも、65,536Hz(64kHz)の飛びが見られた。注入クロックと被測定信号を同一にした場合には、飛びは発生しない。非同期でcounterを動作させる点に少々無理がある様だ。

Re^2: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/08(Wed) 07:57:40 No.175

割り込みを使わない方式に変更。

Re^3: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/08(Wed) 08:06:14 No.176

> 割り込みを使わない方式に変更。

16bit counterを2つカスケード接続した。

やはり、64kHzの飛びが発生する。

Re^4: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/09(Thu) 04:02:28 No.178

回路図

両者共通

Re^5: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/09(Thu) 04:03:29 No.179

アイコン

両者共通

Re^6: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/10(Fri) 01:02:01 No.180

内部クロックでは精度が悪いので、外部クロックに切替。

(割り込み無し版)

P.S.

P1[4]を High Z Analog → High Z に変更要。

Re^7: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/10(Fri) 01:04:52 No.181

外部クロックに切替えても、プログラムは特に変化無し。

Re^8: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/10(Fri) 03:24:50 No.182

回路図

24MHzの発振器の手持ちがなかったので、26MHzで代用した。
一応問題なく動作している。(除:飛び問題)

Re^9: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/10(Fri) 03:29:05 No.183

アイコン

> 24MHzの発振器の手持ちがなかったので、26MHzで代用した。
> 一応問題なく動作している。

注入するクロック波形が汚いと、PSoCはすぐにヘソを曲げる様だ。(M8Cが停止する)

Re^10: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/12(Sun) 01:16:15 No.184

CY8C27443では、32bit counterに外部信号をカウントさせる事ができないので、16bit counterを2段カスケードにしたのだが、時折MSB側のcounterが1つミスカウントして、表示が65,535Hz跳ね上がるという問題が発生した。

そこで、2つの16bit counterを、同じ列に配置して、LSB側の出力をMSB側に直に渡す様に改良してみたのだが。

結果は、余り改善されておらず、やはり64kHzの跳ね上がりが発生する。

Re^11: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/12(Sun) 01:20:36 No.185

ソースコードは特に変わり映え無し。

Re^12: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/12(Sun) 01:29:06 No.186

外部クロックをTCXO 12.8MHzに変更。
手持ちのTCXOは、出力が弱いので増幅要。
VR1はdutyの調節。余りdutyが悪いと、PSoCはヘソを曲げる様だ。
更に、schmitt tgiggerで波形整形。

Re^13: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/12(Sun) 01:33:46 No.187

アイコン

注入する外部クロックを、被計測信号とする限りにおいては、64kHzのミスカウントは全く発生しないので、要因は、注入するクロックの質、または、counterの非同期耐性にあるのであろう。

Re^14: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/12(Sun) 04:15:45 No.188

64kHz飛ぶならば、という事で、counterを16bit2段を止めて、24bit+8bit にしてみた。これならば、16MHz飛びになるので、発生確率を抑えられるだろうと思ったのだが、結果は逆で、16MHz,64kHz,256Hzの3種の飛びが現れる様になった。よく観察すると、他にも2MHz飛びとかも存在している様で、最悪。

更に、24bit counterは16it counterより性能が悪い様で、16bit counterの時に測定できていた100MHzが、24bit counterでは測定できなくなった。60MHzなら、24bit counterでも測定できる。内部24MHzクロックの時も同様なので、外部クロックが12.8MHzである事のせいではない様だ。

Re^15: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/12(Sun) 04:19:12 No.189

24bit counter用の3 byte読出しは、pointerになるので、プログラムの変更が必要。

Re^16: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/13(Mon) 03:28:34 No.190

64kHz飛びに対処する為、割り込み方式、且つ、8bit counterに変えてみた。

P.S.

64kHz飛びは無くなったが、256Hz飛びは発生する。
100MHzは測定できなくなる、88MHz台が表示される。
60MHzは問題無く(除:256Hz飛び)測定できる。

Re^17: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2014/01/13(Mon) 03:39:42 No.191

プログラムの改修は、8bit counter対応のみ。

P.S.

100MHzを測定しようとすると、61クロックに1回割込みが発生する訳だから苦しいよね。
88MHz台が表示されるという事は、割込みルーチンで69クロック程消費しているという事だろうか。

Re^11: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2015/05/14(Thu) 16:31:37 No.351

> CY8C27443では、32bit counterに外部信号をカウントさせる事ができない

というのは間違いで、32bit counterの4セルを横1列に並べれば解決する。

但し、PWM16とは別の段になるので、グルっとゲート信号を回さねばならない。
PSoC内部で引き回すと、結構回り込みの元な様だ。
被測定信号が矩形波なら、正常に動作する様だ。
被測定信号が矩形波以外の場合は、過剰にカウントする事が多い。

Re^12: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2015/05/14(Thu) 16:37:10 No.352

> 32bit counterの4セルを横1列に並べれば解決する。

32bit counterなので、数字の上では4GHz迄カウントできる。
PSoCのハードウェアが4GHzに対応するとは思えないので、割込は廃した。

Re^13: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2015/05/17(Sun) 16:46:07 No.354

> > 32bit counterの4セルを横1列に並べれば解決する。

回路図

ゲート信号の引き回しがPSoC内部

Re^12: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2015/05/17(Sun) 16:59:27 No.355

> PSoC内部で引き回すと、結構回り込みの元な様だ。

PSoC外部で引き回す様に変更。

ソースコードは変わらない。

Re^13: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2015/05/17(Sun) 17:02:48 No.356

> > PSoC内部で引き回すと、結構回り込みの元な様だ。
>
> PSoC外部で引き回す様に変更。

100MHzは計測できる様だ。
但し、矩形波に限る。
他の波形では、表示数値の変動が激しい。
真面目にノイズ対策する必要がありそう。

Re^14: PSoCで周波数カウンタ 投稿者:ja3raf 投稿日:2015/05/17(Sun) 17:32:17 No.357

> > > PSoC内部で引き回すと、結構回り込みの元な様だ。
> >
> > PSoC外部で引き回す様に変更。

回路図

- WebForum -