どなたか使いますか?無料です。送料はご負担ください。箱に入れての発送、ゆうパックのほうが安価かな。頒布品への同梱でもかまいません。いっしょに発送ということでも。UNOで周波数カウンタありきたりなタイトルですが、目的は「VCOの直線性を調べる」ツールの予備実験です。VCO:制御入力の電圧変化に従って出力周波数が変化するというデバイス。これの特性を調べるためのジグ作りの前段階です。周波数カンタが出力するシリアルデータを横取りしてごそごそするより、Arduinoで作るのが手っ取り早いかと、まずは周波数測定の部分を試してみました。周波数カウンタ」で検索するとあれこれサンプルが出てきます。Libraryを参考にされている記事が多いようです。・タイマー1のT1をクロック入力に。開始すると、タイマー0割り込みを禁止。(millisやdelayが使えなくなる)1mSごとにタイマー1のオーバーフロー(16bitカウント)を見てオーバーフローがあれば回数を+1。指定回数の割り込みが完了(100回なら0.1秒=10Hzがゲート時間)すると、タイマー1を停止。タイマー2割り込みもオフ。オーバーフロー回数×65536+TCNT1で総カウント値を得る。この時、割り込み処理のための遅れをちょい時間待ちして補正。計測完了フラグをONして知らせる。タイマー0割り込みを再開。こんな処理になってます。カウント値を計数するための時間ゲートの処理はソフトウェア。ソフト的な遅延があると誤差が生じます。※周期的な割り込みを発生するタイマー0は止めていますが。「計測を始めたら、計測が終わるまで何もするな」の処理というわけです。計測中はシリアル出力もできないし(割り込み処理が入る)、割り込みを使う処理とは共存できません。※もうひとつ気になったのが、ゲート時間終了後タイマー1を止めるまでdelayMicrosecondsで時間遅れを補正してるんですが、この間に発生したオーバーフローは無視しています。この待ちの間にオーバーフローが起こったら65536カウント抜けてしまいます。このライブラリ、ちょいと不安だし計測中は何もしたらダメという仕様が気になって自力製作することにしました。・主カウントに16bitのタイマー1を使うのは同じ。・そのインプットキャプチャー機能を使う。・ゲート時間の発生はタイマー2で行うが、タイマー2で1kHz方形波を発生させ、それをタイマー1のインプットキャプチャー端子に接続。・つまり、物理的なゲートを構成し、ソフトの処理時間を無視できるようにする。(遅れ補正などしなくて良いように)・1kHz方形波の↓エッジでインプットキャプチャ割り込み。TCNT1の値がICR1に入る。前回とのカウント差を積算して総パルス数を得る。※upカウントなのでオーバーフローは気にしなくて良い・1kHz方形波の↓エッジのタイミングでゲートが作られるのでソフトが遅れても(割り込みが遅れても)誤差は出ない。・測定完了待ちを待たなくても動き始めたらいつでも最新値を読める。(1秒ゲート完了信号はある)・割り込みがあってもOK。タイマー0は止めない。