タイマ割込み周期にずれが生じます

こんばんは。

タイマ割込みを実装したのですが、実装が正しいのかどうか判断がつきません。

よろしくお願いいたします。

 

インターバルタイマを利用し、1ms周期で割込みを発生する処理を実装しました。

正確に1ms周期で割込みが発生することを計測するには、

オシロでテストポートをHi/Loするのが良いかと思いますが、

手元にオシロがありませんので、CS+上のデバッグ実行時間を見て確認しております。

計測時間は以下のようになりました。(赤枠部分)

関数の先頭でブレイクを張ると、「未計測」となるので、

10ms経過時点にブレイクポイントを仕込み計測しております。

break → goを繰り返すと、8.3ms,8.7ms,8.2msと、だいたいこの近辺の結果となります。

これはCS+の誤差によるものでしょうか?

実装は以下の通りです。

(クロックは最初の画像の通り、オプションバイトで高速オシレータ32MHzで設定しております。)

Parents
  • Hogehoge様

    こんにちは、Sugachanceです(皆様本年もよろしくお願いいたします...)

    ちょうど手元にRL78(G1C)とE1でmsのディレイタイマを動かしていたものが
    あったのでやってみましたが、1msのディレイに対し、
    画面上でほぼ1msの表示が出来ましたので、
    この構成でそれだけずれるというのは別なところに原因があるのではないでしょうか。

    CS+上でなにかやったことといえば、
    ビルドツールの最適化レベルをデバッグ優先にしてみたり
    解析ツールの設定をいじくったくらいですかね。

    他の詳しい方の意見を待ったほうが良いかとは思いますが、実例として参考まで。

Reply
  • Hogehoge様

    こんにちは、Sugachanceです(皆様本年もよろしくお願いいたします...)

    ちょうど手元にRL78(G1C)とE1でmsのディレイタイマを動かしていたものが
    あったのでやってみましたが、1msのディレイに対し、
    画面上でほぼ1msの表示が出来ましたので、
    この構成でそれだけずれるというのは別なところに原因があるのではないでしょうか。

    CS+上でなにかやったことといえば、
    ビルドツールの最適化レベルをデバッグ優先にしてみたり
    解析ツールの設定をいじくったくらいですかね。

    他の詳しい方の意見を待ったほうが良いかとは思いますが、実例として参考まで。

Children
No Data