FC2ブログ

タイマ2の謎

Lチカに使っていたタイマ2の様子がおかしい.
オシロで波形を見てみると微妙に設定した時間よりも短くなっている.
タイマ1(16bit)では問題なし.なぜかタイマ2(32bit)でのみカウンタポーリングが短くなる現象が出る.

いろいろ試す中で,
while(DRV_TMR1_CounterValueGet()<375000){}

while(DRV_TMR1_CounterValueGet()<375000){wait_usec(10);}
のように書き換えるとショートしなくなった.
while文で単純にタイマカウンタを監視するループが冗長とみなされて勝手に短縮されてしまうのかな?
最適化レベルを変えると変化するようなのでコンパイラが何かしているらしいことはわかった.
そもそもポーリングなんか使うな,割り込みを使えということなのかもしれない.
スポンサーサイト



この記事へのコメント

トラックバック

URL :

プロフィール

もやね

Author:もやね
長野県在住の会社員(メカニカル・エンジニア).
ロボットは完全な趣味としてやってます.
E-mail:
mo_ya_ne[a]yahoo.co.jp
[a]⇒@

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブログ内検索
RSSフィード
リンク