• 締切済み

H8 3664 のタイマー

こんにちは。皆さんに質問があります。 H8 3664F を使って、1/100秒の精度のストップウォッチを作っているところです。 標準で付いている32.768khzのクリスタルを使って、1秒、0.5秒 etc を作るところまでは出来たのですが、1/100秒が作り出せません。 自分はタイマーはAしか使ったことがない独学の初心者なのですが、どうすれば簡単に1/100秒(10ミリ秒)が作り出せるでしょうか? 1:16.12 (1分16秒12)という感じで表示したいです。 よろしくご教授お願いします。

  • 科学
  • 回答数4
  • ありがとう数8

みんなの回答

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.4

クロックが16MHzの場合だと内部クロック(φ/8)でタイマーWを20000分周になるように設定すればちょうど10mSecで割り込みを発生できます。

shin178
質問者

お礼

マニュアルやWebを熟読してタイマーWに挑戦したのですが、なぜかうまく動いてくれなかったので、タイマーVで以下のようにしたところ、うまくいきました。 - 128分周に設定(1250クロックで10ミリ秒になる計算) - 250回ごとに割り込みを発生させるようにコンペアマッチを設定 - 割り込みが5回発生した時点で10ミリ秒とする(250 X 5 = 1250) (正確には、コンペアマッチを249回にすると時計と比較してぴったりでした) この度はご教授本当にありがとうございました。

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.3

システムクロックをタイマーVで分周すれば10ミリ秒で割り込みが発生します。 割り込みの中で割り込み回数を数える事でタイマー動作をさせることが出来ます。 タイマーVをどう使うかはまずはマニュアルを読んでください。

shin178
質問者

お礼

ご返答ありがとうございます。 なるほど、マニュアルを読んでみましたが、タイマーVを使ってできそうですね。 CPUが16Mhzなので、128分周で作動させれば、1250回の動作で10ミリ秒の計算になります。 なので、例えば125回ごとにコンペアマッチによる割り込みが起きるようにタイマーVを設定し、それが10回発生した時点(125X10=1250回)で10ミリ秒とする、という考え方で合っていますでしょうか?

  • tance
  • ベストアンサー率57% (402/704)
回答No.2

#1の方の回答は古い人には懐かしい技術です。何10年ぶりに思い出し ました。 さて、最も楽なのは水晶の周波数を変更して10msecを作りやすくする ことです。(削ったり赤チンを塗らなくても、適当な周波数の水晶を 買ってきます) と言っても、なかなか32kHz付近の任意の周波数の水晶は売っていない ので、下記のような水晶発振器を外付けすることになります。 http://www.kyocera.co.jp/prdct/electro/pdf/clock/143_j.pdf

shin178
質問者

お礼

ありがとうございます。外付けのクリスタルがもっとも確実そうですね。 とりあえず手元にあるものでできる、#3の方の返答を試してみようと思います。 ありがとうございました。

  • debukuro
  • ベストアンサー率19% (3635/18948)
回答No.1

水晶を使っているのですよね 10ミリ秒の差がある二つの発振器の出力を混合すれば混合出力は10ミリ秒になります あるいは 水晶の発振周波数を変えればいいのです 周波数を変える方法 高くするには砥石で水晶を摺って小さくします 低くするには赤チンを塗ります(今の赤チンは水銀を含まないので効果は不明) この方法は周波数計がないと難しい

shin178
質問者

お礼

ご返答ありがとうございます。 そのような方法で周波数を変えることができるんですね。 初心者の私にはちょっと難しいかもしれません。 ソフトウェアでできる方法でとりあえずいってみようと思います。

関連するQ&A

  • VBのタイマーコントロールについて

    VB2005のタイマーコントロールで疑問があります。 ピクチャーボックスコントロールにラベルを貼り付けて タイマーコントロールで文字がスクロールする プログラムを作ったのですが、 タイマーコントロールのインターバルを10msから120msまで 500回タイマーのイベントをカウントしたタイムとストップウォッチで 計ったタイムを比べたらズレが生じることが分かりました。 人間の手で計っていますが、計測方法としては、タイマーをスタートするボタンと同時にストップウォッチのスタートを押し、カウンターが500回で止まった時点でストップウォッチを止める方法でWindowXPでCPUがCore2 DuoのパソコンとWindowsMeでCPUがPentiumIIIのノートパソコンで下記のように計測しました。 WindowsXP 10ms…8秒24、20ms…15秒84、30ms…15秒82、40ms…24秒64、50ms…31秒60、60ms…31秒72、70ms…41秒21、80ms…47秒40、90ms…47秒32 後省略 WindowsMe 10ms…28秒25、20ms…28秒21、30ms…28秒10、40ms…28秒23、50ms…28秒28、60ms…57秒20、70ms…57秒43、以下ほぼ一緒なので省略110ms…56秒93でした。 その後、VBのヘルプの検索で、Windowsのタイマーの精度は55msとあるのを発見したのですが、WindowsMeのノートパソコンでは、55msの精度にあったデータが帰ってきたのですが、 WindowsXPのパソコンは、どう見ても内部精度は違うような結果に見えます。 どなたかタイマーの精度について知っておられる方、教えてもらえますか? よろしくお願いします。

  • タイマー関数について

    こんばんは。 この掲示板には大変お世話になっています。ありがとうございます。 [質問内容] およそ1ミリ秒単位で、待機することができる関数はあるのでしょうか? 私は、C言語を使用しているのですが、タイマー関数としてはSleep関数しか知りません。しかし、最近になってSleep関数は10ミリ秒待機することが限界ということをこの掲示板で知りました。 Windowsプログラミングに用意してある関数で1ミリ秒待機できる関数はありますでしょうか? 私は今、対処方法としてダミー処理をほどこすことでだいたい1ミリ秒のタイマーを作っています。 C言語もまだまだ初心者ですがよろしくお願いします。

  • カウントアップを1秒毎に読み上げる音声タイマー

    カウントアップを1秒毎に読み上げてくれる音声タイマーを探しています。 具体的には、スタートボタンを押すと、 1秒、2秒、3秒 ・・・59秒、60秒、61秒・・・100秒・・・と 秒単位で読み上げてくれるタイマーはないでしょうか。 Microsoft Storeに「音声カウントタイマー」というWindows用のアプリがありましたが、このCountUpモードで読み上げる感じのものでいいのですが、分秒単位ではなく秒単位のみで読み上げてほしいです。 (〇) ・・・59秒、60秒・・・100秒・・・ (✖) ・・・59秒、1分・・・ 1分40秒・・・ 希望は、Windows用のフリーのソフトウェアですが、 なければ、iPhone用のフリーのアプリでもいいです。 ソフトウェア(アプリ)でなくても、ストップウォッチのように 製品(品物)の形のものでもいいです。 よろしくお願いします。

  • マイクロ秒で精度が出るタイマー

    マイクロ秒で精度が出るタイマーってご存知ではないでしょうか? ご存知ならご教授おねがいします。 ・環境 OS:XP 使用言語:C、C++ その他:API32使用 よろしくお願いします。

  • 1分を連続で計測し続けるタイマー アプリは?

    Android端末用のアプリの話です。 以下のような機能を備えたアプリが必要で、かれこれ1ヶ月程探しているのですが見つけられずに困っています。 ストップウォッチ、カウントダウン系のアプリに分類されるものだと思います。 [1] 1分が経過する事に音・バイブで告知する機能のあるタイマー もしくは、 [2] 1分経ったら告知、次は15秒経ったら告知、を自動で繰り返す機能のあるタイマー [用途] 要は、電車の中で、1分経つごとに教えてくれるタイマーが欲しいのです。 1分の間に15秒程度のブレイクタイムを挟めるのであれば尚良し。 電車の中ですので、バイブのみで告知する機能があれば尚良し。 と言ったところです。 説明下手で意味が分からなければ質問して下さい。 参考情報でも良いのでご提供いただければ幸いです。 よろしくお願いいたします<(_ _)>

  • 二つのタイマーの交互動作

    2つのタイマーが、交互に動作する回路を考えています。 たとえば、5分間隔で5秒間だけブザーが鳴るような回路です。 OMRONのH5CXのツインタイマー機能で作り、それはそれでOKですが、 H3Yのような小型タイマー2つで、実現する方法があれば、ご教授下さい。他に補助リレーを使ってもかまいません。 あくまで、勉強のためと今後のためですが、手近にあったH3Yで2つで試してみましたが、うまくいきませんでした。そんな単純なものではないのでしょうか?よろしくお願いします。

  • Do文の中にタイマーを・・・

    VBは初心者ではないのですが、作っているものがとても複雑なものなので教えていただきたいと思い書き込みました。 現在製作中のプログラムにDo文をセットし、Do~Loopの間にタイマーを動かすプログラムを作りたいと思います。 普通にタイマーを起動する場合は Timer1.Enabled = True でよいと思うのですが、タイマーの中にDo文の条件になるように変数を変えていくプログラムが入っているのです。 だからといって、Call文を使うとタイマー内の処理が1回しか行われないので無理です。 なので、「○○ミリ秒後に次の行のプログラムを実行」みたいな構文はないものでしょうか? または、タイマーを起動させ、タイマーが終了したらDo文の中に戻るようなプログラムはありませんか? 難しい質問とはわかっていますがよろしくお願いします。

  • 二層式の洗濯機のタイマーについて。

    洗濯層のタイマーが(15分)1秒で回りきってしまって洗濯ができません。これはどういう事でしょうか? わかる方いましたら是非教えていただきたいです。 よろしくお願いします。 ちなみに型番はHITACH PS-H 35Lです。

  • 一定時間毎に鳴るタイマーをショートカットで起動したい

    1分や10秒ごとに鳴るタイマーをキーボードのボタン(F1など)で終了・再開できるソフトはありませんでしょうか? 今使っているソフトは連続タイマー君ですが 実行ボタンを押すのが少しめんどうなので・・・ http://www.vector.co.jp/soft/win95/personal/se286200.html よろしくお願いします。

  • javascriptカウントタイマー設置について

    javascriptに関する質問です。 ページにアクセスすると残り30分からスタートし、 リロードをしてもアクセスし直しても時間は元に戻ることなく、 30分経過後はずっと00分00秒00のままのカウントダウンタイマーって どう作ればいいのでしょう? Javascript全く分からないんでご教授頂ければ幸いです。