[H8-ML(3937)] Re:位相計数カウンタについて
From: Shigeru Makino <mac@xxxxxxxxxxxxxx>
Date: 2003年09月16日(火)06時33分45秒
macです。

Heatman さん <heatman@xxxxxxxxxxxxx> wrote:

> 現時点では、0〜15000 or 0〜-15000カウントまでカウント
> できているのですが、これをさらにカウントする範囲を広げて、
> 0〜40000、0〜-40000、または0〜150000、0〜-150000カウントまで
> 拡張する場合のテクニックを教えて下さい。

H8/300H シリーズ アプリケーションノート
http://www.renesas.com/avs/resource/japan/jpn/pdf/mpumcu/j502040_h8300hio.pdf
は、すでに読まれていますか?

「現時点」が、0〜65535とか、-32768〜32767ではない、
半端な数字になっているのが気になるところです。

16bit以上に拡張したいときは、
基本的に、65535->0でオーバーフロー、
0->65535でアンダーフローを発生し、
OVI2がセットされ、割り込みを発生できるので、
割り込みがかかったら、
unsinged intとして、TCNT2を読み、
32767以上なら、アンダーフロー、
32767未満なら、オーバフロー、
として、適当な変数extを、
アンダーフローならext--
オーバフローなら、ext++
とすれば、いくらでも拡張できるのですが、

入力信号が、運悪く65535 <-> 0の間で、
割り込み処理が、間に合わない速度で、
行ったり来たりすると、うまく行きません。

ただ、位相計数モードでも、
TCR2 のCCLR1、CCLR0 ビット、TIOR2、TIER2、TSR2、
GRA2、GRB2 は有効ですので、
GRA2またはGRB2を使い、0で出力をトグルさせ、
この出力を別のITUの入力にします。
0リセット後、その補助カウンタが、
奇数なら、オーバーフロー、
偶数なら、アンダーフローなので、
これをもとに、先の処理を行えば、
φによる限界まで、高速入力になっても、
割り込みの遅れによる誤差はなくなります。

以上まったく実験していない推論ですので、
間違いがあれば訂正いただけますよう、
お願いします。 > 各位

-- mac

スレッド概略
[3936(R)](起点)
 └[表示中]
   └[4001(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]