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